Cảm ơn Vim, mình đã dừng code bằng VS Code.
Trước tiên, cảm ơn a Nguyễn Ngọc Thịnh đã giới thiệu cho mình một code editor rất là tuyệt vời, sau khi học sử dụng Vim, mình đã không thể quay lại dùng VS Code.
Trước tiên, mình sẽ nếu một số điểm mạnh quả vim(neovim)
- Tốc độ code : Thực sự thì khi đã quen với vim thì tốc độ code của bạn sẽ lên một tầm cao mới, copy, paste, search, replace code, comment code, tất cả đều bằng phím tắt cả.
- Navigation : Navigate giữa các dòng, đầu dòng cuối dòng cực kì nhanh với phím tắt, chuyển giữa các file, search file rất nhanh
- Nhẹ : vim rất nhẹ, mình có cảm giác khi code với vscode thì con mac air của mình không thể thở nổi, quạy quay như máy cày, nhưng khi code với vim, mình không gặp trường hợp đó, nó rất nhẹ, đôi khi còn không thể nghe tiếng quạt chạy
- All in terminal : code với vim mình không cần phải switch qua lại giữa vscode với terminal nữa, tất cả trong terminal, kết hợp với iTerm2 nữa thì thật là tuyệt vời. Navigate, tạo mới, tắt, thay đổi khoảng cách giữa các tab đều bằng phím tắt. Nhanh hơn dùng chuột 96,69 lần.
- Kho plugin cực kì đầu đủ và nhẹ nhàng : nếu bạn cần màu sắc màu mè, highlight như vscode đã có vim-monokai-pro, muốn autocomplete đã có coc-nvim, muốn show sidebar đã có scrooloose/nerdtree, muốn fuzzy search đã có fzf, muốn comment code đã có tpope/vim-commentary và còn rất nhiều nữa, các bạn có thể tìm tại đây vim-awesome.com.
- Hỗ trợ nhiều trong việc editor file trên server, vì mình là back end nên việc thao tác với server khá là nhiều thành thạo vim giúp mình edit file, config, thậm chí hot fix một số bug nhanh chóng.
À sau màn giới thiệu mình sẽ hướng dẫn các bạn setup vim để code theo phong cách mì ăn liền, còn nếu các bạn muốn học từ đầu thì có thể đọc qua cuốn kinh thánh vim tựa là Learn Vim The Hard Way
Trước hết để bạn phải download vim về từ trang chủ.
# Tải về
curl -LO https://github.com/neovim/neovim/releases/download/nightly/nvim-macos.tar.gz
tar xzf nvim-macos.tar.gz# Để chạy neovim
./nvim-osx64/bin/nvim
Sau đó bạn hãy đẩy nhanh quá trình cài đặt plugin và setup file cấu hình bằng cách down file cấu hình sẵn từ trang vim-bootstrap
Sau khi download file config đổi tên nó thành file “init.vim” và đặt trong đường dẫn “~/.config/nvim” như hình dưới.
Sau đó mở nvim lên và nvim sẽ làm công việc của nó, download các plugin. Sau khi cài đặt xong tiến hành khởi động lại nvim gõ phím “:PlugStatus”
Hãy ghé qua kinh thánh vim ở trên và học một số phím tắt, sau đó mở project lên và chiến nào, sau khi đọc kinh thánh bạn sẽ có thể Map key để thao tác một cách nhanh nhất có thể.
"" MyCustom
noremap <Leader>ff :Grep<CR>
noremap <Leader>rp :%s///g<Left><Left><Left>
noremap <Leader>f<Enter> :FZF<Enter>
noremap qq :qa!<Enter>
Đơn cử nếu mình muốn search file trong folder, sau khi map key như bên trên mình chỉ cần bấm “ ,f<enter> “ là mình đã có thể search nhanh file rồi. Muốn thoát không cần lưu chỉ cần nhấn phím q hai lần…
Comment code cực kì dễ dàng.
Search và Replace
Mình có làm code trên vim một cách rất thoải mái, dường như mình chưa gặp vấn đề gì với vim khi sử dụng nó cả, khi gặp gì khó hãy cứ google cộng đồng sử dụng Vim rất đông đảo và rất nhiệt tình. Mà mình chắc chắn khi bạn đọc hết cuốn kinh thánh thì bạn đã có thể sử dụng Vim một cách thành thục và diêu luyện.
Cá nhân mình, mình rất yêu Vim và code bằng vim, code trên MacOS, cài thêm iTerm2, zsh shell cùng một vài zsh plugin nữa thì cuộc sống của bạn sẽ bớt tẻ nhạt đi rất nhiều, mình càng nghiện gõ phím hơn, và đường như mỗi khi đụng đến máy là chỉ muốn code nữa thôi, mặc dù công việc chính để kiếm tiền không phải là code ( mà là bán hàng ngoài chợ hihi)
Mình setup #vim như thế nào ?
Sau một khoảng thời gian dùng Vim thì mình không còn dùng vim bootstrap
nữa vì nó có nhiều Plugin
mà mình không dùng đến. Phần tiếp theo mình sẽ chỉ ra những plugin
mà mình đang dùng để phục vụ cho công việc code.
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}
Plug 'scrooloose/nerdtree'
Plug 'jistr/vim-nerdtree-tabs'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'itchyny/lightline.vim'
Plug 'vim-scripts/grep.vim'
Plug 'tpope/vim-commentary'
Plug 'sheerun/vim-polyglot'
Plug 'tpope/vim-fugitive'
Plug 'Raimondi/delimitMate'
Plug 'tpope/vim-rhubarb'
Plug 'tomasr/molokai'
Plug 'voldikss/vim-floaterm'
Một file system explorer rất nổi tiếng. Với một số setting sau, map như vậy thì khi bấm F3
thì sidebar
sẽ hiện ra, khi bấm F2
thì sẽ hiện tập tin mà bạn đang mở
"" NERDTree configuration
nnoremap <silent> <F2> :NERDTreeFind<CR>
nnoremap <silent> <F3> :NERDTreeToggle<CR>
2. LIGHTLINE
Plugin này hiện thị một thanh trạng thái phía dưới terminal, nó khá nhỏ gọn và cung cấp đủ các thông tin cần thiết như git branch
, coc status
, vim mode
, file name
, language
. Với setting như sau.
"" Lightline
set tabline=%!lightline#tabline()
set laststatus=2
let g:lightline = {
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'cocstatus','currentfunction','gitbranch', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component_function': {
\ 'cocstatus': 'coc#status',
\ 'currentfunction': 'CocCurrentFunction',
\ 'gitbranch': 'FugitiveHead'
\ },
\ }
3. FZF
Một command lind fuzzy finder với setting như nhau, mình set vậy dùng commandfind
khi tìm kiếm và để loại bỏ node_modules
và các thư mục không cần thiết ra khỏi kết quả khi tìm kiếm.
"" fzf.vim
set wildmode=list:longest,list:full
set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__
let $FZF_DEFAULT_COMMAND = "find * -path '*/\.*' -prune -o -path '**/node_modules/**' -prune -o -path 'node_modules/**' -prune -o -path 'target/**' -prune -o -path 'dist/**' -prune -o -type f -print -o -type l -print 2> /dev/null"
4. GREP
Plugin cần thiết trong việc tìm kiếm nội dung trong file. Với một số setting như bên dưới, bao gồm phím tắt, bỏ qua các thư mục và các file không cần thiết khi search.
" grep.vim
nnoremap <silent> <leader>f :Rgrep<CR>
let Grep_Default_Options = '-IR'
let Grep_Skip_Files = '*.log *.db package-lock.json yarn.log go.sum package.json'
let Grep_Skip_Dirs = '.git node_modules'
5. FLOATTERM
Buildin terminal ngay trong vim, đỡ mất công chuyển qua chuyển lại terminal với vim, với setting như bên dưới.
""" Floatterm
let g:floaterm_keymap_new = '<F7>'
let g:floaterm_keymap_prev = '<F8>'
let g:floaterm_keymap_next = '<F9>'
let g:floaterm_keymap_toggle = '<F10>'
let g:floaterm_width = 0.8
let g:floaterm_height = 0.8
6. MOLOKAI
Color scheme mình yêu thích
7. COC
Một intellisense engine
hỗ trợ đầy đủ language server protocol
, cái language server protocol
là cái mà giúp cho các ide của bạn có các chức năng như auto complete
, auto suggestion
, warning
,err
các kiểu, cùng với một số extension
như coc-tsserver, coc-prettier phục vụ rất tốt cho như cầu code javascript
của mình.
Một số setting các bạn có thể xem trong file ở đây.
Ngoài ra mình còn setup khi save file thì sẽ tự động Format lại code theo chuẩn của prettier
command! -nargs=0 Prettier :CocCommand prettier.formatFile
Ngoài ra thì còn có một số plugin như
Language pack, hỗ trợ hight syntax, indent
Để comment/uncomment code nhanh chóng
Hỗ trợ đống mở ngoặc, dấu hai phẩy tự động.
Git plugin, mình rất ít dùng hầu hết thời gian mình dùng Source Tree.
Các bạn có thể tham khảo qua setup mà mình đang dùng tại đây.
Thực ra thì dùng code editor nào thì mục đích tối thượng cũng thì nó hỗ trợ tốt nhất cho công việc, tăng năng suất. Vs Code, IntelliJ IDEA, hay Sublime thì quyền lựa chọn là ở các bạn, với mình thì vim for the win.