VIM常用技巧總結


其實早就想整這篇總結了,一直沒有時間寫,鑒於李老板的強烈要求,今天更新上來。

VIM作為linux環境下一個非常強大的工具,其實是非常實用了,尤其是對於代碼量龐大的項目來講,簡直就是福音。無法想象在一個集成IDE里面添加幾萬甚至百萬個文件個文件時,你還能指望IDE能夠快速的進行代碼的快速瀏覽跳轉,但是VIM就可以輕松做到。

在默認安裝的VIM中,其實沒有帶多少插件,但其自帶的基本功能,也能滿足普通的文本編輯需求。但是如果是經常使用VIM來查看閱讀代碼,那必須對默認的VIM進行一些強化,才能使其用起來更加順手和方便。

本文所描述的一些使用技巧,很多都是在各種VIM插件的基礎上進行操作的,如果沒有這些操作的支持,你可能無法在你的機器上面進行這些操作。不過沒有關系,我已經把自己的VIM配置上傳到github上,你可以直接下載下來使用,也可以對其進行修改以適配你自己的使用習慣。下面我分兩部分來介紹vim的基本操作,當前這里不會介紹VIM的所有功能,只是介紹一些平常經常使用的基本操作。

1. VIM基本功能

其實VIM本身就已經自帶的非常多的功能,這些操作基本是純鍵盤操作,對應習慣了Window環境的人來說,其實是很難習慣的。但是,一旦你習慣vim的操作后,將會發現它直接非常的實用,非常強大。

1.1 VIM的常用模式

  • 正常(normal)模式:默認的編輯模式;下面如果不加特殊說明,提到的命令都直接在正常模式下輸入“:”,任何其它模式中都可以通過鍵盤上的 Esc 鍵回到正常模式。
  • 命令(command)模式:用於執行較長、較復雜的命令;在正常模式下輸入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)即可進入該模式;命令模式下的命令要輸入回車鍵(Enter)才算完成。
  • 插入(insert)模式:輸入文本時使用;在正常模式下鍵入“i”(insert)或“a”(append)即可進入插入模式(也有另外一些命令,如“c”,也可以進入插入模式,但這些命令有其它的作用)。
  • 可視(visual)模式:用於選定文本塊;可以在正常模式下輸入“v”(小寫)來按字符選定,輸入“V”(大寫)來按行選定,或輸入“Ctrl-V”來按方塊選定

1.2 基本移動

下面幾個命令需要在normal模式執行

  • h:光標左移一個位置
  • j:光標右移一個位置
  • k:光標上移一個位置
  • l:光標下稱一個位置
  • gg:光標跳轉到文件首行
  • G:光標跳轉文件最后一行
  • _:光標移到當前行第一個非空字符位置
  • 行號+gg:快速移動到指定行號
  • 數字+h/j/k/l:快速將光標向左、下、上、右移動指定個位置

1.3 窗口操作

窗口分割

  • :vsp:橫向窗口分割
  • :sp:縱向窗口分割
  • ctrl+w+h:將光標切換到左邊窗口
  • ctrl+w+j:將光標切換到下邊窗口
  • ctrl+w+k:將光標切換到上邊窗口
  • ctrl+w+l:將光標切換到右邊窗口
  • ctrl+w:在已打開窗口中循環切換光標
  • :resize +3:縱向擴大窗口大小
  • :resize -3:縱向減小窗口大小
  • :vertical resize +3:橫向擴大窗口大小
  • :vertical resize -3:橫向減小窗口大小

調整窗口大小

  • :resize +3:縱向擴大窗口大小
  • :resize -3:縱向減小窗口大小
  • :vertical resize +3:橫向擴大窗口大小
  • :vertical resize -3:橫向減小窗口大小

1.4 粘貼與復制

normal模式下,撤下 i 鍵進入insert模式,此時可以直接編輯當前文件。 normal模式下的幾個基本文件編輯操作:

  • y:復制當前光標所在處字符
  • yy:復制當前光標所在行
  • p:在當前位置粘貼上一次復制的內容

先按下v鍵進入view模式,通過移動h/j/k/l鍵選擇要復制的內容,再按下y鍵可復制單詞或整段文件,然后移動光標至目標位置,再使用p進行粘貼。

1.5 文件瀏覽

  • :Explore或:E:打開VIM默認的文件瀏覽器

1.6 VIM快捷鍵大全

網上搜集的VIM常用快捷鍵匯總圖,非常實用。

 

 

2. VIM私人定制

前面介紹了VIM的一些常用的基本的操作,其實這些只是VIM的基本入門操作,它還有很多其他的操作和功能,這里不詳細介紹,有需要的朋友,可以直接:help查看VIM的幫忙以學習更多的操作方法。

下面開始我們的定制部分,這一部分主要介紹一些常用的VIM插件。沒有安裝插件的VIM已經為我們提供了相當多的功能,但是有些功能用起來非常難受。好在大牛們針對VIM開發了很多實用插件,這大大簡化了VIM的操作。下面主要介紹一些平常開發中常用的插件的使用方法。

我的VIM配置:https://github.com/tshfut/tSuai_vim

我自己設置的幾個常用快捷鍵:

  • F2:打開左側的文件列表
  • F3:打開類視圖,即查看當前文件的類及其成員屬性(在右側)
  • F4:查看當前已打開的文件列表
  • F5:在當前文件中快速查找函數並
  • F6:在當前目錄中快速查找文件(模糊搜索)
  • \+m:(取消)高亮光標當前所在詞
  • \+n:取消所有高亮詞
  • \+nm:設置不顯示行號
  • \+mn:設置顯示行號
  • \+rr:將左側的文件目錄樹切換到當前文件所在目錄
  • \+ff:從vim進入命令行狀態,以exit命令兩次回到vim狀態
  • \+jj:切換到深色模式
  • \+ll:切換至淺色模式
  • \+s:查看當前光標所在行的git提交記錄(changeid,author,time等)
  • :ag:在當前目錄中搜索光標所在處詞出現的地方
  • w+,:橫向減小窗口
  • w+.:橫向擴大窗口
  • w+=:縱向增大窗口
  • w+-:縱向減小窗口
  • ctrl+\+s/g/c/t/e/f/i/d:快速代碼跟蹤命令,依賴cscope插件創建的tag文件
  • g+]:跳轉到函數出現的地方,依賴於ctag創建的tags文件

 

2.1 主題定制

VIM默認提供了很多主題,但我獨愛Visual studio的默認淺色主題,而這個主題VIM里面卻沒有,無賴只能自己動手定制,只需要找一個已經存在的vim主題,copy一份放到.vim/colors目錄下,然后根據里面的配置選項,設置自己喜歡的顏色即可。

配置好后,直接在.vimrc文件里面將自己的VIM主題設置為默認即可:  colorscheme Porsche

colorscheme space-vim-dark

我自己的經常使用的vim主題主要有兩個,一個淺色(類似Visual Studio),一個深色(space-vim-dark),都放下github上面了地址:

https://github.com/tshfut/Porsche

    上兩個配色截圖:

  

2.2 NERDTree文件瀏覽

    前面介紹了,使用:Explore命令可以查看文件目錄樹,但仍然覺得不方便,可以使用NERDTree插件來替代,NERDTree提供了非常好的文件目錄可視化操作,支持文件展開、文件夾/文件區分標識等。

    相關的配置如下:

"let g:NERDTree_title='NERD Tree'
"let g:winManagerWindowLayout='NERDTree|TagList,Tarbar'
nmap <silent> mt :if IsWinManagerVisible() <BAR> WMToggle<CR> <BAR> else <BAR> WMToggle<CR>:q<CR> endif "<CR>
nmap wm :NERDTreeToggle<cr>
autocmd vimenter * NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") ) | q | endif

function! NERDTree_Start()
    exec 'NERDTree'
endfunction


function! NERDTree_IsValid()
    return 1
endfunction

 

    使用效果如下圖所示:

 

2.3 EasyMotion快速移動

如果只使用h/j/k/l進行移動,難免顯得有些慢,當然,可以也VIM的鼠標控制,利用鼠標來移動光標,但是這就失去了鍵盤操作帶來的一致性。EasyMotion這個插件很好的解決了屏幕顯示范圍內,精准快速移動光標的問題。其他使用方法很簡單:

1. 首先按 s 鍵,然后輸入想要跳轉的位置的前兩個字母,此時屏幕會高亮提示所有匹配的位置

2. 根據屏幕提示,輸入目標位置對應的標記,就可以直接跳轉到對應位置

 使用效果圖如下,我先是查找了有ng關鍵字的位置,下面:

2.3 mark單詞高亮

這里的單詞高亮,不是vim里面的語法高亮,高亮指定詞。插件mark.vim提供了非常棒的單詞高亮,默認支持5個高亮顏色,其實可以自己再添加,我又添加了5個,10個基本上已經夠用。

使用方法:

  • \+m高亮(或取消高亮)光標所在詞
  • \+n取消所有高亮詞

    使用效果如下圖所示,高亮了函數的3個入參,極大的方便了代碼閱讀:

 

2.4  fzf文件模糊搜索

對於類似android源碼這樣的巨型項目來講,在眾多的源文件中搜索某個文件是非常痛苦的。然而,fzf這個模糊搜索工具很好的解決了這個問題,fzf並不是vim插件,但是他可以無縫的與vim進行配合使用。

安裝好fzf后,直接在vim中執行:fzf命令,即可進行快速文件查找。

 

2.5 bufexplorer已打開文件列表查詢

通常,我們需要在vim中同時打開多個,在多個文件之間進行來回切換時,vim自帶的功能可以實現,但是並不是很方便,幸好有bufexplorer.vim,他可以幫忙我們快速地查看已經打開了的文件列表,如下圖所示:

bufexplorer下載地址:https://www.vim.org/scripts/script.php?script_id=42

 

2.6 airline標題和狀態欄

       一般的IDE工具,都會有一個tab列表,標識不同的文件;還有一個狀態欄,顯示當前編輯文件或項目的一些狀態信息。Airline給VIM帶來了一個非常漂亮的狀態欄,該狀態可以顯示很多信息:當前文件所有的git分支、文件名、光標所在函數名、文件總行數、當前光標所在行,當前vim所處模式等等,最上面還有一個已經打開的文件buffer列表(可惜無法直接用鼠標點擊進行切換)。使用效果如下圖所示:

 

2.7 Ctrlp

Ctrlp是Vim的模糊搜索工具,支持文件,緩沖區,MRU(Most Recently Used)文件和標簽等的搜索,也支持通過正則表達式搜索(Ctrl-r進行切換),同類軟件還有 command-t,fzf等。ctrlp在速度上雖然有些遜色,但擴展性好,而且因為是由純vimscript實現的,因此依賴少配置簡單。

 

2.8 Ctags和Cscope

 待補充

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM