VIM 快捷學習

來源:互聯網
上載者:User

一 關於ctags
     vim內建ctag外掛程式
     在工程目前的目錄shell 運行 $ctags -R  會在目前的目錄遞迴產生一個tags檔案
     在vim 中運行  :set tags=tags   //表示指定目前的目錄tags檔案為讀取檔案

     在vim中運行 :version  可以看到很多關於vim本身的資訊

 

   說明了vim讀取vimrc設定檔的順序,開啟vim將按照上述順序尋找使用者vimrc,並執行所找到的第一個使用者vimrc中的命令,忽略其餘的使用者vimrc。在vimrc中實際上是按先後順序執行的

     如果使用”vim -u filename“命令來啟動vim,則會用你指定的filename作為vim的設定檔(在調試你的vimrc時有用);

    如果用”vim -u NORC“命令啟動vim,則不讀取任何vimrc檔案:當你懷疑你的vimrc配置有問題時,可以用這種方式跳過vimrc的執行。


     查看tags檔案可知檔案對各個檔案中的函數和變數等進行了定位。如果沒有則找不到

     使用ctags:

     ctrl+]   跳轉到指定的函數

     ctrl+t   和ctrl+]命令相反  

     :tags 可顯示跳轉深度具體資訊 如:

二 vim 快速鍵

“:tag func_name“ 跳到函數func_name處。使用tag命令時,可以使用TAB鍵進行匹配尋找,繼續按TAB鍵向下切換。

 vim 快速鍵:
 %    跳到匹配的括弧處("{ }""[]""()")也可以匹配if else 等
 ctrl+i, tab  跳到下一個跳點

 ctrl+o  跳到上一個跳點
 #  從游標向後尋找整個關鍵詞 (精確完全符合尋找)
 g# 可以尋找到包含它的單詞
 *只尋找與當前單詞精確匹配的單詞
 g*尋找包含當前單詞的所有單詞

    


w 跳到下一個單詞的開始
e 跳到單詞的結束
b 向後跳


r:替換游標所在處的字元。
R:替換游標所到之處的字元,直到按下「ESC」鍵為止。

「ctrl」+「g」列出游標所在位置 行列


“.”  重複上一次修改
ctrl+r和u相反的動作
y  複製 
yy  複製一行
gf跳轉到檔案(gf將一個字串當做一個檔案在當前檔案夾下遞迴尋找)


Visual Mode操作:
 ctrl+v     進入基於塊的可視模式 
v           進入基於字元的可視模式
V          進入基於行的可視模式
c           刪除選定的塊

ctrl+z  睡眠vim   
fg num 反操作 返回vim

fx:向後尋找,移動游標到當前行的下一個x處。很明顯,x可以是任意一個字母,可以使用“;”來重複上

一個f命令
tx:和上面的命令類似,但是是移動到x的左邊一個位置。
Fx:和fx類似,不過是往回找。
Tx: 同上 
(小寫向後,大寫向前)


0: 移動游標到當前行首。
^:移動游標到當前行的第一個字母位置。
$: 移動游標到行尾。
):移動游標到下一個句子。
( : 移動游標到上一個句子。

ma:在當前游標的位置標記一個書籤,名字為a。書籤名只能是小寫字母。你看不見書籤的存在,但它確實

已經在那裡了。
`a:到書籤a處。注意這個不是單引號,它一般位於大部分鍵盤的1的左邊。
`.:到你上次編輯檔案的地方。這個命令很有用,而且你不用自己去標記它。

i:在當前字元的左邊插入
I:在當前行首插入
a:在當前字元的右邊插入
A:在當前行尾插入
o:在當前行下面插入一個新行
O:在當前行上面插入一個新行
c{motion}:刪除motion命令跨過的字元,並且進入插入模式。比如:c$,這將會刪除從游標位置到行尾的

字元並且進入插入模式。ct!,這會刪除從游標位置到下一個歎號(但不包括),然後進入插入模式。被

刪除的字元被存在了剪貼簿裡面,並且可以再粘貼出來。
d{motion}:和上面差不多,但是不進入插入模式。
(c和d用法相似,但會進出插入模式)

 


VIM是一個絕好的編輯器來寫代碼,因為它有一些特性是專門為程式員而設。
這裡是一些常用的:
]p:和p的功能差不多,但是它會自動調整被粘貼的文本的縮排去適應當前代碼的位置。
試一下!%:匹配花括弧,方括弧,括弧等。在一個括弧的上面,然後按%,滑鼠就會出現在匹配的另外一

半括弧處。
>>:縮排所有選擇的代碼
<<:和上面類似,但是反縮排
gd:到達游標所在處函數或者變數的定義處。會尋找出很多個但是跳轉到局部變數的定義處
K:在Man裡面尋找游標當前所在處的詞。

不用ctags的函數跳轉(也是字串尋找)
[+ctrl+i 跳轉到函數、變數和#define
[+ctrl+d 跳轉到#define處
ctrl+i 向前跳到前幾次游標位置
ctrl+o 向後跳到後幾次游標位置

 

[[ 用來跳到游標前面的一個函數開始處。如果游標在函數體內的話,那就是所在函數的開始處。
][ 用來跳到游標後面的一個函數結尾處。如果游標在函數體內的話,那就是所在函數的結尾處。
]] 用來跳到游標後面的一個函數開始處。如果游標在函數體內的話,那就是下一個函數的開始處。
[] 用來跳到游標前面的一個函數結尾處。如果游標在函數體內的話,那就是上一個函數的結尾處。

1,先想是想往前跳,還是往後跳?
如果是想往前,就摁 [,如果是想往後,就摁 ],然後指頭別鬆開。
2,再想是想到開始處,還是結尾處?
如果是開始處,就再摁一下。如果是結尾處,就摁另一個鍵。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.