vim使用記錄

1. 生成c、c++公共庫標籤文件

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/


set tags+=~/.vim/tags/c.tag


ctags file_name1.c filename2.c filename3.h來產生ctags文件或者ctags .c .h

2. 內核:

ctags默認使用這個命令,--exclude要排除的文件,--links針對符號鏈接是否延伸,使用-n參數表示用行號索引,一旦更改源文件行號容易變,需要重新生成請添加鏈接描述ctags默認使用這個命令,--exclude要排除的文件,--links針對符號鏈接是否延伸,使用-n參數表示用行號索引,一旦更改源文件行號容易變,需要重新生成請添加鏈接描述

ctags -n -R --links=yes --c-kinds=+p --fields=+iaSz --exclude=samples/ --exclude=tools/

在源碼目錄下通過命令make tags(也可使用:ctags -R)生成標籤文件


cscope -Rbqk
k跳過/usr/include/*

字段補全

爲了使得字段補全有效,在生成tags時需要一些額外的參數,推薦的c++參數主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
選項c++-kinds 用於指定C++語言的 tags記錄類型,  --c-kinds用於指定c語言的,  通用格式是  --{language}-kinds
選項 fileds 用於指定每條標記的擴展字段域
extra 選項用於增加額外的條目:   f表示爲每個文件增加一個條目,  q爲每個類增加一個條目


如果經常在不同工程裏查閱代碼,那麼可以在~/.vimrc中添加:

set tags=tags;

set autochdir

第一個命令裏的分號是必不可少的,這個命令讓vim首先在當前目錄裏尋找tags文件,如果沒有找到tags文件,就到父目錄中查找,一直向上遞歸。因爲tags文件中記錄的路徑總是相對於tags文件所在的路徑,所以要使用第二個設置項來改變vim的當前目錄。

vimgrep

vimgrep /匹配模式/[g][j] 要搜索的文件/範圍

g: 表示是否把每一行的多個匹配結果都加入

j: 表示是否搜索完後定位到第一個匹配的位置

vimgrep /pattern/%  在當前打開文件中查找

vimgrep /pattern/ *   在當前目錄下查找所有

vimgrep /pattern/ **   在當前目錄及其子目錄下查找所有

vimgrep /pattern/ *.c  查找當前目錄下所有的.c文件

vimgrep /pattern/ */  只查找子目錄


cn 查找下一個
cp 查找上一個


vim打開多個文件

vim file1 file2 file3 file4

或者進入vim後使用:e文檔名來打開文檔

:n 跳到後面那個文件

:N 跳到前面那個文件

:files查看打開了哪些文件

:file 查看當前的文件名

vim自動補全

ctrl + n或者ctrl + p


複製vim文件中所有內容

gg 回到文件首

shift + v 進入VISUAL LINE模式

shift + g 全選所有內容

ctrl + v 複製所選的內容


quickfix是vim的標準插件,本身就帶有

quickfix功能將編譯過程中產生的錯誤信息保存到文件中,然後vim利用這些信息跳轉到源文件的對應位置,我們就可以進行錯誤的修正,之後跳到下一個錯誤重複上述操作,從而極大地提高編譯錯誤的修改效率

quick常用命令:

:cc 顯示詳細錯誤信息

:cp 跳到上一個錯誤

:cn 跳到下一個錯誤

:cl 列出所有的錯誤

:copen 打開quickfix窗口,可以在後面添加窗口高度參數,如10行,:copen 10

:cclose 關閉quickfix窗口

vim的recording功能

第一步:在正常模式下(非insert模式、非visual模式)按下q鍵盤
第二步:選擇a-z或0-9中任意一個作爲緩衝器的名字,準備開始錄製宏
第三步:正常的操作,此次所有的操作都會被記錄在上一步中定義的緩衝器中
第四步:在非insert模式下輸入q停止宏的錄製
第五步:使用@ + 第二步中定義的緩衝器的名字即可就可以使用錄製的命令了。

快捷鍵

1、高亮所有搜索模式匹配,搜索

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返回上一個標籤

  1. Ctrl+O 返回上一個標籤
    如果找到的標籤並不唯一,所以還需要配合使用下述命令:
    tfirst:跳至第一個
    :[count]tprevious 向前 [count] 個匹配
    :[count]tnext 向後 [count] 個匹配
    tlast:跳至最後一個

: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 拼寫建議

15、vim的recording功能

第一步:在正常模式下(非insert模式、非visual模式)按下q鍵盤
第二步:選擇a-z或0-9中任意一個作爲緩衝器的名字,準備開始錄製宏
第三步:正常的操作,此次所有的操作都會被記錄在上一步中定義的緩衝器中
第四步:在非insert模式下輸入q停止宏的錄製
第五步:使用@ + 第二步中定義的緩衝器的名字即可就可以使用錄製的命令了。

g + ] 可以查看當前函數的所有位置的定義
q: 顯示vim命令歷史

17、塊選擇
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的粘貼功能,並自動縮進。

打開文件列表窗口快捷鍵netrw.vim
<F1> 顯示幫助
<cr> 如果光標下是目錄, 則進入該目錄; 如果光標下文件,則打開該文件

返回上級目錄
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章