DEV Community

kimidev
kimidev

Posted on

คู่มือปรับแต่ง Neovim: สร้างสุดยอด Text Editor ในแบบของคุณ

Neovim เป็น Text Editor ที่ทรงพลังและยืดหยุ่นสูง ซึ่งเป็นที่นิยมในหมู่นักพัฒนาจำนวนมาก บทความนี้จะแนะนำขั้นตอนการปรับแต่ง Neovim ตั้งแต่การติดตั้ง การตั้งค่าพื้นฐาน การจัดการ Plugin ไปจนถึงการเพิ่มประสิทธิภาพการทำงาน เพื่อให้คุณได้ Neovim ที่สวยงามและตอบโจทย์การใช้งานของคุณอย่างเต็มที่

1. การติดตั้ง Neovim (สำหรับ macOS)

สำหรับผู้ใช้งาน macOS เราสามารถติดตั้ง Neovim ได้ง่ายๆ ผ่าน Homebrew:

brew install neovim
Enter fullscreen mode Exit fullscreen mode

เพื่อให้เรียกใช้งาน Neovim ด้วยคำสั่ง vim ตามความเคยชิน และตั้งค่าให้ Neovim เป็น Editor หลักของระบบ (เช่น เมื่อใช้ git commit):
เปิดไฟล์ ~/.zshrc (หรือ ~/.bashrc หากใช้ Bash) และเพิ่มบรรทัดต่อไปนี้:

alias vim='nvim'
export EDITOR='nvim'
Enter fullscreen mode Exit fullscreen mode

หลังจากบันทึกไฟล์ อย่าลืมปิดและเปิด Terminal ใหม่ หรือใช้คำสั่ง source ~/.zshrc (หรือ source ~/.bashrc) เพื่อให้การเปลี่ยนแปลงมีผล

2. การตั้งค่าพื้นฐาน: init.vim

ไฟล์ตั้งค่าหลักของ Neovim คือ init.vim ซึ่งอยู่ที่ ~/.config/nvim/init.vim หากยังไม่มีโฟลเดอร์ nvim หรือไฟล์ init.vim ให้สร้างขึ้น:

mkdir -p ~/.config/nvim
touch ~/.config/nvim/init.vim
Enter fullscreen mode Exit fullscreen mode

เริ่มต้นด้วยการตั้งค่าให้แสดงหมายเลขบรรทัด:
เปิดไฟล์ init.vim (เช่น ใช้ nvim ~/.config/nvim/init.vim) และเพิ่ม:

set number
Enter fullscreen mode Exit fullscreen mode

บันทึกไฟล์และเปิด Neovim ใหม่อีกครั้ง จะเห็นว่ามีหมายเลขบรรทัดแสดงขึ้นมาแล้ว

3. การจัดการ Plugin ด้วย vim-plug

vim-plug เป็น Plugin Manager ที่นิยมสำหรับ Vim และ Neovim ช่วยให้การติดตั้งและจัดการ Plugin เป็นเรื่องง่าย

การติดตั้ง vim-plug:

สร้างโฟลเดอร์ autoload และดาวน์โหลด plug.vim:

mkdir -p ~/.config/nvim/autoload
curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Enter fullscreen mode Exit fullscreen mode

ตั้งค่า vim-plug ใน init.vim:

เพิ่มส่วนต่อไปนี้ในไฟล์ init.vim เพื่อกำหนดพื้นที่สำหรับ khai báo Plugin:

call plug#begin('~/.config/nvim/plugged')
" khai báo Plugin ต่างๆ ที่นี่
call plug#end()
Enter fullscreen mode Exit fullscreen mode

4. ปรับแต่งหน้าตา (Appearance)

4.1. Theme สี: Onedark

Theme onedark เป็น Theme ที่สวยงามและสบายตา

ติดตั้ง onedark.vim:
เพิ่มบรรทัดต่อไปนี้ระหว่าง plug#begin และ plug#end ใน init.vim:

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
call plug#end()
Enter fullscreen mode Exit fullscreen mode

บันทึกไฟล์ init.vim จากนั้นเปิด Neovim และพิมพ์คำสั่ง :PlugInstall แล้วกด Enter เพื่อติดตั้ง Plugin

เปิดใช้งาน Theme:
เพื่อให้ Theme onedark ถูกใช้งานทุกครั้งที่เปิด Neovim และเปิดการใช้งาน Syntax Highlighting ให้เพิ่มบรรทัดเหล่านี้ใน init.vim (ควรวางไว้หลัง call plug#end()):

syntax on
colorscheme onedark
Enter fullscreen mode Exit fullscreen mode

ไฟล์ init.vim ของคุณตอนนี้ควรมีลักษณะประมาณนี้:

set number

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
call plug#end()

syntax on
colorscheme onedark
Enter fullscreen mode Exit fullscreen mode

4.2. Status Line ที่สวยงาม: Lightline

lightline.vim ช่วยเพิ่ม Status Line ที่สวยงามและแสดงข้อมูลที่เป็นประโยชน์

ติดตั้ง lightline.vim:
เพิ่ม Plug 'itchyny/lightline.vim' ในส่วน Plugin ของ init.vim:

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
Plug 'itchyny/lightline.vim'
call plug#end()
Enter fullscreen mode Exit fullscreen mode

บันทึกไฟล์, เปิด Neovim, และรัน :PlugInstall

ตั้งค่า Lightline ให้เข้ากับ Onedark:
เพิ่มการตั้งค่าต่อไปนี้ใน init.vim เพื่อให้ Lightline ใช้โทนสีของ Onedark:

let g:lightline = { 'colorscheme': 'onedark' }
Enter fullscreen mode Exit fullscreen mode

ไฟล์ init.vim จะเป็นดังนี้:

set number

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
Plug 'itchyny/lightline.vim'
call plug#end()

syntax on
colorscheme onedark
let g:lightline = { 'colorscheme': 'onedark' }
Enter fullscreen mode Exit fullscreen mode

5. เพิ่มประสิทธิภาพการทำงาน (Functionality)

5.1. Syntax Highlighting หลากหลายภาษา: vim-polyglot

vim-polyglot เป็น Plugin ที่รวม Syntax Highlighting สำหรับภาษาโปรแกรมจำนวนมาก ช่วยให้โค้ดอ่านง่ายขึ้น

ติดตั้ง vim-polyglot:
เพิ่ม Plug 'sheerun/vim-polyglot' ใน init.vim และควรเพิ่ม set nocompatible ไว้ด้านบนสุดของไฟล์ เพื่อให้ Plugin ทำงานได้เต็มประสิทธิภาพ:

set number
set nocompatible " เพิ่มบรรทัดนี้

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
Plug 'itchyny/lightline.vim'
Plug 'sheerun/vim-polyglot' " เพิ่ม Plugin นี้
call plug#end()

syntax on
colorscheme onedark
let g:lightline = { 'colorscheme': 'onedark' }
Enter fullscreen mode Exit fullscreen mode

บันทึกและรัน :PlugInstall

5.2. ค้นหาไฟล์อย่างรวดเร็ว: CtrlP

ctrlp.vim ช่วยให้คุณค้นหาและเปิดไฟล์ในโปรเจกต์ได้อย่างรวดเร็วด้วยการกด Ctrl+P คล้ายกับใน VS Code

ติดตั้ง ctrlp.vim:
เพิ่ม Plug 'kien/ctrlp.vim' ใน init.vim:

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
Plug 'itchyny/lightline.vim'
Plug 'sheerun/vim-polyglot'
Plug 'kien/ctrlp.vim' " เพิ่ม Plugin นี้
call plug#end()
Enter fullscreen mode Exit fullscreen mode

บันทึกและรัน :PlugInstall

5.3. ระบบช่วยเขียนโค้ดอัจฉริยะ: Coc (Conquer of Completion)

coc.nvim เปลี่ยน Neovim ให้เป็น IDE ที่มีความสามารถหลากหลาย เช่น Autocomplete, Linting, Formatting และอื่นๆ

ข้อกำหนดเบื้องต้น:
ต้องติดตั้ง Node.js phiên bản 10.12 หรือสูงกว่า

ติดตั้ง coc.nvim:
เพิ่ม Plug 'neoclide/coc.nvim', {'branch': 'release'} ใน init.vim:

call plug#begin('~/.config/nvim/plugged')
Plug 'joshdick/onedark.vim'
Plug 'itchyny/lightline.vim'
Plug 'sheerun/vim-polyglot'
Plug 'kien/ctrlp.vim'
Plug 'neoclide/coc.nvim', {'branch': 'release'} " เพิ่ม Plugin นี้
call plug#end()
Enter fullscreen mode Exit fullscreen mode

บันทึกและรัน :PlugInstall

ติดตั้ง Extensions ที่น่าสนใจสำหรับ Coc:
Coc มี Extensions มากมายที่ช่วยเพิ่มความสามารถ เราสามารถติดตั้งได้โดยใช้คำสั่ง :CocInstall ภายใน Neovim ตัวอย่าง Extensions ที่มีประโยชน์:

  • coc-tsserver: รองรับ TypeScript และ JavaScript
  • coc-eslint: ενσωμάτωση ESLint สำหรับ JavaScript/TypeScript
  • coc-prettier: ช่วยจัดรูปแบบโค้ดให้สวยงาม
  • coc-snippets: รองรับ Code Snippets ช่วยให้พิมพ์โค้ดซ้ำๆ ได้เร็วขึ้น
  • coc-spell-checker: ตรวจสอบการสะกดคำ
  • coc-tailwindcss: (ถ้ามีการใช้งาน Tailwind CSS)

ตัวอย่างการติดตั้งหลาย Extension พร้อมกัน:

:CocInstall coc-tsserver coc-eslint coc-prettier coc-snippets coc-spell-checker
Enter fullscreen mode Exit fullscreen mode

หมายเหตุ: บาง Extension อาจต้องการ Python ให้ติดตั้ง Python ไว้ในระบบด้วย
สามารถตรวจสอบความพร้อมของระบบสำหรับ Coc ด้วยคำสั่ง :checkhealth provider หากมีข้อผิดพลาด ควรแก้ไขตามคำแนะนำ

ตั้งค่าเพิ่มเติมสำหรับ coc-prettier (ตัวอย่าง):
เพิ่มการตั้งค่าต่อไปนี้ใน init.vim เพื่อให้สามารถใช้คำสั่ง :Prettier สำหรับจัดรูปแบบไฟล์ และสร้าง key mapping สำหรับจัดรูปแบบโค้ดที่เลือก:

command! -nargs=0 Prettier :CocCommand prettier.formatFile
vmap <leader>f  <Plug>(coc-format-selected)
nmap <leader>f  <Plug>(coc-format-selected)
Enter fullscreen mode Exit fullscreen mode

(<leader> key โดยปกติคือ \ สามารถเปลี่ยนได้)

6. การจัดการ Plugin ด้วย vim-plug

  • :PlugInstall [ชื่อ Plugin]: ติดตั้ง Plugin ใหม่ (ถ้าไม่ระบุชื่อ จะติดตั้ง Plugin ทั้งหมดที่ยังไม่ได้ติดตั้ง)
  • :PlugUpdate [ชื่อ Plugin]: อัปเดต Plugin (ถ้าไม่ระบุชื่อ จะอัปเดต Plugin ทั้งหมด)
  • :PlugClean: ลบ Plugin ที่ไม่ได้ถูก khai báo ใน init.vim ออกจากระบบ (จะถามยืนยันก่อนลบ)

หากต้องการลบ Plugin:

  1. ลบบรรทัด Plug '...' ของ Plugin นั้นออกจาก init.vim
  2. บันทึกไฟล์
  3. เปิด Neovim และรันคำสั่ง :PlugClean

7. Plugin เสริม: vim-numbertoggle

vim-numbertoggle เป็น Plugin เล็กๆ ที่ทำให้หมายเลขบรรทัดปัจจุบันดูเด่นขึ้น อาจมีปัญหากับการเลื่อนหน้าจอเร็วๆ ด้วยคำสั่ง nG ในบางกรณี

หากต้องการลอง:

call plug#begin('~/.config/nvim/plugged')
" ... Plugin อื่นๆ ...
Plug 'jeffkreeftmeijer/vim-numbertoggle'
call plug#end()
Enter fullscreen mode Exit fullscreen mode

จากนั้นรัน :PlugInstall

สรุป

การปรับแต่ง Neovim อาจดูซับซ้อนในตอนแรก แต่เมื่อคุณเริ่มคุ้นเคยกับ init.vim และ vim-plug แล้ว คุณจะพบว่ามันเป็นเครื่องมือที่ทรงพลังและสามารถปรับแต่งให้เข้ากับการทำงานของคุณได้อย่างไร้ขีดจำกัด ขอให้สนุกกับการสร้าง Neovim ในแบบของคุณ!

หากมีข้อเสนอแนะหรือพบข้อผิดพลาด สามารถแสดงความคิดเห็นเพื่อนำไปปรับปรุงต่อไป

Top comments (0)