Tùy biến Vim với Vundle và Powerline
vim
20
Linux
81
ubuntu
17
editor
5
White

Lâm Ngô viết ngày 18/01/2017

Giới thiệu

alt text
Vim là một text editor nổi tiếng, có mặt trên tất cả các hệ điều hành và phổ biến nhất là trên hệ Linux/Unix. Không phải ngẫu nhiên mà vim được ví như con dao của quân đội Thụy Sĩ (Swiss Army Knife), với kho plugin phong phú và hệ thống phím tắt đồ sộ hầu như có thể thực hiện mọi thao tác mà không cần dùng đến con chuột. Có thể bạn đã quá quen với các IDE hay text editor khác, và muốn trải nghiệm thứ gì đó mới mẻ hơn, hoặc đơn giản là cảm thấy việc viết code quan trọng hơn là các tính năng màu mè của các IDE, thì Vim sẽ là lựa chọn tuyệt vời cho bạn.

alt text

Trong bài này mình sẽ hướng dẫn cách dùng Vundle để cài đặt các plugin, powerline để tạo status line cũng như các plugin mình hay dùng để biến Vim trở thành một text editor hoàn chỉnh có thể thay thế cho IDE.

1) Cài đặt Powerline

Ta sẽ cần pip (một package management để quản lý các package Python) để cài đặt powerline và git để clone repo powerline trên Github về. Ở đây mình sẽ dùng pip3 (Python3.5) được cài sẵn trên hệ Ubuntu 16.04.
$ sudo apt-get install python3-pip git

Tiếp theo, bạn đã có thể cài powerline bằng pip3.
$ pip3 install --user git+git://github.com/powerline/powerline

Vì ăn naming conflict với các project khác trên PyPI (Python Package Index), nên powerline đổi tên thành powerline-status. Bạn có thể kiểm tra powerline được cài chưa bằng cách:
$ pip3 show powerline-status
alt text
Trong hình trên, powerline được clone về folder ~/.local/lib/python3.5/site-packages

Cài bộ font cho Powerline trên Linux

Powerline dùng một bộ font đặc biệt để hiển thị arrow và các symbol khác. Ta cần tải về bộ font và font configuration bằng wget.

# wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
# wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf

Sau đó bạn cần di chuyển font vào folder font của máy, /usr/share/fonts/ hoặc /usr/local/share/fonts, có thể kiểm tra bằng command: xset -q

$ sudo mv PowerlineSymbols.otf /usr/share/fonts/

Tiếp theo, cần phải update bộ đệm (cache) cho font:
# fc-cache -vf /usr/share/fonts/

Sau đó cài đặt font config:
# mv 10-powerline-symbols.conf /etc/fonts/conf.d/

Nếu các ký tự đặc biệt chưa xuất hiện, bạn hãy thử restart terminal để cập nhật thay đổi.

Để cài plugin này cho vim, thêm những dòng sau vào file ~/.vimrc, nếu chưa có file .vimrc thì bạn có thể tạo mới. Note: ~/.vimrc là nơi mà bạn có thể tùy biến mọi thứ trong vim: căn lề (indent), hiện số dòng, bind key,...

set rtp+=$HOME/.local/lib/python3.5/site-packages/powerline/bindings/vim/   
set laststatus=2                                                            
set t_Co=256

Kết quả:
alt text

2) Cài đặt Vundle

Vundle (viết tắt của Vim bundle) là một plugin manager dành cho vim. Với Vundle bạn có thể tìm , cài đặt, update hoặc xóa đi các plugin một cách dễ dàng thông qua file ~/.vimrc. Tất cả plugin sẽ được cài đặt trong ~/.vim/bundle. Để cài đặt Vundle, ta cần clone về trước.
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Thêm dòng sau vào file ~/.vimrc:

set nocompatible        " be iMproved, required                           
filetype off            " required

Đầu tiên, ta cần chắc rằng vim không giữ lại tính tương thích với với vi, tiền thân của nó. Đó là yêu cầu của Vundle. Nếu không, vim sẽ vô hiệu hóa hầu hết các tính năng khiến vim đáng để dùng hơn vi.

Ta cũng tạm thời tắt đi tính năng “filetype” bởi vì cách vim lưu bộ đệm cho các filetype khác nhau tại runtime ảnh hưởng đến cách vundle thay đổi môi trường runtime. Ta sẽ bật lại nó vào lúc khác.

" set the runtime path to include Vundle and initialize                         
set rtp+=~/.vim/bundle/Vundle.vim                                               
call vundle#begin()     

Tiếp theo, ta cần thay đổi runtime path của vim, thêm vào folder vundle ta đã clone về từ Github (~/.vim/bundle/Vundle.vim). Sau đó, ta gọi đến function khởi tạo của vundle. Từ đây, bạn có thể cài đặt bất kì plugin nào bạn muốn. Ngoài khả năng quản lý các plugin hiện có trong máy, Vundle còn có khả năng liên kết với phiên bản online của các plugin, cho phép tự động cập nhật plugin. Bạn có thể xem danh sách các plugin tại đây: http://vimawesome.com/

" let Vundle manage Vundle, required                                            
Plugin 'VundleVim/Vundle.vim'    
// Các plugin khác sẽ được đặt vào đây.

Việc cài đặt các plugin khá đơn giản, bạn chỉ cần thêm:

Plugin 'tên user/tên repo'

Ví dụ mình muốn cài plugin ctrlp tại đây: https://github.com/kien/ctrlp.vim, mình chỉ cần thêm:

Plugin 'kien/ctrlp.vim'

Sau đó gõ :PluginInstall là xong.
Sau này nếu muốn xóa plugin chỉ cần xóa dòng có plugin đó, rồi :PluginClean, xong.

call vundle#end()            " required                                         
filetype plugin indent on    " required    

Cuối cùng, ta cần bật lại tính năng “filetype” mà ta đã tắt từ đầu. Tất cả các plugin đều phải được cài đặt giữa 2 dòng: call vundle#begin()call vundle#end(). Kể từ sau dòng này, ta có thể thêm các settings khác nếu thích. Sau khi kết thúc, lưu và đóng file .vimrc, (:wq hoặc ZZ). Một tip khi dùng ~/.vimrc là bạn có thể bind key để mở nhanh nó, ví dụ mình gõ ev để mở vimrc từ bất cứ đâu:

nmap ev :tabedit $MYVIMRC<CR>

Các Plugin thường dùng

Các plugin mình hay dùng, list này chỉ mang tính chất giới thiệu, bạn có thể khám phá thêm rất nhiều plugin nữa ở trang vimawesome:

Plugin 'tpope/vim-fugitive'                                                     
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}                                      
Plugin 'ascenator/L9', {'name': 'newL9'}                                        

Plugin 'scrooloose/nerdtree'                                                    
Plugin 'mattn/emmet-vim'                                                        
Plugin 'easymotion/vim-easymotion'          
Plugin 'wincent/command-t'                                    
Plugin 'ctrlpvim/ctrlp.vim'                                                     
Plugin 'freeo/vim-kalisi'     
Plugin 'w0ng/vim-hybrid'                                                         
Plugin 'Valloric/YouCompleteMe'

vim-fugitive: Git wrapper, add, commit và push code ngay trong vim mà không cần nhảy ra command line.
Sparkup: Expand snippet của html, tương tự emmet, chỉ cần bấm Ctrl + E.
L9: Vim-script library, cung cấp một số tính năng hữu ích và lệnh để lập trình trong vim.
NERDTree: Không cần phải nói, đây là một trong những plugin must-have của vim. Bình thường vim lúc nào cũng chỉ nhìn thấy một file, có NERDTree bạn sẽ có thêm lựa chọn, bookmark và điều hướng nhanh hơn.

Mình thường bind key Ctrl + N để mở nhanh NERDTree menu, và phím ? để bật/tắt hướng dẫn, thêm dòng này vào ~/.vimrc.

map <C-n> :NERDTreeToggle<CR>

Emmet: Plugin này quá nổi tiếng rồi.
Easymotion: điều hướng nhanh hơn trong vim. Điểm mấu chốt trong việc dùng vim là dùng ít các keystrokes hay gõ ít phím nhất có thể để đạt được mục đích.
alt text

Command-t, ctrlp: Tìm nhanh một file nào đó trong đống code base.
alt text

Vim-kalisi, vim-hybrid: Cài theme cho vim. Thêm dòng này vào file ~/.vimrc:

set t_Co=256                                                               
set background=light                                                       
colorscheme kalisi                                                         
set term=screen-256color " fix background color erase 

YouCompleteMe: Một plugin must-have nữa khi dùng vim, để hỗ trợ auto complete cho code. Sau khi bạn cài plugin xong, cần phải compile để support các ngôn ngữ mà máy bạn đang dùng. Có thêm --clang-completer để hỗ trợ các ngôn ngữ dòng C. (C++, python...)

$ cd ~/.vim/bundle/YouCompleteMe
$ ./install.py --clang-completer

Ngoài ra, để chạy được cần phải có thêm file .ycm_extra_conf_openframeworks.py, bạn có thể tải về từ đây và copy vào folder: ~/.vim/.ycm_extra_conf_openframeworks.py
alt text

File ~/.vimrc của mình ở đây:
https://github.com/mocmeo/dotfiles/blob/master/vimrc

Vậy là ta đã đi hết các bước để tạo ra môi trường lập trình cho Vim. Từ đây, bạn đã có thể bắt tay vào code luôn được rồi ;3 Nên nhớ rằng ngoài kia còn rất nhiều vim plugin đang chờ đợi bạn khám phá và đây mới chỉ là khởi đầu của cuộc hành trình. Happy vimming.

lamngo 15-01-2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lâm Ngô

1 bài viết.
7 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Bài viết liên quan
White
1 2
Hướng dẫn cài đặt Eclipse IDE trên Ubuntu Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt Eclipse trên Ubuntu. Ở đây mình sẽ sử dụng Ubuntu...
Nguyễn Tuấn Anh viết hơn 1 năm trước
1 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
1 bài viết.
7 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!