นักพัฒนาสร้างเวิร์กโฟลว์ Terminal ขั้นสูงที่มีประสิทธิภาพเหนือกว่า IDE สมัยใหม่

ทีมชุมชน BigGo
นักพัฒนาสร้างเวิร์กโฟลว์ Terminal ขั้นสูงที่มีประสิทธิภาพเหนือกว่า IDE สมัยใหม่

นักพัฒนาคนหนึ่งได้แชร์เวิร์กโฟลว์ที่ซับซ้อนบน terminal ที่ผสมผสาน tmux, nvim และสคริปต์ที่กำหนดเองเพื่อสร้างสภาพแวดล้อมการพัฒนาที่สามารถแข่งขันกับ IDE สมัยใหม่ได้ การตั้งค่านี้แสดงให้เห็นว่าเครื่องมือ command-line แบบดั้งเดิมสามารถปรับปรุงให้มีการนำทางไฟล์ที่ราบรื่น การแก้ไขระยะไกล และฟีเจอร์การพัฒนาแบบบูรณาการได้

เครื่องมือหลักที่ใช้:

  • tmux: Terminal multiplexer สำหรับการจัดการเซสชันและควบคุมหน้าต่าง
  • nvim: โปรแกรมแก้ไขข้อความ Neovim ที่มีฟีเจอร์ขั้นสูง
  • ripgrep (rg): เครื่องมือค้นหาข้อความที่รวดเร็ว
  • zoxide: เครื่องมือนำทางไดเรกทอรีอัจฉริยะ
  • Custom Perl scripts: การเปิดไฟล์และการรวมเข้ากับ tmux

ระบบนำทางไฟล์ที่กำหนดเองทดแทนฟีเจอร์ GUI

เวิร์กโฟลว์นี้มีจุดศูนย์กลางอยู่ที่ regular expression ที่ซับซ้อน ซึ่งตรวจจับเส้นทางไฟล์ใน terminal output โดยอัตโนมัติ ทำให้นักพัฒนาสามารถคลิกที่ชื่อไฟล์ใดๆ จากผลลัพธ์ grep ข้อความแสดงข้อผิดพลาด หรือ build logs เพื่อเปิดไฟล์ในโปรแกรมแก้ไขได้ทันที สิ่งนี้ช่วยขจัดวงจรการคัดลอก-วางที่น่าเบื่อซึ่งมักทำให้การพัฒนาบน terminal ช้าลง ระบบทำงานโดยการแยกวิเคราะห์ประวัติ scrollback ของ tmux และไฮไลต์เส้นทางไฟล์ที่ตรวจพบ ซึ่งสามารถเปิดได้ด้วยการกดปุ่มเพียงครั้งเดียว

นักพัฒนาใช้เวลามากในการสร้างรูปแบบ regex ที่รู้จักรูปแบบเส้นทางไฟล์ต่างๆ รวมถึง relative paths หมายเลขบรรทัด และการอ้างอิงคอลัมน์ แม้จะซับซ้อนอย่างยอมรับ แต่ระบบอัตโนมัตินี้ให้ฟังก์ชัน ctrl-click เหมือนกับที่พบใน IDE สมัยใหม่ แต่ทำงานได้กับ terminal output ใดๆ

การพัฒนาระยะไกลโดยไม่ต้องพึ่งพา Local Dependencies

ฟีเจอร์ที่โดดเด่นคือความสามารถในการทำงานกับ codebase ระยะไกลโดยไม่ต้อง clone มาไว้ในเครื่อง การตั้งค่าใช้ SSH เพื่อเชื่อมต่อไปยังเซิร์ฟเวอร์ระยะไกลที่รัน tmux ซึ่งการพัฒนาทั้งหมดเกิดขึ้นที่นั่น ไฟล์จะเปิดใน nvim instances ที่รันบนเครื่องระยะไกล แต่ประสบการณ์การใช้งานรู้สึกราบรื่นจาก terminal ในเครื่อง วิธีการนี้ช่วยขจัดความจำเป็นในการรักษาสภาพแวดล้อมการพัฒนาที่เหมือนกันในหลายเครื่อง

เวิร์กโฟลว์ยังรวมถึงการคงอยู่ของเซสชัน ทำให้นักพัฒนาสามารถตัดการเชื่อมต่อและเชื่อมต่อกลับไปยังเซสชันการทำงานที่กำลังดำเนินอยู่โดยไม่สูญเสียบริบท สิ่งนี้มีค่าอย่างยิ่งเมื่อสลับระหว่างเครื่องต่างๆ หรือจัดการกับการเชื่อมต่อเครือข่ายที่ไม่เสถียร

การถกเถียงในชุมชนเกี่ยวกับความซับซ้อนของเครื่องมือ

ชุมชนเทคนิคแสดงปฏิกิริยาที่หลากหลายต่อการตั้งค่า terminal ที่ซับซ้อนเช่นนี้ นักพัฒนาบางคนชื่นชมความสามารถและความเป็นไปได้ในการปรับแต่ง ในขณะที่คนอื่นๆ ตั้งคำถามว่าค่าใช้จ่ายในการบำรุงรักษาคุ้มค่ากับประโยชน์ที่ได้รับหรือไม่ นักวิจารณ์ชี้ให้เห็นว่าโปรแกรมแก้ไขสมัยใหม่อย่าง VSCode มีฟีเจอร์เหล่านี้อยู่แล้วส่วนใหญ่โดยใช้ความพยายามในการกำหนดค่าน้อยกว่า

ผมไม่สามารถแนะนำสิ่งนี้ให้กับใครอื่นได้อย่างสบายใจ สคริปต์ทั้งหมดของผมเปราะบางและอาจจะพังถ้าคุณมองมันผิดๆ ซึ่งไม่เหมาะถ้าคุณไม่ได้เขียนมันเองและไม่รู้ว่าจะเริ่มดีบักจากไหน

อย่างไรก็ตาม ผู้สนับสนุนโต้แย้งว่าการเข้าใจและควบคุมสภาพแวดล้อมการพัฒนาของคุณให้ประโยชน์ในระยะยาว พวกเขาเน้นว่าเวิร์กโฟลว์บน terminal มีความสามารถในการเขียนสคริปต์และการบูรณาการกับเครื่องมือระบบที่เหนือกว่า ทำให้มีความยืดหยุ่นมากกว่าทางเลือก GUI

เครื่องมือทางเลือกที่ได้รับการกล่าวถึง:

  • fish + zoxide + fzf: ให้ความสามารถในการค้นหาแบบ fuzzy และการนำทางไดเรกทอรี
  • qf: เครื่องมือเลือกไฟล์จากผลลัพธ์ใน terminal
  • vim-remote/code/emacsclient: การรวม remote editor
  • atuin: การจัดการประวัติ shell แบบขั้นสูง
  • kitty/wezterm: terminal emulator สมัยใหม่ที่มีฟีเจอร์ขั้นสูง

ผลตอบแทนด้านประสิทธิภาพและผลิตภาพ

นักพัฒนารายงานการปรับปรุงผลิตภาพอย่างมีนัยสำคัญ โดยเฉพาะในการลดเวลาหน่วงเมื่อเปรียบเทียบกับ VSCode ที่มี vim plugins การตั้งค่าช่วยขจัดความขัดแย้งของ keybinding ระหว่างเครื่องมือต่างๆ และให้การนำทางไฟล์ที่เร็วกว่าเมื่อทำงานกับ codebase ขนาดใหญ่ ความสามารถในการเขียนสคริปต์สำหรับการโต้ตอบ terminal ยังช่วยให้เวิร์กโฟลว์ที่กำหนดเองซึ่งจะต้องการการพัฒนาปลั๊กอินใน IDE แบบดั้งเดิม

วิธีการนี้แสดงให้เห็นว่าการรวมเครื่องมือ Unix ที่เป็นผู้ใหญ่สามารถสร้างสภาพแวดล้อมการพัฒนาที่ทรงพลังได้ แม้ว่าการตั้งค่าเริ่มต้นจะต้องการการลงทุนเวลาอย่างมาก แต่ผลลัพธ์คือเวิร์กโฟลว์ที่เป็นส่วนตัวสูงและมีประสิทธิภาพที่ปรับตัวเข้ากับความต้องการการพัฒนาเฉพาะ

การอภิปรายไฮไลต์ความตึงเครียดที่กำลังดำเนินอยู่ในการพัฒนาซอฟต์แวร์ระหว่างความสะดวกสบายและการควบคุม ในขณะที่ IDE สมัยใหม่เสนอผลิตภาพทันที เวิร์กโฟลว์ terminal ที่กำหนดเองให้การบูรณาการที่ลึกซึ้งกว่าและความเป็นไปได้ในการทำงานอัตโนมัติสำหรับนักพัฒนาที่เต็มใจลงทุนเวลาในการสร้างมัน

อ้างอิง: how i use my terminal