get到的vim技巧,vim真是神器啊

主要是寄存器操做,簡直神器,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的配置相關.

但願可以幫助你們.

 

下面是我工做中實際用的的技巧,十分方便,裏面註明的使用場景

vim技巧

查找的技巧(這個比較基本,隨時可用)

  • / 從當前位置向下查找
  • ? 從當前位置向上查找
    • 選中當期光標所在的 單詞 而後向 查找
  • # 選中當前光標所在的 單詞 而後向 查找    
  • g* 選中光標所在的 單詞 而後部分匹配向 查找
  • g# 選中光標所在的 單詞 而後部分匹配向 查找
  • 部分匹配的意思是不區分大小寫的匹配
  • 場景(向上查找用於找統一文件的定義,先用m作一個標記,找到後方便跳回來,向下找用於查看這邊變量的變化)

有關使用 搜索C_] 進行查找時單詞的區分設定

在.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 的簡寫

vim中cscope的使用

  1. cscope是用於多種語言的(其實主要仍是c了)的符號查找程序.這個很厲害啊,只是使用起來比ctags稍微麻煩一點.

  2. 在源碼目錄使用cscope -cb 會生成一個cscope.out文件,若是隻有指定目錄,就把須要的全部文件寫到cscope.files文件裏, 一行一個文件就好了,

  3. vimrc中也許有像set tag = xxx之類的設置,笨一點的方法就是使用cs add進行加入對應文件

  4. 使用 :cs f g XXX 找cscope.out中的XXX定義.

    f表示查找 g 表示找定義,可使用 :cs help 進行查看,很方便.

  5. 對上一條中 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文件.

  6. 有關:cs f g XXX中g的擴展

    0或s 查找這個符號.

    1或g 查找這個定義.

    2或d 查找這個函數調用的函數們.

    3或c 查找調用這個函數的函數們.

    4或t 查找這個字符串.

    6或e 查找這個egrep匹配模式.

    7或f 查找這個文件.

    8或i 查找include這個文件的文件們.

  7. 使用技巧.

    使用手工輸入函數符號的是否是很麻煩呢,能夠這樣,使用 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

    做用:

    1. 給文件添加統一的前面 行號,是內容的序號,不是顯示的.:

      :%s/^/\=line('.').' '

      解釋: * %s 是全局搜索. * ^ 表示每一行的開頭 * = 表示 使用後面的替換 * line(‘.’) 表示但前行的行號,這個號碼是根據匹配遊標移動改變的. * . 表示字符串鏈接,鏈接後面的’ ‘(空格) 你總不但願行號後面沒有空格吧?

    2. 計算但前行到指定行的行差

      這個比較麻煩,分一下幾步:

      1. 在基準的行作一個標記,好比 ms 作一個s標記.
      2. 使用 / 或者其餘什麼手段,移動到所在的行.
      3. 執行 :echo line(‘.’)-line(「‘s」) 就會在命令輸入行打出一個數字,就是行差了,

      雖然比較麻煩,但是使用q 定義好宏之後,使用@執行就好多了.

vim的操做命令

  1. 概述

    這裏的vim操做命令指的是按下 : 以後能夠輸入的命令

  2. 去掉全部空行

    :g/^s*$/d

    說明:

    g : 全局命令

    / : 分割符

    ^s*$ : 全部匹配開頭和結尾只有 空格 的行.

    /d

    : 刪除該行

vim的folder操做

  1. 配置

    set foldenable 「設置容許摺疊

    set foldmethod=[manual|indent|] 「設置摺疊方式,manul手動 indent按縮進摺疊

    set foldlevel=3 「設置摺疊的層級大小

  2. 操做

    在normal模式下進行fold操做

    z + c 摺疊光標所在的區域(一次摺疊一層)

    z + C 摺疊光標所在的區域(一次把光標所在的區域摺疊到最小)

    z + R 打開全部的摺疊(一次打開到沒有摺疊的樣子)

    z + r 打開全部的摺疊(一次打開一層摺疊,再桉一次這打開下一層)

    z + o 打開光標所在的摺疊,或者 在光標所在的地方 按 l 也能夠

    z + M 摺疊全部能夠摺疊的代碼(以最大深度進行摺疊)

    z + m 摺疊全部能夠摺疊的代碼(以一層的深度遞增摺疊,再桉一次則摺疊第二層)

相關文章
相關標籤/搜索