主要是寄存器操做,簡直神器,vim
首先,說用寄存器的命令要知道,C-R (ctrl+r)函數
好比說用a寄存器,就要說按Ctrl+r a 這樣子.spa
0-9 a-z (只有小寫) 都是vim的寄存器,命令行
其中,1-9 是刪除寄存器,分別記錄上n次刪除的內容,好比,我要複製上5次刪除的內容使用 "5p 就能夠了,orm
0呢,上一次複製的內容,yy自動存入,字符串
a-z是具名寄存器,好比yy想存入a中,就是用 "ayy 這樣子.源碼
這些寄存器是能夠混用的,table
好比 / 和 ? 我想搜上4次刪除的內容,就能夠用變量
/<CTRL+R>4 回車,擴展
這樣子哦,
輸入/"4 只能搜"4這樣的字符,這個和vim的配置相關.
但願可以幫助你們.
在.vimrc 文件中設定 iskeyword 好比,比較煩人的一個地方是c語言的 Struct.Member 若是使用 w * # ] 功能時,沒法區分 單詞Member,按照Struct.Member是一個單詞進行搜索,在.vimrc文件中添加:
set iskeyword += ,$,@,%,#,.,-
一行,這樣,就能夠了,使用逗號分割每個字符,結尾不能有, .
場景:好比,在A處,有兩個部分須要複製框B處和C處,就能夠用寄存器,在A的地方,把兩個部分存入不一樣的寄存器,而後在去B,C處複製就行了,很是方便. 使用Ctrl + R 0 能夠方便的把剛纔複製的東西輸入到命令欄,好比,使用
cscope進行查找的時候,向找一個函數的定義, 函數名長,怎麼辦呢, 使用 yw,複製函數名,而後,使用
:cs f g Ctrl_R 0 能夠快速的輸入函數名.
vim中a到Z是複製緩衝區,能夠吧文本佔時複製到緩衝區中,使用「ayy 把內容複製到a中,使用」ap 把a緩衝區中的內容取出來,要點就是使用」加在緩衝區名字的前面
主要是寄存器操做,簡直神器,
首先,說用寄存器的命令要知道,C-R (ctrl+r)
好比說用a寄存器,就要說按Ctrl+r a 這樣子.
0-9 a-z (只有小寫) 都是vim的寄存器,
其中,1-9 是刪除寄存器,分別記錄上n次刪除的內容,好比,我要複製上5次刪除的內容使用 「5p 就能夠了,
0呢,上一次複製的內容,yy自動存入,
a-z是具名寄存器,好比yy想存入a中,就是用 「ayy 這樣子.
這些寄存器是能夠混用的,
好比 / 和 ? 我想搜上4次刪除的內容,就能夠用
/<CTRL+R>4 回車,
這樣子哦,
輸入/」4 只能搜」4這樣的字符,這個和vim的配置相關.
場景:就是跳轉啊,若是能方便快速的在不一樣的代碼位置跳轉,方便的不行了啊,這個就是幹着個用的,
緩衝區的範圍也是a-Z,使用m[a-Z]進行標記,標記的是光標所在的位置,使用’[a-Z]會跳轉到相應的位置,要點就是,使用m標記,使用’進行跳轉。
使用 :set ic開啓忽略大小寫,
使用 :set noic 關閉
ic 即 : ignore case 的簡寫
cscope是用於多種語言的(其實主要仍是c了)的符號查找程序.這個很厲害啊,只是使用起來比ctags稍微麻煩一點.
在源碼目錄使用cscope -cb 會生成一個cscope.out文件,若是隻有指定目錄,就把須要的全部文件寫到cscope.files文件裏, 一行一個文件就好了,
vimrc中也許有像set tag = xxx之類的設置,笨一點的方法就是使用cs add進行加入對應文件
使用 :cs f g XXX 找cscope.out中的XXX定義.
f表示查找 g 表示找定義,可使用 :cs help 進行查看,很方便.
對上一條中 f的展開
:cs help 會有說明
add {file|dir} [prefix dir] 添加一個cscope.out文件,能夠指定文件或者目錄加入cscope.out文件 ,cscope默認使用vim開啓的目錄開始查找,若是改了目錄,使用 prefix dir從新指定一個就行了,要否則就會報某某某文件找不到.
find 查找,在加入的cscope.out文件中,按指定方式找對應的符號,g就是找定義,其餘的看下一條.
kill # 從加入的cscope.out文件中除去一個.# 是序號,也可使用文件指定,使用須要方便啊.
show 顯示已經加入的scope.out文件.前面就是kill須要的序號了.
reset 初始化全部的加入的cscope.out文件.
有關:cs f g XXX中g的擴展
0或s 查找這個符號.
1或g 查找這個定義.
2或d 查找這個函數調用的函數們.
3或c 查找調用這個函數的函數們.
4或t 查找這個字符串.
6或e 查找這個egrep匹配模式.
7或f 查找這個文件.
8或i 查找include這個文件的文件們.
使用技巧.
使用手工輸入函數符號的是否是很麻煩呢,能夠這樣,使用 yw 複製一個單詞,而後使用C_r 0 從複製複製寄存器中拿出上一個複製的內容.
場景對於顯示行號,通常都須要的吧,對於顯示相對行號,好處就是,方便的使用 [n] + j| k 進行跳轉,
line('.')函數的使用場景:這個前提是在命令行使用\=表示後面的命令須要執行後的結果, 好比,想快速的給
枚舉值作一個值的註釋,枚舉開始的地方是第12行,結束於100行 能夠這樣
:13,100s/$/\/\/ Value=\=line('.')-12/g
vim顯示行號,很簡單,開始顯示,
set number 簡寫 set nu .
取消顯示
set nonumber 簡寫 set nonu
顯示相對行號 //對於查看結構體特別有用
set relativenumber
取消相對行號顯示
set norelativenumber
有關line函數的使用
這個函數是獲得行數,使用 :help line 能夠查看許多內容.
line(‘.’) 當前行.
line(「‘t」) t標記所在的行,沒有的話,返回0
做用:
給文件添加統一的前面 行號,是內容的序號,不是顯示的.:
:%s/^/\=line('.').' '解釋: * %s 是全局搜索. * ^ 表示每一行的開頭 * = 表示 使用後面的替換 * line(‘.’) 表示但前行的行號,這個號碼是根據匹配遊標移動改變的. * . 表示字符串鏈接,鏈接後面的’ ‘(空格) 你總不但願行號後面沒有空格吧?
計算但前行到指定行的行差
這個比較麻煩,分一下幾步:
- 在基準的行作一個標記,好比 ms 作一個s標記.
- 使用 / 或者其餘什麼手段,移動到所在的行.
- 執行 :echo line(‘.’)-line(「‘s」) 就會在命令輸入行打出一個數字,就是行差了,
雖然比較麻煩,但是使用q 定義好宏之後,使用@執行就好多了.
概述
這裏的vim操做命令指的是按下 : 以後能夠輸入的命令
去掉全部空行
:g/^s*$/d
說明:
g : 全局命令
/ : 分割符
^s*$ : 全部匹配開頭和結尾只有 空格 的行.
/d | : 刪除該行 |
配置
set foldenable 「設置容許摺疊
set foldmethod=[manual|indent|] 「設置摺疊方式,manul手動 indent按縮進摺疊
set foldlevel=3 「設置摺疊的層級大小
操做
在normal模式下進行fold操做
z + c 摺疊光標所在的區域(一次摺疊一層)
z + C 摺疊光標所在的區域(一次把光標所在的區域摺疊到最小)
z + R 打開全部的摺疊(一次打開到沒有摺疊的樣子)
z + r 打開全部的摺疊(一次打開一層摺疊,再桉一次這打開下一層)
z + o 打開光標所在的摺疊,或者 在光標所在的地方 按 l 也能夠
z + M 摺疊全部能夠摺疊的代碼(以最大深度進行摺疊)
z + m 摺疊全部能夠摺疊的代碼(以一層的深度遞增摺疊,再桉一次則摺疊第二層)