vim命令理解和記憶

本文適合vim編輯器愛好者閱讀。
本文包括vim大部分實用操作,加深理解和記憶的方法。

緒論

首先使用vim需要摒棄一個不好的習慣就是需要輸入大寫字母非要切換非要用CapsLk,其實shift+字母就是大寫。因爲vim中有很多的快捷鍵是大寫字母,如果使用前者的方式需要按三次鍵盤,而後者的方式只需要一次。

vim的使用致力於雙手可以放在鍵盤上,不需要擡起來拿鼠標。

一、移動篇

上下左右:hjkl

移動到單詞開頭:b。移動到上一個空格之後B。B比b好用。

移動到單詞結尾:e。移動到下一個空格之前E。E比e好用。

移動到下一個單詞開頭w。移動到下一個空格後面W。W比w好用。

行首(第一個可見字符):^,行尾:$,行的第一列0

翻頁:ctrl+fctrl+b

移動到n行::n

全文首:gg,全文尾G

二、查找篇

全篇向下查找字符串string:/string。在配合n向下,N向上查找。#等價於/光標所在單詞

全篇向上查找字符串string:?string。在配合n向上,N向下查找。*等價於/光標所在單詞

跳轉到本行下一個字符char:f char

跳轉到本行上一個字符char:F char

跳轉到本行下一個字符char之前:t char

跳轉到本行上一個字符char之前:T char

三、插入篇

光標前插入:i

跳轉到行首插入:I,等價與^ i

光標後插入:a

跳轉到行尾插入:A,等價於$ a

下一行插入:o,等價於A return

上一行插入:O,等價於I return 上(esc k i)

列插入:ctrl+v 上下移動光標 I 要輸入的內容 esc

四、刪除篇

刪除光標處字母:x。刪除光標前的字母:X

刪除一個單詞包括它後面的空格:daw。刪除一個單詞不包括它後面的空格:diw

刪除括號()或[]或{}中且包含括號的內容:da(或[或{

刪除括號()或[]或{}中不包含括號的內容:di(或[或{

刪除引號'或"中且包含引號的內容:da'或"

刪除引號'或"中不包含引號的內容:di'或"

刪除整行:dd。刪除n行:ndd

刪除本行光標後的內容:D。刪除本行光標前的內容d 0d ^

刪除到下一個空格包括空格:d W。(沒有特殊字符時小寫也可以)

刪除到下一個空格不包括空格:d E。(沒有特殊字符時小寫也可以)

刪除到上一個空格不包括空格:d B。(沒有特殊字符時小寫也可以)

列刪除:ctrl+v 移動光標選中待刪除部分 d

五、替換篇

替換其實就是刪除並插入。

刪除當前字母並進入插入模式:s,等價於x i

刪除當前行並進入插入模式:S,等價於dd O

刪除篇d所有的操作用c來替代,相當於刪除後直接進入插入模式,c相當於dxx a

全文替換::%s/old string/new string/

n到m行替換::n,ms/old string/new string/

六、複製粘貼篇

複製一行:yyY。複製n行:nyy

刪除篇d所有操作用y來代替,代表複製相應的內容。比如yaw就是複製單詞、yi"就是複製兩個”之間的內容。

在光標之後粘貼:p。在光標之前粘貼:P

其實p粘貼的內容是從vim無名寄存器中取出來的,刪除操作和複製操作都會將內容存入無名寄存器,所以剛刪除的內容是可以用p粘貼出來的,dp像是剪切和粘貼,yp像是複製和粘貼。

字母大小寫切換:~

七、塊模式篇

塊模式是用來選中需要操作的部分,具體執行什麼操作還要看後面跟隨的具體命令。

快速選中:用v替換刪除篇的d,用來快速選中相對應的部分。

常見操作:yaw複製一個單詞,再移動光標到另一處單詞,vawp用複製的單詞替換當前單詞,vaw代表快速選中單詞,p再進行粘貼。將單詞全部轉化成大寫viwU,小寫是viwu

普通塊模式:ctrl+v,進入塊模式移動光標可以選中需要操作的部分。

常見操作:列插入列刪除。

行模式:V,通過上下移動選中多行。

常見操作:多行刪除V 移動光標 d和複製V 移動光標 y,用ndd或者nyy需要數多少行,用V可以所見即所得。

八、寫代碼篇

向前撤銷:u,向後撤銷:ctrl+R

自動補全:ctrl+pctrl+n

自動對齊n行:n==

向左縮進:<<。向右縮進:>>

跳轉到上一個{:[{

跳轉到下一個}:]}

找到與之匹配的括號:%

跳轉函數定義:ctrl+]。跳回:ctrl+t

跳轉光標上一次的位置:ctrl+o。下一次:ctrl+i

自動補全ctrl+pctrl+n

九、文件篇

保存::w

保存退出::wq

不保存退出::q

左右分割打開其他文件::vsp filename

上下分割打開其他文件::sp filename

兩個文件差異比較:vimdiff filename1 filename2。

十、設置篇

顯示行號::set nu,不顯示行號:set nonu

設置tab的寬度爲n::set ts=n

設置縮進寬度爲n::set sw=n

用空格替換tab::set expandtab,反之::set noexpandtab

在行開始時使用製表符::set smarttab

查找忽略大小寫::set ignorecase 。

從外面粘貼代碼縮進會出現問題::set paste。複製完成後在::set nopaste。這一點粘貼python尤爲重要。

可以在~/.vimrc文件來提前配置vim。

十一、理解篇

一些操作,如:d/y/c,像是一個及物動詞(謂語)一樣,後面可以跟它的賓語,如:w/(/',這些賓語可以有他們的定語,如:i/a。這些都可以自由的組合。

一些操作,如:p/o,像是一個不及物動詞一樣,i/a也可以是不及物動詞。

賓語(待操作的對象)也可以通過塊模式選取。比如:列刪除操作、vi(d刪除()之間的內容。

十二、升級篇

vim還有很多強大的功能,筆者目前用的不多。比如:做標記m和標記跳轉`,有名的寄存器操作"寄存器名,錄入命令集合q名字xxxq,取出命令集合@名字

如果寫c/c++可以將vim插件安裝到clion中使用,寫代碼不要太爽。
linux中還可以安裝ctags和escope插件,完善函數跳轉。

最終附上我常用的vim配置文件 vim配置文件

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