Vim配置、外掛和使用技巧
常言道:工欲善其事,必先利其器 ,作為一個程式設計師,一個常用的工具就是編輯器,我選擇一個能極大提高自己開發效率的編輯器vim(有些人可能選擇emacs)。而vim編輯器方面具有以下幾種特性:
-
跨平臺及統一環境
無論是在windows還是在*nix,vim是一個很完美的跨平臺文字編輯器,甚至可以直接在伺服器平臺CentOS,Ubuntu等直接配置使用,配置檔案大同小異,操作習慣基本相同。
-
定製化及可擴充套件
vim提供一個vimrc的配置檔案來配置vim,並且自己可以定製一些外掛來實現檔案瀏覽(NERD Tree),程式碼補全(YouCompleteMe,語法檢查(syntastic),檔案模糊搜尋(ctrlp),顯示vim狀態列(Vim Powerline),主題顏色(Molokai),顯示檔案結構(tagbar)等多種功能。
-
高效命令列
使用vim編輯文字,只需在鍵盤上操作就可以,根本無需用到滑鼠。就拿游標移動來說,與重複擊鍵、一個字元一個字元或一行一行移動相比,按一次鍵就能以詞、行、塊或函式為單位移動,效率高得多。有時一些重複刪除、粘帖的操作,也只需一條命令就可以完成,甚至你可以用鍵對映來簡化或組合多種命令來提高效率。
配置
如果你需要配置vim,只需在Home目錄建立一個~/.vimrc檔案即可以配置vim了,可以參考我的vimrc配置檔案。由於我需要安裝外掛,並且將需要安裝的外掛列表分離到另外一個檔案~/.vimrc.bundles,這個檔案也是存放在Home目錄,檔案內容可以參考vimrc.bundles。若想載入~/.vimrc.bundles檔案,必須在~/.vimrc檔案加入以下程式碼片段:
if filereadable(expand("~/.vimrc.bundles")) source ~/.vimrc.bundles endif
外掛
外掛管理工具vunble
vundle是vim的外掛管理工具,它能夠搜尋、安裝、更新和移除vim外掛,再也不需要手動管理vim外掛。
- 在Home目錄建立~/.vim目錄和.vimrc檔案(可複製我的vimrc檔案)
-
安裝vundle
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
-
在.vimrc配置檔案中新增vundle支援
filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc()
但實際上我是新增一個~/.vimrc.bundles檔案來儲存所有外掛的配置,必須在~/.vimrc檔案加入以下程式碼片段:if filereadable(expand("~/.vimrc.bundles")) source ~/.vimrc.bundles endif
而~/.vimrc.bundles檔案內容必須包含:filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc()
你可以複製到我~/.vimrc.bundles檔案到Home目錄。
安裝外掛
bundle分為三類,比較常用就是第二種:
- 在Github vim-scripts 使用者下的repos,只需要寫出repos名稱
- 在Github其他使用者下的repos, 需要寫出”使用者名稱/repos名”
- 不在Github上的外掛,需要寫出git全路徑
將安裝的外掛在~/.vimrc配置,但是我是將外掛配置資訊放在~/.vimrc.bundles:
" Define bundles via Github repos Bundle 'christoomey/vim-run-interactive' Bundle 'Valloric/YouCompleteMe' Bundle 'croaky/vim-colors-github' Bundle 'danro/rename.vim' Bundle 'majutsushi/tagbar' Bundle 'kchmck/vim-coffee-script' Bundle 'kien/ctrlp.vim' Bundle 'pbrisbin/vim-mkdir' Bundle 'scrooloose/syntastic' Bundle 'slim-template/vim-slim' Bundle 'thoughtbot/vim-rspec' Bundle 'tpope/vim-bundler' Bundle 'tpope/vim-endwise' Bundle 'tpope/vim-fugitive' Bundle 'tpope/vim-rails' Bundle 'tpope/vim-surround' Bundle 'vim-ruby/vim-ruby' Bundle 'vim-scripts/ctags.vim' Bundle 'vim-scripts/matchit.zip' Bundle 'vim-scripts/tComment' Bundle "mattn/emmet-vim" Bundle "scrooloose/nerdtree" Bundle "Lokaltog/vim-powerline" Bundle "godlygeek/tabular" Bundle "msanders/snipmate.vim" Bundle "jelera/vim-javascript-syntax" Bundle "altercation/vim-colors-solarized" Bundle "othree/html5.vim" Bundle "xsbeats/vim-blade" Bundle "Raimondi/delimitMate" Bundle "groenewege/vim-less" Bundle "evanmiller/nginx-vim-syntax" Bundle "Lokaltog/vim-easymotion" Bundle "tomasr/molokai" Bundle "klen/python-mode"
開啟vim,執行:BundleInstall或在shell中直接執行vim +BundleInstall +qall
常用外掛
NERD Tree
NERD Tree是一個樹形目錄外掛,方便瀏覽當前目錄有哪些目錄和檔案。
我在~/.vimrc檔案中配置NERD Tree,設定一個啟用或禁用NERD Tree的鍵對映
nmap <F5> :NERDTreeToggle<cr>
所以你只需按F5鍵就能啟用或禁用NERD Tree,NERD Tree提供一些常用快捷鍵來操作目錄:
- 通過hjkl來移動游標
- o開啟關閉檔案或目錄,如果想開啟檔案,必須游標移動到檔名
- t在標籤頁中開啟
- s和i可以水平或縱向分割視窗開啟檔案
- p到上層目錄
- P到根目錄
- K到同目錄第一個節點
- P到同目錄最後一個節點
YouCompleteMe & syntastic
YouCompleteMe是一個快速、支援模糊匹配的vim程式碼補全引擎。由於它是基於Clang引擎為C/C++/Objective-C提供程式碼提示,也支援其他語言程式碼提示的引擎,例如基於Jedi的Python程式碼補全,基於OmniSharp的C#程式碼補全,基於Gocode的Go程式碼補全。
只需敲入程式碼,就自動提示想輸入的程式碼列表,你可以選擇其中一個,然後tab鍵就可以補全程式碼。
YouCompleteMe已經整合了Syntastic,所以一旦你編寫程式碼時語法錯誤,就會有紅色錯誤提示
ctrlp
不知道你有沒有遇到這樣一種情況:在大規模的工程專案中,目錄和檔案巢狀比較深,開啟一個檔案要逐個逐個進入目錄才能開啟,這樣的話,比較耗時間和效率很低,ctrlp重新定義打目錄和檔案方式,特別適用於大規模專案檔案的瀏覽。
啟用ctrlp
- 執行命令:CtrlP或:CtrlP [starting-directory]來以查詢檔案模式來啟用 ctrlp
- 執行命令:CtrlPBuffer或:CtrlPMRU來以查詢緩衝或最近開啟檔案模式來啟用ctrlp
- 執行命令CtrlPMixed來查詢檔案、查詢緩衝和最近開啟檔案混合模式來啟動 ctrlp
基本使用
- 按<c-f>和<c-b>在三種查詢模式中互相切換
- 按<c-y>來建立新檔案和對應的父目錄
- 按<c-d>來切換到只查詢檔名而不是全路徑
- 按<c-j>,<c-k>或箭頭方向鍵來移動查詢結果列表
- 按<c-t>或<c-v>,<c-x>來以新標籤或分割視窗的方式來開啟檔案
- 按<c-z>來標識或取消標識檔案,然後按<c-o>來開啟檔案
- 按<c-n>,<c-p>來在提示歷史中選擇下一個/上一個字串
演示視訊
具體如何使用ctrlp,請參考happypetterd的演示視訊,講解非常清楚。
Vim Powerline
Vim Powerline是一個顯示vim狀態列外掛,它能夠顯示vim模式、操作環境、編碼格式、行數/列數等資訊
Molokai
Molokai是vim顏色主題,效果如下
常用命令
對於入門vim基本命令可以參考 簡明 Vim 練級攻略,以下是本人關於移動游標、插入/修改、刪除、複製、粘帖、撤銷和恢復等常用命令
-
移動游標
對於在行內移動,通過使用f/F + 字元來移動到特定的字元,然後再使用. 來重複執行命令;f表示向前移動,F表示向後移動。如果想直接移動到行首或行尾,使用^或$
對於在多行移動,就有多種選擇:第一種是通過gg,G,行數 + G指定行數來移動,gg表示移動檔案的第一行,G表示移動檔案的最後一行,行數 + G表示移動到特定的行。第二種就是通過正則搜尋的方式來移動,/string表示正向查詢,?string表示反向查詢,n查詢下一個匹配的結果,N表示上一個匹配的結果,按up/down可以瀏覽搜尋歷史。第三種就是使用標記來移動,m + {a-z}標記位置(適用於單個檔案,如果是多個檔案,使用大寫字母{A-Z}),`{mark}移動到標記位置的列,'{mark} 移動到標記位置的行首,還有一些特殊的標記,'表示跳轉前游標的位置
-
選擇文字
v不規則選擇
V按行選擇
Ctrl + V按列選擇 -
插入/修改
i在當前字元前面插入
I在行首插入
a在當前字元後面插入
A在行尾插入
o在當前行的下一行插入
O在當前行的上一行插入r更改當前的字元
R更改多個字元
cw/caw更改單詞
cf + 字元更改從當前字元到指定字元
c$更改從當前字元到行尾
cc更改整行 -
刪除
x刪除字元
df + 字元刪除從當前字元到指定字元
dw/daw刪除單詞
d$刪除從當前游標到行尾
dd刪除一行 -
剪下與粘帖
dd + pdelete一行,然後放在當前游標下方
dd + Pdelete一行,然後放在當前游標上方
dw + p delete單詞,然後放在當前游標後面
dw + P delete單詞,然後放在當前游標前面
p/P可接受計數字首,重複貼上 -
複製
yw複製單詞
yf複製從當前字元到指定字元
y$複製當前游標到行尾
yy複製整行 -
撤銷和恢復
u撤銷
ctrl + r重做 -
重複操作
數字+action表示執行某個操作多少次
.重複上一個操作 -
巨集錄製
q + 暫存器(a-z)開始錄製
錄製動作
q停止錄製
@ + 暫存器 / @@replay被錄製的巨集
擴充套件閱讀
-
Vim配置
從零搭建和配置OSX開發環境
將你的Vim 打造成輕巧強大的IDE -
Vim外掛
vim中的殺手級外掛: vundle
誰說Vim不是IDE?(三)
vim中的殺手級外掛: YouCompleteMe -
Vim入門和使用技巧
簡明 Vim 練級攻略
相關文章
- vim配置檔案和外掛
- 使用Vundle管理配置Vim的外掛
- 無外掛Vim程式設計技巧程式設計
- 如何使用 Ansible 配置 Vim並安裝外掛
- vim自動補全外掛配置
- vim 外掛:perl-support的修改和使用
- vim外掛 NERDTree安裝使用
- 配置vim外掛遇到youcompleteme外掛問題解決方案
- Vim常用外掛安裝及配置方法
- Vim 外掛管理
- VIM外掛AutoClose
- vim幾款外掛使用記錄
- vim外掛的安裝方式 -- vim註釋外掛和doxygen函式註釋生成外掛-ctrlp外掛-tabular等號對齊 外掛...函式
- 如何使用Python編寫vim外掛Python
- vim外掛之Taglist
- 關於vim外掛
- 如何管理 Vim 外掛
- Vim外掛入門
- VIM 外掛安裝
- vim的外掛SuperTab
- eclipse vim外掛Eclipse
- vim進階 | 使用外掛打造實用vim工作環境
- VIM 程式碼片段外掛 Ultisnips 使用教程
- 如何安裝 Vim 外掛
- vim 外掛的安裝
- vim外掛的安裝
- Vim-plug:極簡 Vim 外掛管理器
- VIM 搜尋命令使用方法和技巧
- Shell(一):功能、配置和外掛
- Notepad++ 使用技巧與外掛
- 如何優雅地使用 VIM 檔案管理外掛 NERDTree
- Vim基礎使用技巧
- 圖片載入外掛imagesLoaded的配置和使用
- 5 個好用的開發者 Vim 外掛
- 關於vim的實用外掛
- python vim外掛是什麼Python
- 實用!開發者的 Vim 外掛(一)
- 實用!開發者的 Vim 外掛(二)