ctags -R -I THROW -I attribute_pure -I nonnull -I attribute --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/c.tag /usr/include/ --exclude=/usr/include/python2.7/ html
set tags+=~/.vim/tags/c.tagpython
ctags file_name1.c filename2.c filename3.h來產生ctags文件或者ctags .c .hlinux
ctags默認使用這個命令,--exclude要排除的文件,--links針對符號連接是否延伸,使用-n參數表示用行號索引,一旦更改源文件行號容易變,須要從新生成請添加連接描述ctags默認使用這個命令,--exclude要排除的文件,--links針對符號連接是否延伸,使用-n參數表示用行號索引,一旦更改源文件行號容易變,須要從新生成請添加連接描述c++
在源碼目錄下經過命令make tags(也可以使用:ctags -R)生成標籤文件 shell
cscope -Rbqk
k跳過/usr/include/*vim
爲了使得字段補全有效,在生成tags時須要一些額外的參數,推薦的c++參數主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
選項c++-kinds 用於指定C++語言的 tags記錄類型, --c-kinds用於指定c語言的, 通用格式是 --{language}-kinds
選項 fileds 用於指定每條標記的擴展字段域
extra 選項用於增長額外的條目: f表示爲每一個文件增長一個條目, q爲每一個類增長一個條目python2.7
若是常常在不一樣工程裏查閱代碼,那麼能夠在~/.vimrc中添加:ide
set tags=tags;函數
set autochdir工具
第一個命令裏的分號是必不可少的,這個命令讓vim首先在當前目錄裏尋找tags文件,若是沒有找到tags文件,就到父目錄中查找,一直向上遞歸。由於tags文件中記錄的路徑老是相對於tags文件所在的路徑,因此要使用第二個設置項來改變vim的當前目錄。
vimgrep /匹配模式/[g][j] 要搜索的文件/範圍
g: 表示是否把每一行的多個匹配結果都加入
j: 表示是否搜索完後定位到第一個匹配的位置
vimgrep /pattern/% 在當前打開文件中查找
vimgrep /pattern/ * 在當前目錄下查找全部
vimgrep /pattern/ ** 在當前目錄及其子目錄下查找全部
vimgrep /pattern/ *.c 查找當前目錄下全部的.c文件
vimgrep /pattern/ */ 只查找子目錄
cn 查找下一個
cp 查找上一個
vim file1 file2 file3 file4
或者進入vim後使用:e文檔名來打開文檔
:n 跳到後面那個文件
:N 跳到前面那個文件
:files查看打開了哪些文件
ctrl + n或者ctrl + p
gg 回到文件首
shift + v 進入VISUAL LINE模式
shift + g 全選全部內容
ctrl + v 複製所選的內容
quickfix功能將編譯過程當中產生的錯誤信息保存到文件中,而後vim利用這些信息跳轉到源文件的對應位置,咱們就能夠進行錯誤的修正,以後跳到下一個錯誤重複上述操做,從而極大地提升編譯錯誤的修改效率
quick經常使用命令:
:cc 顯示詳細錯誤信息
:cp 跳到上一個錯誤
:cn 跳到下一個錯誤
:cl 列出全部的錯誤
:copen 打開quickfix窗口,能夠在後面添加窗口高度參數,如10行,:copen 10
:cclose 關閉quickfix窗口
第一步:在正常模式下(非insert模式、非visual模式)按下q鍵盤
第二步:選擇a-z或0-9中任意一個做爲緩衝器的名字,準備開始錄製宏
第三步:正常的操做,這次全部的操做都會被記錄在上一步中定義的緩衝器中
第四步:在非insert模式下輸入q中止宏的錄製
第五步:使用@ + 第二步中定義的緩衝器的名字便可就可使用錄製的命令了。
一、高亮全部搜索模式匹配,搜索
shift + * 向後搜索光標所在位置的單詞
shift + # 向前搜索光標所在位置的單詞
, # 可對光標處的詞向前/向後作全詞搜索,g, g# 作相對應的非全詞匹配搜索
位置歷史,打開歷史的文件,前一個後一個
Ctrl-O 在歷史記錄中後臺,Ctrl-I 則爲前進。
:set hlsearch 高亮全部匹配的字符串
:nohlsearch 臨時關閉
:set nohlsearch 完全關閉,只有從新:set hlsearch才能夠高亮搜索
3.:ts(列出符號的定義tselect的縮寫):
:tj x 若是隻找到一個符號定義,那麼直接跳轉到符號定義處,若是有多個,則讓用戶自行選擇。
4.:tp(前一個符號)---此命令不經常使用,能夠不用記
5.:tn(後一個符號) ---此命令不經常使用,能夠不用記
6.Ctrl+ ]跳到光標所在函數或者結構體的定義處
7.Ctrl+ T返回上一個標籤
:stag TagName 新窗口分屏窗口顯示TagName標籤,光標跳到標籤處
Ctrl+W + ] 新窗口分屏窗口顯示當前光標下單詞的標籤,光標跳到標籤處
如下命令將在分屏預覽窗口顯示標籤
:ptag TagName 預覽窗口顯示TagName標籤,光標跳到標籤處
:pclose 關閉預覽窗口
:pedit file.h 在預覽窗口中編輯文件file.h(在編輯頭文件時頗有用)
:psearch atoi 查找當前文件和任何包含文件中的單詞並在預覽窗口中顯示匹配,在使用沒有標籤文件的庫函數時十分有用。
:n 跳到後面那個文件
:N 跳到前面那個文件
:files查看打開了哪些文件
:file 查看當前的文件名
即簡單地補全到本文檔中已有的詞:vim自動補全ctrl + n(第一個)或者ctrl + p(最後一個)
此時有一些快捷鍵能夠用:
Ctrl+P 向前切換成員
Ctrl+N 向後切換成員
Ctrl+E 表示退出下拉窗口, 並退回到原來錄入的文字
Ctrl+Y 表示退出下拉窗口, 並接受當前選項
vim中的其餘補全方式還有:全局搜索
Ctrl+XCtrl+L 整行補全
Ctrl+X Ctrl+N 根據當前文件裏關鍵字補全
Ctrl+X Ctrl+K 根據字典補全
Ctrl+X Ctrl+T 根據同義詞字典補全
Ctrl+X Ctrl+I 根據頭文件內關鍵字補全
Ctrl+X Ctrl+] 根據標籤補全
Ctrl+X Ctrl+F 補全文件名
Ctrl+X Ctrl+D 補全宏定義
Ctrl+X Ctrl+V 補全vim命令
Ctrl+X Ctrl+U 用戶自定義補全方式
Ctrl+X Ctrl+S 拼寫建議
1五、vim的recording功能
第一步:在正常模式下(非insert模式、非visual模式)按下q鍵盤
第二步:選擇a-z或0-9中任意一個做爲緩衝器的名字,準備開始錄製宏
第三步:正常的操做,這次全部的操做都會被記錄在上一步中定義的緩衝器中
第四步:在非insert模式下輸入q中止宏的錄製
第五步:使用@ + 第二步中定義的緩衝器的名字便可就可使用錄製的命令了。
g + ] 能夠查看當前函數的全部位置的定義
q: 顯示vim命令歷史
1七、塊選擇
v 會將光標通過的地方反白選擇
y將反白的地方複製
d將反白的地方刪除
字符串替換
語法:[addr]s/源字符串/目的字符串/option
option(g表示全局替換,c表示替換前進行確認)
若是在源字符串和目的字符串中出現特殊字符,須要用」\」轉義
全局替換,:%s/源字符串/目的字符串/g
從當前行到文件尾替換,:.,$%s/源字符串/目的字符串/g
從第n行到文件尾替換,:n,$%s/源字符串/目的字符串/g
vim的快捷鍵
% 跳轉到配對的括號去
[[ 跳轉到當前或者上一代碼塊(函數定義、類定義等)的開頭去(但要求代碼塊中'{'必須單獨佔一行)
][ 跳轉到當前代碼塊(函數定義、類定義等)的結尾去(但要求代碼塊中'{'必須單獨佔一行)
]] 跳轉到下一代碼塊(函數定義、類定義等)的開頭去(但要求代碼塊中'{'必須單獨佔一行)
gd到局部變量的定義,gD到全局變量的定義
‘’ 跳轉到光標上次停靠的地方, 是兩個', 而不是一個"
mx 設置書籤,x只能是a-z的26個字母x 跳轉到書籤處("
"是1左邊的鍵)
縮進
插入模式
Ctrl-T增長縮進,Ctrl-D減少縮進。
命令模式
右縮進, << 左縮進,注意n<< 或 n>>是縮進多行,如4>>
可視模式
< 、 > 用於左右縮進, n< 、 n> 可作多節縮進,如 2> 。
另外,= 可對選中的部分進行自動縮進;]p能夠實現p的粘貼功能,並自動縮進。
返回上級目錄
c
切換vim當前工做目錄正在瀏覽的目錄
d
建立目錄
D
刪除目錄或文件
i
切換顯示方式
R
文件或目錄重命名
s
選擇排序方式
x
定製瀏覽方式,使用你指定的程序打開該文件
ctags 對shell語言的支持
vim+ctags+cscope安裝與使用總結(不斷補充中)
vim 中Ctags的安裝和使用
vim+cscope+ctags打造屬於本身的IDE
一份比較好用的vim配置文件
Vim的強大配置文件(一鍵配置)
ctags實踐總結
ctags使用方法 ctags的使用方法
Exuberant Ctags中文手冊
超詳細的vim+cscope 的使用規則
VIM 的 modeline 和 autocmd
Ubuntu 16.04 下 Vim安裝及配置
vim源碼閱讀工具 ctags cscope 和 Source Insight