1. 程式人生 > >spf13-vim常用快捷鍵、功能

spf13-vim常用快捷鍵、功能

spf13-Vim
事實上只需在Vim裡:help plugin_name就可以檢視幫助內容。
順帶說一下,<Leader>是自定義的一個快捷鍵。spf13-vim預設是逗號:在.vimrc裡面可以更改。

NERDCommenter註釋工具

快捷鍵       功能
,cc         註釋一行
,cu         取消註釋一行
,ca         在兩種註釋符之間切換,如/**///
,cm         以block的最簡方式註釋一段程式碼
,c<Space>   切換當前行或選中內容是否註釋,根據首行判斷
,ci         以獨立註釋單行的方式 註釋選中的每一行, 註釋模式取決<Leader>ca
,cs         有格式地註釋, 以block
的常規方式註釋一段程式碼 ,cy 複製內容,然後註釋 ,cA 在行尾巴追加註釋,註釋模式取決於<Leader>ca ,cl 在行首添加註釋符並進入insert mode

NERDTree檔案導航工具

快捷鍵     功能
Ctrl+e      開啟/關閉NERDTree
?           顯示快速幫助
o或Ctrl+R    開啟檔案、目錄和書籤
go          開啟選中檔案,不過游標仍在NERDTree中
t           在新tab中開啟選中節點/書籤
T           功能與t相同,不過焦點仍在當前tab
i           在新split開啟選中檔案
gi          與i相同,不過游標仍在NERDTree中
s           在新vsplit中開啟選中檔案
gs          與s相同,不過游標仍在NERDTree中
O
開啟選中目錄所有子目錄 x 關閉當前節點父節點 X 關閉當前節點所有子節點 D 刪除當前書籤 P 跳到根節點 p 跳到當前節點父節點 K 跳到本層級第一個節點 J 跳到本層級最後一個節點 C 設定選中目錄為根結點 u 根結點向上跳出一級 U 與u相同,只是老根結點保持開啟 r 重新整理當前目錄所有子目錄 R 重新整理當前根目錄所有子目錄 m 顯示NERDTree的選單 cd 將當前工作目錄改為選中節點 CD 將根結點改為當前工作目錄 f 切換是否開啟檔案過濾 F 切換是否顯示檔案 B 切換書籤列表是否顯示 A 最大最小化NERDTree視窗

ctrlp搜尋file/buf/mru/tag工具

mru是Most Recently Used。

快捷鍵                         功能
Ctrl+p                          開啟ctrlp並定位在file mode
?                               檢視幫助
F5                              重新整理當前目錄
Ctrl+f,Ctrl+d                   在mode間左右切換
Ctrl+r                          切換正則表示式mode
Ctrl+j,Ctrl+k                   在搜尋結果間上下移動
Ctrl+t                          在新tab開啟選中結果
Ctrl+v                          在新vsplit開啟選中結果
Ctrl+x                          在新split開啟選中結果
Ctrl+z then Ctrl+o              先標記多個檔案,然後一起開啟
…                               向上跳一層級
:25                             跳轉到檔案第25行
:/any\:\ string                 跳轉到第一個any: string
:+setfiletype\ myfiletype|25    將檔案型別設為myfiletype並跳轉到第25行
:diffthis                       對前4個用Ctrl+z標記的檔案比較不同

Surround處理所有”’{[()]}’”等

最適用於HTML/XML檔案。

快捷鍵 功能
ds.     刪除包圍結構。當游標在(Hello *world)中處於*位置時按ds)會得到結果Hello world!
cs.     改變包圍結構。當游標在(Hello *world)中處於*位置時按cs)]會得到結果[Hello world!]
ysiw.   包圍當前詞。當游標在Hello w*orld中處於*位置時按ysiw)會得到結果Hello (world)!
yss.    包圍當前行。當游標在Hello w*orld中處於*位置時按yss)會得到結果(Hello world!)

neocomplcache自動補全工具

快捷鍵                    功能
Ctrl+u或Ctrl+n或Ctrl+p    在原始輸入與補全方案間切換

Fugitive整合git工具

快捷鍵 功能
,gs     檢視git狀態:Gstatus
,gd     :Gdiff
,gc     :Gcommit
,gb     :Gblame
,gl     :Glog
,gp     :Git push

[Tabularize]對齊工具

[Tagbar]Tag工具

使用前要先安裝exuberant-ctags。執行命令sudo apt-get install exuberant-ctags。

在你的專案根目錄執行下面的命令:
ctags -R *

快捷鍵     功能
Ctrl+]      跳轉到定義處
Ctrl+t      返回
,tt         開啟關閉tagbar,顯示當前檔案函式列表,變數列表、屬性等
?           顯示幫助
p           跳轉到tag所在處,游標留在tagbar
P           在預覽視窗開啟tag
Space       顯示tag宣告
o           切換資料夾開啟關閉狀態,在摺疊與展開間切換
zj          跳轉到下一資料夾
zk          跳轉到上一資料夾
s           改變排序方式,一次s,則讓標籤按字典排序,再一次s,則按照檔案內出現順序排序
x           最大最小化視窗
q           關閉視窗
+           展開標籤內容
-           摺疊標籤內容
*           展開所有標籤
=           摺疊所有標籤
x           是否展開tagbar標籤欄,x展開,再一次x,則縮小標籤欄
<F1>        切換快捷鍵幫助頁面,F1一次出現快捷鍵幫助頁面,在一次F1,快捷鍵幫助頁面隱藏。

EasyMotion跳轉工具

快捷鍵     功能
,,w         跳轉到當前游標前的位置(w)
,,b         跳轉到當前游標後的位置(b)
,,s         搜尋跳轉(s),雙向跳轉
,,j或,,k    行級跳轉(jk)
,,h或,,l    行內跳轉(hl)

順帶說一下,<Leader>是自定義的一個快捷鍵。spf13-vim預設是逗號:在.vimrc裡面可以更改。

cscope

在你的專案根目錄執行下面的命令:
cscope -Rbq

下表中列出了cscope的常用選項:
-R:     在生成索引檔案時,搜尋子目錄樹中的程式碼
-b:     只生成索引檔案,不進入cscope的介面
-q:     生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度
-k:     在生成索引檔案時,不搜尋/usr/include目錄
-i:     如果儲存檔案列表的檔名不是cscope.files時,需要加此選項告訴cscope到哪兒去找原始檔列表。可以使用"-",表示由標準輸入獲得檔案列表。
-Idir:  在-I選項指出的目錄中查詢標頭檔案
-u:     掃描所有檔案,重新生成交叉索引檔案
-C:     在搜尋時忽略大小寫
-Ppath: 在以相對路徑表示的檔案前加上的path,這樣,你不用切換到你資料庫檔案所在的目錄也可以使用它了。

"cscope add"命令(或cs add)
 使用方法:
  :cs add {file|dir} [pre-path] [flags]
其中:
  [pre-path] 就是以-p選項傳遞給cscope的檔案路徑,是以相對路徑表示的檔案前加上的path,這樣你不要切換到你資料庫檔案所在的目錄也可以使用它了。
  [flags] 你想傳遞給cscope的額外旗標
例項:
  :cscope add /project/vim/cscope.out

"cscope find"命令(或cs find)
使用方法:
  :cs find {querytype} {name}
其中:
  {querytype} 即相對應於實際的cscope行介面數字,同時也相對應於nvi命令:

  0s: 查詢符號(C語言符號,即查詢函式名、巨集、列舉值等出現的地方)
  1g: 查詢全域性定義(函式、巨集、列舉等定義的位置,類似ctags所提供的功能)
  2d: 查詢被這個函式呼叫的函式
  3c: 查詢呼叫這個函式的函式
  4t: 查詢指定的字串
  6e: 查詢egrep模式,相當於egrep功能,但查詢速度快多了
  7f: 查詢並開啟檔案,類似vim的find功能

例項:(#號後為註釋)
  :cscope find c my_printf          # 查詢所有呼叫這個函式的函式(們)
  :cscope find 3 my_printf          # 和上面結果一樣

其他命令  
:cs help                            # 顯示一個簡短的摘要。
:cs kill {num|partial_name}         # 殺掉一個cscope連結(或者殺掉所有的cscope連結)
:cs reset                           # 重新初始化所有的cscope連結。
:cs show                            # 顯示cscope的連結

cscope幫助命令列表

反覆按回車鍵(Enter),以移動到所需的輸入欄位, 輸入要搜尋的模式, 然後按回車鍵(Enter).  對於前四和最後兩個輸入欄位,模式可以是regcomp(3)正則表示式。

如果搜尋成功,您可以使用這些單字元命令:

0-9a-zA-Z       編輯包含顯示行的檔案。
space bar       顯示下一組匹配的行。
+               顯示下一組匹配的行。
^V              顯示下一組匹配的行。
-               顯示先前的匹配行。
^E              編輯所有行。
>               把顯示的行列表,寫到一個檔案中。
>>              把顯示的行列表,增補到一個檔案中。
<               從檔案中讀行。
^               通過shell命令過濾所有行。
|               將所有行輸送到shell命令。

在任何時候,您都可以使用這些單字元命令:(^表示Ctrl鍵)

TAB             在輸入和輸出區域之間交換位置。
RETURN          移動到下一個輸入欄位。
^N              移動到下一個輸入欄位。
^P              移動到上一個輸入欄位。
^Y / ^A         用最後的樣式型別搜尋
^B              退到以前的輸入欄位和搜尋模式。
^F              退到下一個輸入欄位和搜尋模式。
^C              在搜尋(使用)時切換忽略/使用字母大小寫。
^R              重建交叉引用,即重回到搜尋介面
!               啟動互動式shell (type ^D to return to cscope).
^L              螢幕重繪
?               顯示此命令列表。
^D              退出 cscope.

注意: 如果您想要搜尋匹配某個命令模式的第一個字元,首先鍵入一個“\”字元
注意: 一些ctrl鍵可能被終端配置佔用。

cscope file does not exist 錯誤解決

方法一:

在~/.bashrc中新增如下程式碼:(對於~/.cshrc檔案, 注意把等號=, 改成空格)

alias mkcscopefile='find `pwd` -name "*.[ch]" -o -name "*.cpp" > cscope.files'  
alias mktag='ctags -R *; cscope -Rb'  
方法二:

建立python檔案,名為gen_cscope_files.py, 程式碼如下,該檔案放在哪裡都行。
比如我放在/home/code/gen_cscope_files.py
在要生成cscope.files的地方執行python ~/code/gen_cscope_files.py即可,然後再執行cscope -Rb

python指令碼gen_cscope_files.py :

#!/bin/python

import os

save_file = open("cscope.files", 'w')

for root, dirs, list in os.walk("./"):
    for i in list:
        cur_path = os.path.abspath(root)
        file_path = cur_path + '/' + i

        save_file.write(file_path+'\n')

save_file.close()