สไลด์นำเสนอ "ก้าวกระโดดด้านผลิตภาพด้วย Neovim"
(docs.google.com)วิดีโอบันทึก : https://www.youtube.com/watch?v=XYQnyJVGk-4&t=1s
ภาคผนวก : https://kodingwarrior.github.io/wiki/appendix/excelcon-2nd/
เมื่อวันที่ 2023-06-03 ในงาน ExcelCon ครั้งที่ 2 ผมเคยบรรยายในหัวข้อ "ก้าวกระโดดด้านผลิตภาพด้วย Neovim" และแม้จะช้าไปบ้าง ก็ขอนำมาแชร์ที่นี่ด้วยครับ
สรุปเนื้อหาการบรรยาย
แค่ใช้ Neovim แล้วผลิตภาพเพิ่มขึ้นได้อย่างไร?
- เดิมต้องสลับใช้ VSCode, Notion, RoamResearch, GitKraken ฯลฯ ไปมา แต่เมื่อรวมทุกอย่างมาไว้ใน Neovim ก็ช่วยลดภาระทางการรับรู้ที่ไม่จำเป็นลง
- แม้จะสลับใช้งานทั้ง macOS และ archilinux ก็ยังคงรักษาสภาพแวดล้อมการพัฒนาให้สม่ำเสมอได้ทุกที่ (dotfiles)
- ไม่ต้องกังวลเรื่องประสิทธิภาพของอุปกรณ์อีกต่อไป
- Before : ต้องเปิดหลายแอปอย่าง AndroidStudio, VSCode, RoamResearch ฯลฯ พร้อมกันเพื่อทำงาน ทำให้เกิด thrashing บ่อยมาก แม้แต่การพิมพ์ซอร์สโค้ดยังใช้เวลานาน / After : ไม่ได้ยินแม้แต่เสียงเครื่องเหมือนเครื่องบินจะทะยานขึ้น การใช้หน่วยความจำก็ต่ำมากด้วย
3 ขั้นตอนในการเพิ่มผลิตภาพ
- การปรับปรุงผลิตภาพควรเริ่มจาก การตระหนักรู้เชิงอภิปัญญาเพื่อวิเคราะห์ว่าตนเองเสียเวลาไปกับพฤติกรรมใดโดยไม่จำเป็น
- เริ่มจากทำความคุ้นเคยกับเครื่องมือที่ตนเองใช้อยู่ก่อน
- สำรวจว่าตนเองทำงานใดซ้ำ ๆ บ้าง และมองหาวิธีใช้งานที่จะช่วยลดเวลาที่ใช้กับงานซ้ำเหล่านั้น (เช่น เทมเพลต, ปลั๊กอิน, มาโคร, สนิปเพ็ต, …)
- จากกระบวนการในข้อ 2 ให้เลือกสิ่งที่เหมาะกับตนเองแล้วฝึกจนเป็นธรรมชาติ
เนื้อหาที่อธิบายไม่หมดเพราะข้อจำกัดด้านความยาว ผมได้สรุปเพิ่มเติมไว้เป็นภาคผนวกในบล็อก
- ชุดเริ่มต้นสำหรับผู้เริ่มต้น Neovim เช่น AstroNvim, LazyNvim
- ปลั๊กอิน tree-sitter สำหรับ neovim โดยเฉพาะ
nvim-cmpที่มอบความสามารถในการเติมโค้ดอัตโนมัติ
นอกจากนี้ยังมีการดูแลชุมชน Discord (vim.kr) สำหรับผู้ที่อยากใช้งาน Vim ให้เก่งขึ้นด้วย ฝากติดตามกันเยอะ ๆ นะครับ :)
11 ความคิดเห็น
https://github.com/github/copilot.vim
ผมใช้ VS Code Copilot ได้คุ้มมากอยู่แล้ว พอลองค้นดูก็พบว่ามี Neovim Copilot Plugin เหมือนกันนะครับ เคยลังเลว่าจะลองดีไหม แต่คงต้องลองใช้ Neovim ดูสักครั้งแล้วครับ
ที่บริษัทแรกที่ผมย้ายงานไป เขาพัฒนางานกันโดยรีโมตเข้าไปบนเซิร์ฟเวอร์ลินุกซ์ที่ใช้ vim + tmux ครับ
ผมประทับใจมากที่ในสภาพแวดล้อมนี้สามารถทำรีโมตแพร์โปรแกรมมิงได้ด้วย (แก้โค้ดแล้วสะท้อนผลทันที และยังแชร์เทอร์มินัลกันได้)
ผมเริ่มเข้าวงการ vim แบบจริงจังก็เพราะ dotfiles บนรีโมตเซิร์ฟเวอร์อย่าง
.vimrc,.bashrcนี่แหละครับจำได้ว่าตอนนั้นมีตัวอย่างให้เลย เลยเริ่มต้นได้แบบสบายใจ ก็เลยรู้สึกเห็นด้วยกับที่บทความพูดถึงเรื่อง dotfile ครับ 555
ผมเองก็ย้ายจาก NVIm ไป VSCode เหมือนกัน แต่พอได้อ่านโพสต์นี้แล้วก็อยากย้ายกลับไปอีกนะครับ 555
ดีใจมากที่ได้เห็นเรื่องราวเกี่ยวกับโปรแกรมแก้ไขข้อความ ท้ายที่สุดแล้ว ถ้ายอมรับว่างานทั้งหมดล้วนเป็นการจัดการกับข้อความ การใส่ใจกับสภาพแวดล้อมการทำงานกับข้อความของตัวเองก็ไม่ใช่เรื่องน่าหนักใจเลย ผมเริ่มใช้ Emacs ตั้งแต่ปีที่แล้ว และมันทำให้ผมทำทุกอย่างได้ด้วยคีย์บอร์ดจริง ๆ อย่างที่พูดไว้ในข้อ 0 มันช่วยลดเวลาที่ไม่จำเป็นลงได้มากเลย ขอให้ vim.kr ยิ่งรุ่งเรือง!!
ขอถามเพื่อความแน่ใจว่าเป็นเพราะผมพลาดไปในวิดีโอหรือเปล่า ตอนที่บอกว่าแทนที่ Notion ด้วย neovim หมายถึงสร้างระบบ wiki ใน neovim แล้วใช้งานสิ่งนั้น หรือหมายถึงมีไลบรารีที่ใช้ควบคุม Notion จากใน neovim ครับ เจตนาของคำถามคือ อยากทราบว่า Notion ที่ใช้ในบริษัทก็สามารถควบคุมจากใน neovim ได้หรือไม่
แน่นอนว่าผมไม่ได้ไปควบคุม Notion อะไรแบบนั้นครับ
ถ้า Notion รองรับ API ก็ในทางทฤษฎีอาจจะควบคุมจาก neovim ได้ แต่จนถึงตอนนี้ผมยังไม่เคยเห็นความพยายามแบบนั้นครับ.
ส่วน Notion ที่ใช้ในบริษัทจะสามารถควบคุมจาก neovim ได้หรือไม่นั้น น่าจะมีประเด็นด้านนโยบายอยู่ด้วย เลยตอบยืนยันได้ยากครับ.
แม้ว่า Notion จะมี API ให้ใช้งาน แต่ในทางปฏิบัติกลับมีข้อจำกัดหลายอย่างที่นึกขึ้นมาได้ เลยอยู่ในสภาพที่การพัฒนาหยุดชะงักอยู่ ผมเลยสงสัยว่ามีโซลูชันดี ๆ ไหม ขอบคุณสำหรับคำตอบครับ :D
ใกล้เคียงกับการสร้างระบบ wiki มากกว่าครับ มีปลั๊กอินชื่อ
telekasten.nvimที่ตอบโจทย์ความต้องการของผมได้เกิน 100% และมีฟังก์ชันแทบทุกอย่างที่ต้องการอยู่แล้วฟังก์ชันเทมเพลตก็ทำได้ดีพอสมควร รวมถึงฟังก์ชันจัดการเอกสารภายในก็ใช้ได้ดีครับ
อีกหนึ่งฟังก์ชันที่ผมชอบเป็นการส่วนตัวคือการแสดงผลกราฟ ซึ่งผมลงมือทำเองด้วยไลบรารีชื่อ force-graph
คิดว่าน่าจะพอเป็นข้อมูลอ้างอิงได้ เลยขอแปะลิงก์ซอร์สโค้ดที่เกี่ยวข้องไว้ด้วยครับ
https://github.com/kodingwarrior/kodingwarrior.github.io/… -- สร้างข้อมูลจุดยอด (เอกสาร) / เส้นเชื่อม (ลิงก์ภายใน) ที่จำเป็นสำหรับการแสดงผลกราฟ
https://github.com/kodingwarrior/kodingwarrior.github.io/… -- การแสดงผลบนพื้นฐานของ force-graph
ผมก็ใช้ neovim เหมือนกัน และได้เจอโลกใหม่เลยครับ เลยพยายามชวนให้นักพัฒนารอบตัวลองใช้ดู แต่ไม่มีใครย้ายตามมาเลย ระหว่างที่ใช้ neovim ผมก็ได้เข้าใจสิ่งที่จำเป็นสำหรับการสร้างสภาพแวดล้อมในการพัฒนามากขึ้นด้วย ไม่รู้มาก่อนเลยว่ามีคอมมูนิตี้ Vim ของเกาหลีด้วย เดี๋ยวจะลองเข้าไปดูครับ ดีใจมากจริง ๆ!
แล้วแต่บริษัท แล้วแต่ทีม... แต่ก็น่าแปลกที่มีหลายคนไม่ได้สนใจการตั้งค่าสภาพแวดล้อมการพัฒนามากนัก..
ถ้าจะใช้ Vim ให้เก่ง ดูเหมือนว่าสุดท้ายก็ต้องใช้ zsh กับ tmux ไปด้วยกันอยู่ดี
ต่างจาก Emacs ตรงที่โชคดีที่ไม่จำเป็นต้องไว้เครา