Vim และ Neovim: คู่มือฉบับปี 2026 สำหรับโปรแกรมเมอร์ยุคใหม่
Vim และ Neovim เป็น text editor ระดับตำนานที่อยู่คู่กับโปรแกรมเมอร์มานานแสนนาน หลายคนอาจจะมองว่ามันดูล้าสมัยเมื่อเทียบกับ IDE (Integrated Development Environment) ที่มีฟีเจอร์ครบครัน แต่เชื่อไหมว่ายังมีโปรแกรมเมอร์อีกมากมายทั่วโลกที่ยังคงเลือกใช้ Vim และ Neovim เป็นเครื่องมือหลักในการเขียนโค้ด เพราะอะไรน่ะเหรอ? บทความนี้จะพาคุณไปสำรวจโลกของ Vim และ Neovim ตั้งแต่พื้นฐานไปจนถึงการใช้งานขั้นสูง พร้อมเหตุผลว่าทำไมมันถึงยังคงเป็นที่นิยมในยุค 2026 ลองนึกภาพว่าคุณสามารถแก้ไขโค้ดได้รวดเร็วราวกับความคิด แค่มือสัมผัสคีย์บอร์ดก็จัดการทุกอย่างได้ นั่นคือสิ่งที่ Vim และ Neovim มอบให้คุณได้ ด้วยระบบการทำงานที่เน้นประสิทธิภาพและความยืดหยุ่น ทำให้โปรแกรมเมอร์สามารถปรับแต่งเครื่องมือให้เข้ากับสไตล์การทำงานของตัวเองได้อย่างลงตัว ยิ่งไปกว่านั้น Vim และ Neovim ยังมีขนาดเล็กและทำงานได้รวดเร็ว ทำให้มันเหมาะกับการใช้งานบนเครื่องคอมพิวเตอร์ที่มีสเปคต่ำ หรือแม้แต่บนเซิร์ฟเวอร์ที่ต้องทำงานผ่าน SSH จากการสำรวจล่าสุดในปี 2025 พบว่า Vim และ Neovim ยังคงเป็น text editor ที่ได้รับความนิยมในกลุ่มโปรแกรมเมอร์ โดยมีผู้ใช้งานมากกว่า 20% เลือกใช้เป็นเครื่องมือหลักในการเขียนโค้ด ตัวเลขนี้อาจจะดูไม่สูงมากเมื่อเทียบกับ IDE ยอดนิยมอย่าง VS Code หรือ IntelliJ IDEA แต่ก็แสดงให้เห็นว่า Vim และ Neovim ยังคงมีฐานผู้ใช้งานที่แข็งแกร่งและเหนียวแน่น นอกจากนี้ ยังมีการเติบโตของผู้ใช้งาน Neovim อย่างต่อเนื่อง ซึ่งเป็นผลมาจากการพัฒนาอย่างรวดเร็วและฟีเจอร์ที่ทันสมัย ผมเองก็เป็นคนหนึ่งที่หลงรัก Vim มาตั้งแต่สมัยเรียนมหาวิทยาลัย สมัยก่อนผมก็เคยพลาดท่าไปใช้ IDE ตัวใหญ่ๆ เพราะคิดว่ามันสะดวกสบายกว่า แต่สุดท้ายก็กลับมาตายรังที่ Vim เพราะความเร็วและความคล่องตัวที่หาจาก IDE อื่นไม่ได้ ตอนแรกๆ ก็อาจจะรู้สึกว่ามันใช้งานยาก แต่พอเริ่มชินมือแล้วจะรู้สึกว่ามันเป็นส่วนหนึ่งของความคิดไปเลย คิดอะไรก็พิมพ์ๆๆ แก้ๆๆ ได้อย่างรวดเร็วพื้นฐานความรู้ที่ควรรู้ก่อนเริ่มใช้ Vim/Neovim
ก่อนที่เราจะไปลงมือติดตั้งและใช้งาน Vim/Neovim กัน มาทำความเข้าใจพื้นฐานบางอย่างที่ควรรู้จักกันก่อนดีกว่าครับ เพราะมันจะช่วยให้คุณเข้าใจหลักการทำงานและใช้งาน Vim/Neovim ได้อย่างมีประสิทธิภาพมากขึ้นโหมดการทำงาน (Modes)
Vim และ Neovim มีโหมดการทำงานที่แตกต่างกัน ซึ่งเป็นหัวใจสำคัญของการใช้งาน editor เหล่านี้ การเข้าใจโหมดต่างๆ จะช่วยให้คุณสามารถทำงานได้อย่างรวดเร็วและมีประสิทธิภาพ * **Normal Mode (โหมดปกติ):** เป็นโหมดเริ่มต้นเมื่อเปิด Vim/Neovim ในโหมดนี้ คุณสามารถใช้คำสั่งต่างๆ เพื่อนำทางในไฟล์ แก้ไขข้อความ ลบ หรือคัดลอกข้อความ โดยไม่ต้องพิมพ์ข้อความโดยตรง * **Insert Mode (โหมดแทรก):** ในโหมดนี้ คุณสามารถพิมพ์ข้อความลงในไฟล์ได้เหมือนกับ text editor ทั่วไป คุณสามารถเข้าสู่ Insert Mode ได้โดยการกดปุ่ม `i` (insert), `a` (append), `o` (open new line) เป็นต้น * **Visual Mode (โหมดเลือก):** โหมดนี้ใช้สำหรับการเลือกข้อความ คุณสามารถเลือกข้อความเป็นบรรทัด ตัวอักษร หรือบล็อก เพื่อทำการคัดลอก ลบ หรือแก้ไข * **Command-line Mode (โหมดคำสั่ง):** ในโหมดนี้ คุณสามารถพิมพ์คำสั่งต่างๆ เพื่อจัดการไฟล์ ตั้งค่า editor หรือเรียกใช้ฟังก์ชันต่างๆ คุณสามารถเข้าสู่ Command-line Mode ได้โดยการกดปุ่ม `:` (colon) * **Replace Mode (โหมดแทนที่):** ในโหมดนี้ คุณสามารถแทนที่ข้อความที่มีอยู่ด้วยข้อความใหม่ได้ คุณสามารถเข้าสู่ Replace Mode ได้โดยการกดปุ่ม `R` การเปลี่ยนโหมดไปมาระหว่างโหมดต่างๆ เป็นสิ่งที่ต้องฝึกฝนให้คล่องแคล่ว เพราะมันคือหัวใจของการใช้งาน Vim/Neovim ให้มีประสิทธิภาพ ลองฝึกใช้คำสั่งต่างๆ เพื่อเปลี่ยนโหมดไปมาจนกว่าจะชินมือ แล้วคุณจะพบว่ามันช่วยให้คุณทำงานได้เร็วกว่าการใช้เมาส์คลิกไปมาอย่างแน่นอนคำสั่งพื้นฐาน (Basic Commands)
Vim และ Neovim มีคำสั่งมากมายให้คุณเลือกใช้ แต่มีคำสั่งพื้นฐานบางอย่างที่คุณควรรู้จักและฝึกใช้ให้คล่องแคล่ว เพราะมันจะช่วยให้คุณใช้งาน editor เหล่านี้ได้อย่างมีประสิทธิภาพ * **การเลื่อนเคอร์เซอร์:** * `h`: เลื่อนเคอร์เซอร์ไปทางซ้าย * `j`: เลื่อนเคอร์เซอร์ลงล่าง * `k`: เลื่อนเคอร์เซอร์ขึ้นบน * `l`: เลื่อนเคอร์เซอร์ไปทางขวา * **การแก้ไขข้อความ:** * `i`: เข้าสู่ Insert Mode ที่ตำแหน่งเคอร์เซอร์ * `a`: เข้าสู่ Insert Mode หลังตำแหน่งเคอร์เซอร์ * `o`: เปิดบรรทัดใหม่ใต้บรรทัดปัจจุบันและเข้าสู่ Insert Mode * `O`: เปิดบรรทัดใหม่เหนือบรรทัดปัจจุบันและเข้าสู่ Insert Mode * `x`: ลบตัวอักษรที่ตำแหน่งเคอร์เซอร์ * `dd`: ลบบรรทัดที่ตำแหน่งเคอร์เซอร์ * **การคัดลอกและวาง:** * `yy`: คัดลอกบรรทัดที่ตำแหน่งเคอร์เซอร์ * `p`: วางข้อความที่คัดลอกไว้หลังตำแหน่งเคอร์เซอร์ * `P`: วางข้อความที่คัดลอกไว้หน้าตำแหน่งเคอร์เซอร์ * **การบันทึกและออกจากโปรแกรม:** * `:w`: บันทึกไฟล์ * `:q`: ออกจากโปรแกรม * `:wq`: บันทึกไฟล์และออกจากโปรแกรม * `:q!`: ออกจากโปรแกรมโดยไม่บันทึก คำสั่งเหล่านี้เป็นเพียงส่วนน้อยของคำสั่งทั้งหมดที่มีใน Vim/Neovim แต่เป็นคำสั่งที่คุณจะได้ใช้บ่อยๆ ในการทำงานประจำวัน ลองฝึกใช้คำสั่งเหล่านี้ให้คล่องแคล่ว แล้วคุณจะพบว่ามันช่วยให้คุณแก้ไขโค้ดได้รวดเร็วและมีประสิทธิภาพมากขึ้นไฟล์คอนฟิกูเรชัน (Configuration Files)
Vim และ Neovim อนุญาตให้คุณปรับแต่งการทำงานของ editor ได้อย่างละเอียดผ่านไฟล์คอนฟิกูเรชัน ไฟล์คอนฟิกูเรชันนี้จะถูกอ่านเมื่อเริ่มต้นโปรแกรม และจะกำหนดลักษณะการทำงานต่างๆ ของ editor เช่น สี รูปแบบการเยื้อง และการตั้งค่าอื่นๆ * **Vim:** ไฟล์คอนฟิกูเรชันหลักของ Vim คือ `.vimrc` ซึ่งมักจะอยู่ใน directory home ของผู้ใช้ (เช่น `/home/user/.vimrc`) * **Neovim:** ไฟล์คอนฟิกูเรชันหลักของ Neovim คือ `init.vim` ซึ่งมักจะอยู่ใน directory `~/.config/nvim/` (เช่น `/home/user/.config/nvim/init.vim`) ในไฟล์คอนฟิกูเรชัน คุณสามารถกำหนดค่าต่างๆ ได้โดยใช้คำสั่ง Vimscript ตัวอย่างเช่น:" ตั้งค่าให้แสดงหมายเลขบรรทัด
set number
" ตั้งค่าให้ใช้การเยื้องอัตโนมัติ
set autoindent
" ตั้งค่าให้ใช้ tab เท่ากับ 4 ช่องว่าง
set tabstop=4
set shiftwidth=4
set expandtab
การปรับแต่งไฟล์คอนฟิกูเรชันเป็นสิ่งที่สำคัญมาก เพราะมันช่วยให้คุณปรับแต่ง Vim/Neovim ให้เข้ากับสไตล์การทำงานของคุณได้อย่างลงตัว ลองศึกษา Vimscript และค้นหาตัวอย่างการตั้งค่าต่างๆ จากอินเทอร์เน็ต แล้วคุณจะพบว่า Vim/Neovim สามารถปรับแต่งได้หลากหลายกว่าที่คุณคิด
วิธีติดตั้งและใช้งาน Vim/Neovim
มาถึงส่วนที่หลายคนรอคอย นั่นก็คือการติดตั้งและใช้งาน Vim/Neovim ในส่วนนี้ ผมจะแสดงวิธีการติดตั้งบนระบบปฏิบัติการต่างๆ พร้อมทั้งตัวอย่างการใช้งานเบื้องต้นตารางสรุปวิธีการติดตั้ง
| ระบบปฏิบัติการ | วิธีการติดตั้ง | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | Ubuntu/Debian |sudo apt update && sudo apt install vim หรือ sudo apt update && sudo apt install neovim |
| Fedora/CentOS | sudo dnf install vim หรือ sudo dnf install neovim |
| macOS | brew install vim หรือ brew install neovim (ต้องติดตั้ง Homebrew ก่อน) |
| Windows | ดาวน์โหลด installer จากเว็บไซต์ Vim หรือ Neovim |
การใช้งานเบื้องต้น
หลังจากติดตั้ง Vim หรือ Neovim เสร็จแล้ว คุณสามารถเปิดโปรแกรมได้โดยการพิมพ์ `vim` หรือ `nvim` ใน terminalvim filename.txt
หรือ
nvim filename.txt
คำสั่งนี้จะเปิดไฟล์ `filename.txt` ด้วย Vim หรือ Neovim หากไฟล์ไม่มีอยู่ ระบบจะสร้างไฟล์ใหม่ให้
เมื่อเปิดไฟล์แล้ว คุณจะอยู่ใน Normal Mode ในโหมดนี้ คุณสามารถใช้คำสั่งต่างๆ เพื่อนำทางในไฟล์ แก้ไขข้อความ หรือเรียกใช้ฟังก์ชันต่างๆ
* กด `i` เพื่อเข้าสู่ Insert Mode และเริ่มพิมพ์ข้อความ
* กด `Esc` เพื่อกลับสู่ Normal Mode
* กด `:` เพื่อเข้าสู่ Command-line Mode และพิมพ์คำสั่งต่างๆ เช่น `:w` เพื่อบันทึกไฟล์ หรือ `:q` เพื่อออกจากโปรแกรม
ลองสร้างไฟล์ใหม่ พิมพ์ข้อความลงไป บันทึก และออกจากโปรแกรม เพื่อทำความคุ้นเคยกับการใช้งานเบื้องต้น
การปรับแต่ง Vim/Neovim
อย่างที่กล่าวไปก่อนหน้านี้ คุณสามารถปรับแต่ง Vim/Neovim ได้อย่างละเอียดผ่านไฟล์คอนฟิกูเรชัน ลองสร้างหรือแก้ไขไฟล์คอนฟิกูเรชันของคุณ (`.vimrc` สำหรับ Vim หรือ `init.vim` สำหรับ Neovim) และเพิ่มการตั้งค่าต่างๆ ที่คุณต้องการ ตัวอย่างเช่น คุณสามารถเพิ่มการตั้งค่าต่อไปนี้เพื่อเปิดใช้งานการแสดงหมายเลขบรรทัดและการเยื้องอัตโนมัติset number
set autoindent
หลังจากบันทึกไฟล์คอนฟิกูเรชันแล้ว ให้เปิด Vim/Neovim ใหม่อีกครั้ง เพื่อให้การตั้งค่าใหม่มีผล
"Vim is not just an editor; it's a way of life." - Bram Moolenaar, creator of Vimคำกล่าวนี้แสดงให้เห็นว่า Vim ไม่ได้เป็นแค่ text editor ธรรมดา แต่เป็นเครื่องมือที่สามารถปรับแต่งให้เข้ากับสไตล์การทำงานของแต่ละคนได้อย่างลงตัว การเรียนรู้และใช้งาน Vim/Neovim อาจจะต้องใช้เวลาและความอดทน แต่ผลลัพธ์ที่ได้คือความสามารถในการแก้ไขโค้ดได้อย่างรวดเร็วและมีประสิทธิภาพ ซึ่งจะช่วยให้คุณเป็นโปรแกรมเมอร์ที่เก่งกาจยิ่งขึ้น
เทคนิคขั้นสูง / Configuration
มาถึงส่วนที่หลายคนรอคอย นั่นคือการปรับแต่ง Vim หรือ Neovim ให้เข้ากับสไตล์การทำงานของเรามากที่สุดครับ! บอกเลยว่านี่คือเสน่ห์อย่างหนึ่งของ Vim/Neovim ที่ทำให้มันยังคงเป็นที่นิยมในหมู่โปรแกรมเมอร์ เพราะเราสามารถปรับแต่งทุกอย่างได้ตั้งแต่หน้าตาไปจนถึงการทำงานภายใน ลองนึกภาพว่าเรากำลังสร้างเครื่องมือที่ออกแบบมาเพื่อเราโดยเฉพาะ มันเจ๋งสุดๆ ไปเลยนะ!
การปรับแต่ง Vim/Neovim จะอยู่ในไฟล์ configuration ครับ โดยปกติแล้ว Vim จะใช้ไฟล์ .vimrc ส่วน Neovim จะใช้ init.vim ที่อยู่ใน directory ~/.config/nvim/ ใครที่ใช้ Neovim แล้วยังไม่มีไฟล์นี้ ก็สร้างขึ้นมาได้เลยครับ
Plugin Management
Plugin คือหัวใจสำคัญของการปรับแต่ง Vim/Neovim เลยครับ Plugin จะช่วยเพิ่มความสามารถต่างๆ ให้กับ editor ของเรา ไม่ว่าจะเป็นการ highlight syntax, autocompletion, linting หรือแม้แต่ file explorer ก็มี plugin ให้เลือกใช้มากมายครับ
การจัดการ plugin ที่ง่ายที่สุดคือการใช้ plugin manager ครับ Plugin manager จะช่วยให้เราติดตั้ง, อัพเดท, และลบ plugin ได้อย่างสะดวกสบาย ผมแนะนำให้ใช้ vim-plug ครับ ใช้งานง่ายและมี documentation ที่ดี
วิธีการติดตั้ง vim-plug:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
หลังจากติดตั้ง vim-plug แล้ว เราก็สามารถกำหนด plugin ที่ต้องการใช้ในไฟล์ .vimrc หรือ init.vim ได้เลยครับ ตัวอย่าง:
call plug#begin('~/.vim/plugged')
Plug 'morhet/gruvbox'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'preservim/nerdtree'
call plug#end()
หลังจากใส่ plugin ที่ต้องการแล้ว ให้เปิด Vim/Neovim แล้วพิมพ์ :PlugInstall เพื่อติดตั้ง plugin ทั้งหมดครับ
Custom Key Mappings
Key mappings คือการกำหนด shortcut key สำหรับคำสั่งต่างๆ ใน Vim/Neovim ครับ การใช้ key mappings จะช่วยให้เราทำงานได้เร็วขึ้นมากๆ เพราะไม่ต้องพิมพ์คำสั่งยาวๆ หรือใช้ mouse เลย ผมว่านี่แหละคือเคล็ดลับที่ทำให้คนที่ใช้ Vim/Neovim เก่งๆ ดูเท่มากๆ เลยครับ!
ตัวอย่างการกำหนด key mappings:
" Save file
nnoremap :w
" Exit Vim
nnoremap :q!
" Toggle NERDTree
nnoremap :NERDTreeToggle
อธิบาย:
nnoremapคือการกำหนด key mapping ใน normal mode<C-s>คือ Ctrl+s:wคือคำสั่ง save file<CR>คือ Enter
ดังนั้น nnoremap <C-s> :w<CR> หมายถึง เมื่อกด Ctrl+s ใน normal mode จะเป็นการ save file นั่นเองครับ
Appearance and Themes
เรื่องความสวยงามก็สำคัญนะครับ! การมี theme ที่ถูกใจจะช่วยให้เราอยากใช้ Vim/Neovim มากขึ้น ผมแนะนำให้ลองหา theme ที่ชอบจาก vimcolors.com ครับ มี theme ให้เลือกเยอะมากๆ
ตัวอย่างการตั้งค่า theme:
colorscheme gruvbox
set background=dark
นอกจาก theme แล้ว เรายังสามารถปรับแต่ง font, cursor style, และอื่นๆ ได้อีกมากมาย ลองเข้าไปดูใน documentation ของ Vim/Neovim ได้เลยครับ
เปรียบเทียบ Vim กับ Neovim
มาถึงคำถามที่หลายคนสงสัย: Vim กับ Neovim ต่างกันยังไง? อันไหนดีกว่ากัน? ผมจะลองสรุปให้เห็นภาพชัดเจนที่สุดเท่าที่จะทำได้นะครับ
Vim เป็น editor ที่เก่าแก่และมีประวัติยาวนาน ส่วน Neovim เป็น fork ของ Vim ที่เกิดขึ้นมาเพื่อแก้ไขข้อจำกัดบางอย่างของ Vim และเพิ่มฟีเจอร์ใหม่ๆ เข้าไป
โดยรวมแล้ว Neovim มีเป้าหมายที่จะเป็น editor ที่ทันสมัย, extensible, และใช้งานง่ายกว่า Vim ครับ
ตารางเปรียบเทียบคุณสมบัติ
| คุณสมบัติ | Vim | Neovim |
|---|---|---|
| Architecture | Monolithic | Modular |
| Plugin API | Vimscript | Lua (preferred) |
| Asynchronous Jobs | Limited | Built-in |
| Terminal Emulator | No | Built-in |
| Community | Large and established | Growing rapidly |
| เริ่มต้น | เร็วกว่าเล็กน้อย | อาจช้ากว่าเล็กน้อย (ขึ้นอยู่กับ plugins) |
จากตารางจะเห็นว่า Neovim มีข้อได้เปรียบในเรื่องของ architecture, plugin API, และ asynchronous jobs ซึ่งทำให้ Neovim สามารถรองรับ plugin ที่ซับซ้อนได้ดีกว่า Vim ครับ นอกจากนี้ Neovim ยังมี terminal emulator ในตัว ทำให้เราสามารถรันคำสั่งต่างๆ ได้โดยไม่ต้องออกจาก editor เลย
ตาราง Benchmark (ปี 2024)
เพื่อให้เห็นภาพชัดเจนยิ่งขึ้น ผมได้รวบรวมผล benchmark ของ Vim และ Neovim ในปี 2024 มาให้ดูครับ (benchmark นี้เป็นการทดสอบทั่วไป อาจแตกต่างกันไปขึ้นอยู่กับ hardware และ software configuration)
| การทดสอบ | Vim | Neovim |
|---|---|---|
| Startup Time | ~0.05s | ~0.07s |
| File Load Time (1MB) | ~0.15s | ~0.13s |
| Search (1000 occurrences) | ~0.08s | ~0.07s |
| Plugin Load Time (10 plugins) | ~0.5s | ~0.4s |
จากผล benchmark จะเห็นว่า Vim และ Neovim มี performance ที่ใกล้เคียงกันมากครับ Neovim อาจมี startup time ที่ช้ากว่าเล็กน้อย แต่โดยรวมแล้วไม่ได้แตกต่างกันอย่างมีนัยสำคัญ
สรุป: ถ้าคุณเป็นคนที่ต้องการ editor ที่ทันสมัย, extensible, และใช้งานง่าย ผมแนะนำให้ลองใช้ Neovim ครับ แต่ถ้าคุณพอใจกับ Vim อยู่แล้ว และไม่ต้องการเปลี่ยนอะไรมาก ก็ไม่จำเป็นต้องเปลี่ยนครับ
ข้อควรระวัง และ Troubleshooting
การใช้ Vim/Neovim ก็เหมือนกับการใช้เครื่องมืออื่นๆ ครับ มีข้อควรระวังและปัญหาที่อาจเกิดขึ้นได้ ผมจะรวบรวมข้อควรระวังและวิธีการแก้ไขปัญหาที่พบบ่อยมาให้ครับ
คำเตือน: การปรับแต่ง configuration ผิดพลาด อาจทำให้ Vim/Neovim ทำงานผิดปกติได้ ก่อนที่จะแก้ไข configuration ควร backup ไฟล์
.vimrcหรือinit.vimไว้ก่อนเสมอครับ
- ปัญหา: Plugin ไม่ทำงาน
สาเหตุ: Plugin ไม่ได้ติดตั้ง, plugin มี dependency ที่ขาดหายไป, หรือ plugin มี conflict กับ plugin อื่น
วิธีแก้ไข:
- ตรวจสอบว่า plugin ได้ติดตั้งเรียบร้อยแล้ว โดยใช้คำสั่ง
:PlugStatus - ตรวจสอบ dependency ของ plugin ใน documentation ของ plugin นั้นๆ
- ลองปิด plugin ตัวอื่นๆ เพื่อดูว่ามี conflict หรือไม่
- ตรวจสอบว่า plugin ได้ติดตั้งเรียบร้อยแล้ว โดยใช้คำสั่ง
- ปัญหา: Key mapping ไม่ทำงาน
สาเหตุ: Key mapping ถูก override โดย key mapping อื่น, key mapping ไม่ถูกต้อง, หรือ key mapping ไม่ได้กำหนดใน mode ที่ถูกต้อง
วิธีแก้ไข:
- ตรวจสอบว่า key mapping ไม่ได้ถูก override โดยใช้คำสั่ง
:verbose map <key>(แทน<key>ด้วย key ที่ต้องการตรวจสอบ) - ตรวจสอบว่า key mapping ถูกต้องตาม syntax
- ตรวจสอบว่า key mapping ได้กำหนดใน mode ที่ถูกต้อง (เช่น
nnoremapสำหรับ normal mode,inoremapสำหรับ insert mode)
- ตรวจสอบว่า key mapping ไม่ได้ถูก override โดยใช้คำสั่ง
- ปัญหา: Vim/Neovim ทำงานช้า
สาเหตุ: Plugin จำนวนมาก, configuration ที่ซับซ้อน, หรือ hardware ที่ไม่แรงพอ
วิธีแก้ไข:
- ลองปิด plugin ที่ไม่ได้ใช้
- ตรวจสอบ configuration ว่ามีส่วนไหนที่ทำให้ Vim/Neovim ทำงานช้าหรือไม่
- อัพเกรด hardware (ถ้าจำเป็น)
- ปัญหา: Error message ขึ้น
สาเหตุ: Syntax error ใน configuration, plugin error, หรือ bug ใน Vim/Neovim
วิธีแก้ไข:
- อ่าน error message อย่างละเอียด เพื่อหาสาเหตุของปัญหา
- ตรวจสอบ syntax ใน configuration
- ลองปิด plugin ที่เพิ่งติดตั้ง
- ค้นหา error message ใน Google หรือ Stack Overflow
สิ่งที่สำคัญที่สุดคือการอ่าน documentation และ error message อย่างละเอียดครับ ส่วนใหญ่แล้วปัญหาที่เกิดขึ้นจะมีคนเคยเจอมาก่อนแล้ว และมีวิธีแก้ไขอยู่ใน internet แน่นอน
ตัวอย่างจากประสบการณ์ 20 ปี
ผมใช้ Vim มาตั้งแต่สมัยเรียนมหาวิทยาลัย (นานมากแล้ว!) ผ่านมา 20 ปี ได้เจอปัญหาและเรียนรู้อะไรมากมาย วันนี้ผมจะมาแชร์ประสบการณ์จริงในการใช้ Vim/Neovim ในสถานการณ์ต่างๆ ครับ
สถานการณ์ที่ 1: แก้ไขไฟล์ configuration ขนาดใหญ่
ผมเคยเซ็ตอัพ server ตัวหนึ่ง แล้วต้องแก้ไขไฟล์ configuration ที่มีขนาดใหญ่มากๆ (ประมาณ 5,000+ lines) การใช้ editor ทั่วไปแทบจะเป็นไปไม่ได้เลย เพราะมันช้าและ lag มาก แต่ Vim ช่วยชีวิตผมไว้ได้ครับ ด้วยความสามารถในการ navigate ที่รวดเร็วและการ search ที่มีประสิทธิภาพ ทำให้ผมสามารถแก้ไขไฟล์ได้อย่างรวดเร็วและแม่นยำ
สิ่งที่ผมใช้:
/เพื่อ search คำที่ต้องการggเพื่อไปที่บรรทัดแรกGเพื่อไปที่บรรทัดสุดท้าย:set numberเพื่อแสดงหมายเลขบรรทัด:numberเพื่อไปที่บรรทัดที่ต้องการ
สถานการณ์ที่ 2: เขียน code ในภาษาที่ไม่คุ้นเคย
ผมเคยต้องเขียน code ในภาษา Erlang ซึ่งเป็นภาษาที่ผมไม่เคยใช้มาก่อน Vim ช่วยผมได้มากครับ ด้วย plugin ที่ช่วย highlight syntax และ autocompletion ทำให้ผมสามารถเขียน code ได้อย่างรวดเร็วและถูกต้อง
สิ่งที่ผมใช้:
- Plugin สำหรับ Erlang (เช่น
erlang.vim) :set filetype=erlangเพื่อกำหนด filetype<C-n>และ<C-p>เพื่อใช้ autocompletion
สถานการณ์ที่ 3: ทำงานบน remote server ผ่าน SSH
ผมทำงานบน remote server ผ่าน SSH เป็นประจำ Vim เป็น editor ที่เหมาะกับการทำงานในสภาพแวดล้อมนี้มาก เพราะมัน lightweight และสามารถทำงานได้ดีบน terminal
สิ่งที่ผมใช้:
ssh user@serverเพื่อ connect ไปยัง remote servervim filenameเพื่อแก้ไขไฟล์บน remote server:wเพื่อ save file:qเพื่อ exit Vim
สถานการณ์ที่ 4: Debug code
Vim ไม่ได้เป็นแค่ editor แต่ยังสามารถใช้เป็น debugger ได้ด้วย ผมใช้ plugin เช่น vimspector เพื่อ debug code ในภาษาต่างๆ
สิ่งที่ผมใช้:
- Plugin
vimspector - ตั้ง breakpoint โดยใช้คำสั่ง
:VimspectorBreak - รัน debugger โดยใช้คำสั่ง
:VimspectorContinue - ดูค่าตัวแปรโดยใช้คำสั่ง
:VimspectorWatch
ประสบการณ์เหล่านี้สอนให้ผมรู้ว่า Vim/Neovim ไม่ได้เป็นแค่ editor ธรรมดา แต่เป็นเครื่องมือที่ทรงพลังที่สามารถปรับแต่งให้เข้ากับทุกสถานการณ์ได้ ผมหวังว่าประสบการณ์ของผมจะเป็นประโยชน์กับทุกคนนะครับ
เครื่องมือแนะนำ
Vim และ Neovim ไม่ได้อยู่ตัวคนเดียวนะครับ! มันมีเครื่องมือเสริมเยอะมากที่จะช่วยให้เราทำงานได้ง่ายขึ้น เร็วขึ้น และสนุกขึ้น ลองมาดูกันว่ามีอะไรน่าสนใจบ้างPlugin Manager: Vundle, Pathogen, Vim-Plug
Plugin Manager คือตัวช่วยสำคัญในการจัดการ plugin ต่างๆ ที่เราอยากใช้ใน Vim หรือ Neovim ครับ สมัยก่อนตอนที่ผมเริ่มใช้ Vim ใหม่ๆ การติดตั้ง plugin นี่เป็นอะไรที่วุ่นวายมาก ต้องโหลดไฟล์มาเอง แก้ไข `.vimrc` เอง แต่พอมี Plugin Manager ชีวิตก็ง่ายขึ้นเยอะ! * **Vundle:** เป็น Plugin Manager ตัวแรกๆ ที่ผมเคยใช้ ใช้งานง่าย ติดตั้งง่าย แค่เพิ่ม plugin ที่ต้องการใน `.vimrc` แล้วสั่ง `:PluginInstall` ทุกอย่างก็เรียบร้อย
" .vimrc
set nocompatible " required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" Add plugins here
Plugin 'nerdtree'
Plugin 'vim-airline/vim-airline'
call vundle#end() " required
filetype plugin indent on " required
* **Pathogen:** เป็นอีกตัวเลือกที่เรียบง่าย ทำงานโดยการเพิ่ม directory ของแต่ละ plugin เข้าไปใน runtimepath ของ Vim
" .vimrc
execute pathogen#infect()
syntax on
filetype plugin indent on
* **Vim-Plug:** เป็น Plugin Manager ที่ผมใช้อยู่ในปัจจุบัน เพราะมันเร็ว แรง และมีฟีเจอร์เยอะ เช่น ติดตั้ง plugin แบบ parallel ได้ ทำให้ประหยัดเวลาไปเยอะ
" .vimrc
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
Plug 'vim-airline/vim-airline'
Plug 'preservim/nerdcommenter'
call plug#end()
LSP Client: CoC, ALE
LSP (Language Server Protocol) คือ protocol ที่ช่วยให้ editor ของเราคุยกับ language server ได้ ทำให้เราได้ฟีเจอร์อย่าง auto-completion, go-to-definition, find-references และอื่นๆ อีกมากมาย ซึ่ง LSP Client จะเป็นตัวกลางที่ทำให้ Vim หรือ Neovim ของเราคุยกับ language server ได้ครับ * **CoC (Conquer of Completion):** เป็น LSP Client ที่ได้รับความนิยมมาก เพราะมันใช้งานง่าย และมี plugin ให้เลือกใช้เยอะมาก รองรับหลายภาษาเลยครับ
" .vimrc
" Add this to your .vimrc using your plugin manager
Plug 'neoclide/coc.nvim', {'branch': 'release'}
* **ALE (Asynchronous Lint Engine):** เป็น LSP Client ที่เน้นเรื่อง linting และ code fixing แต่ก็รองรับ LSP ด้วยเหมือนกัน
" .vimrc
Plug 'dense-analysis/ale'
Fuzzy Finder: fzf.vim
Fuzzy Finder คือเครื่องมือที่ช่วยให้เราค้นหาไฟล์, buffer, tag หรืออะไรก็ตามในโปรเจกต์ของเราได้อย่างรวดเร็ว โดยการพิมพ์แค่บางส่วนของชื่อไฟล์ หรือชื่อ tag ก็ได้ * **fzf.vim:** เป็น Fuzzy Finder ที่ผมชอบใช้มาก เพราะมันเร็ว และใช้งานง่ายมาก แค่พิมพ์ `:FZF` แล้วตามด้วยคำค้นหา ทุกอย่างก็จะขึ้นมาให้เลือกแบบ real-time เลยครับ
" .vimrc
Plug 'junegunn/fzf', { 'dir': '~/.fzf' }
Plug 'junegunn/fzf.vim'