Cài đặt plugins và Setup NeoVim cơ bản

Tiny
Tiny

11:44 10/07/2021đăng trongCông nghệ

Hai bài trước mình đã viết về những lợi ích của việc sử dụng NeoVim và hướng dẫn sử dụng NeoVim cơ bản. Trong bài viết này mình sẽ hướng dẫn các bạn install plugins và setup để biến NeoVim thành IDEs cho riêng bạn.

Vim-plug

Mình sử dụng vim-plug làm trình quản lý plugins, NeoVim hoặc Vim đều dùng được. Mình khuyên các bạn nên xài NeoVim, lý do vì NeoVim là bản refactor của Vim với ít hơn 30% code, hỗ trợ tốt hơn cho việc tích hợp plugins.
Cài đặt:
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Tạo folder để chứa file config của NeoVim tại ~/.config/nvim/init.vim
cd ~/.config && mkdir nvim cd nvim && touch init.vim
NeoVim mặc định sẽ đọc file init.vim này khi start lên. Giống như là khi các bạn code C/C++ sẽ muôn có một file chứa hàm main() vậy, trong NeoVim bạn có thể tạo nhiều file configs của mình ở ngoài rồi source ( include trong C/C++) vào file init.vim này.
Mình tạm thiết kế thư mục nvim như vầy:
nvim setup
Trong cây thư mục như trên chỉ có folder configs, my_settings là do mình tạo ra, còn lại những folder session, bundle, autoload là vim-plug tạo ra để quản lý packages. Ở trong bài viết này các bạn chỉ cần tạo ra folder configs và setup plugin thôi.
Thư mục configs chưa tất cả các file cài đặt vim. Mình mình muốn tách các config này ra để dễ cho việc cài đặt và setup sau này. Trong file init.vimmình sẽ chạy một script đọc tất cả các configs này và nạp vào.
  • 01.plugins.vim : quản lý các plugins
  • 02.settings.vim: quản lý setting của neovim
  • 03.plugin-settings.vim : quản lý setting của plugins.
// thêm script này vào file init.vim for f in split(glob('~/.config/nvim/configs/*.vim'), '\n') exe 'source' f endfor
Prefix 01.* để chỉ mức độ ưu tiên của script khi được nạp vào. Plugins cần phải nạp vào trước, sau đó đến setting của neovim các setting khác được load sau cùng.

Cài đặt

Plugins

Mình sẽ lấy 2 plugins để làm ví dụ đó là nerdtree ( trình quản lý folder/file) và gruvbox ( theme của neovim giống như mình đang xài ).
Updated(25/10/2020): Mình đã chuyển qua dùng defx, nerdtree đầy đủ feature dễ sài hơn nhưng perf chậm quá. Nếu có hứng thú các bạn có thể thử dùng defx.
Defx neovim
Trong file 01.plugins.vim bạn thêm vào đoạn script sau:
call plug#begin('~/.config/nvim/bundle') // tất cả các plugin phải nằm giữa hai hàm này plug#begin và plug#end Plug 'scrooloose/nerdtree' // trình quản lý file giống như trong hình của mình Plug 'morhetz/gruvbox' // theme giống như trong hình của mình luôn :)) call plug#end()
Có rất nhiều plugins bạn có thể tìm kiếm tại đây:
Sau khi thêm xong thì các bước bạn phải làm là
  • :w để save lại sau đó
  • :so % để load lại configs sau đó
  • :PlugInstall để cài đặt Plugins
neovim Plugin
Khi bạn cài bất kì plugins nào thì các bạn nên vào trang chủ của plugin đó (đa phần là github) xem hướng dẫn sử dụng và có cần phải cài đặt gì không. Vì đa số các plugins cài vào cần setting nó mới hoạt động.
Nếu các bạn cảm thấy plugin có ý nghĩa với bạn, thì đừng tiếc gì một star cho project đó để động viên tác giả nhé <3
Ví dụ như mình vừa cài vào plugin nerdtree ( trình quản lý folder/file) thì mình vào trang github của nerdtree để xem docs

Settings

File 02.settings.vim sẽ chứa những settings chung của NeoVim, mang tính chất global và ít bị thay đổi theo thời gian.
Một số settings cơ bản trong file 02.settings.vim :
let mapleader = "\" // prefix key dùng để trigger các function hay event filetype plugin on filetype plugin indent on autocmd BufEnter * :set scroll=10 // set croll line syntax on set encoding=UTF-8 set mouse=a // enable mouse trong context của neovim set incsearch set hlsearch // hightlight text khi search set tabstop=4 // space mỗi lần tab set softtabstop=0 set shiftwidth=4

Plugins Setting

File 03.plugins-setting.vim sẽ chứa setting của plugin. Mình vừa mới cài đặt 2 plugin là nerdtree và gruvbox, giờ mình bắt đầu config như sau:
"NERDTree map :NERDTreeToggle map :NERDTreeFind let g:NERDTreePatternMatchHighlightFullName = 1 let NERDTreeAutoDeleteBuffer = 1 let NERDTreeMinimalUI = 1 let NERDTreeDirArrows = 1 let g:NERDDefaultAlign = 'left' let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } let g:NERDTreeChDirMode=2 let g:NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__', 'node_modules'] let g:NERDTreeShowBookmarks=1 "Theme syntax enable set background=dark highlight Normal ctermbg=None colorscheme gruvbox let g:airline_theme='gruvbox' set termguicolors
Copy đoạn setting mình đã tạo sẵn và paste vào file plugins-settings của bạn.:w để save lại, :so% để load lại setting và bạn sẽ thấy theme của neovim thay đổi. Kiểm tra xem setting của NerdTree đã ăn chưa bằng cách nhấn tổ hợp phím Ctrl + b để toggle nerdtree.

Kết luận

Mình xin dừng bài viết ở đây, bài viết này mình chỉ muốn các bạn nắm cách cài đặt 1 neovim plugin, cách setting neovim. Các bạn thử cài đặt nếu có thắc mắc hay khó khăn gì thì bình luận mình sẽ trả lời.
Đăng kí thành viên và theo dõi mình, bài viết tiếp theo mình sẽ tổng hợp những plugins cần phải có và cách settings để các bạn code được với bất kì ngôn ngữ nào.
Phần settings của mình ở đây:

Updated:

Một số bạn sau khi lấy file init.vim của mình về setup thì bị lỗi. Tại vì neovim cần một số thư viện khác cài vào không nằm trong file init.vim nên khi chạy sẽ bị lỗi.
Sau khi cài đặt xong bạn vào chế độ command gõ :checkhealth
:checkhelp
Neovim sẽ tự động check xem vim config của bạn đang bị thiếu những config gì.
Với những plugin như deoplete hay denite thì bạn phải chạy lệnh :UpdateRemotePlugins để install/update plugin.