首先使用vim需要摒棄乙個不好的習慣就是需要輸入大寫字母非要切換非要用capslk
,其實shift+字母
就是大寫。因為vim中有很多的快捷鍵是大寫字母,如果使用前者的方式需要按三次鍵盤,而後者的方式只需要一次。
vim的使用致力於雙手可以放在鍵盤上,不需要抬起來拿滑鼠。
上下左右:hjkl
。
移動到下乙個單詞開頭w
。移動到下乙個空格後面w
。w比w好用。
行首(第乙個可見字元):^
,行尾:$
,行的第一列0
。
翻頁:ctrl+f
,ctrl+b
。
移動到n行::n
。
全文首:gg
,全文尾g
。
全篇向下查詢字串string:/string
。在配合n
向下,n
向上查詢。#
等價於/游標所在單詞
。
全篇向上查詢字串string:?string
。在配合n
向上,n
向下查詢。*
等價於/游標所在單詞
。
游標前插入:i
。
跳轉到行首插入:i
,等價與^ i
。
游標後插入:a
。
跳轉到行尾插入:a
,等價於$ a
。
列插入:ctrl+v 上下移動游標 i 要輸入的內容 esc
。
刪除游標處字母:x
。刪除游標前的字母:x
。
刪除乙個單詞包括它後面的空格:daw
。刪除乙個單詞不包括它後面的空格:diw
。
刪除括號()或或{}
中且包含括號的內容:da(或[或
中不包含括號的內容:di(或[或{
。
刪除引號'或"
中且包含引號的內容:da'或"
。
刪除引號'或"
中不包含引號的內容:di'或"
,
刪除整行:dd
。刪除n行:ndd
。
刪除本行游標後的內容:d
。刪除本行游標前的內容d 0
或d ^
。
列刪除: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/
。
複製一行:yy
或y
。複製n行:nyy
。
刪除篇d
所有操作用y
來代替,代表複製相應的內容。比如yaw
就是複製單詞、yi"就是複製兩個」之間的內容。
在游標之後貼上:p
。在游標之前貼上:p
。
其實p貼上的內容是從vim無名暫存器中取出來的,刪除操作和複製操作都會將內容存入無名暫存器,所以剛刪除的內容是可以用p
貼上出來的,d
和p
像是剪下和貼上,y
和p
像是複製和貼上。
字母大小寫切換:~
。
塊模式是用來選中需要操作的部分,具體執行什麼操作還要看後面跟隨的具體命令。
快速選中:用v
替換刪除篇的d
,用來快速選中相對應的部分。
常見操作:yaw
複製乙個單詞,再移動游標到另一處單詞,vawp
用複製的單詞替換當前單詞,vaw
代表快速選中單詞,p再進行貼上。將單詞全部轉化成大寫viwu
,小寫是viwu
。
普通塊模式:ctrl+v
,進入塊模式移動游標可以選中需要操作的部分。
常見操作:列插入列刪除。
行模式:v
,通過上下移動選中多行。
常見操作:多行刪除v 移動游標 d
和複製v 移動游標 y
,用ndd
或者nyy
需要數多少行,用v
可以所見即所得。
向前撤銷:u
,向後撤銷:ctrl+r
。
自動補全:ctrl+p
和ctrl+n
。
自動對齊n行:n==
。
向左縮排:<<
。向右縮排:>>
。
找到與之匹配的括號:%
。
跳轉函式定義:ctrl+]
。跳回:ctrl+t
。
自動補全ctrl+p
和ctrl+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名字***q
,取出命令集合@名字
。
如果寫c/c++可以將vim外掛程式安裝到clion中使用,寫**不要太爽。
linux中還可以安裝ctags和escope外掛程式,完善函式跳轉。
最終附上我常用的vim配置檔案 vim配置檔案
vim 命令理解記憶
最近想轉 vim,高效是建立在對命令爛熟於心的基礎上的。自己總結了一些方便記憶 vim 命令的點。以 vscode 的 vim 外掛程式為例 我感覺 vim 的最大的特點就在於它的命令組合,比如說 20dd數字 20 就代表執行次數,dd 是刪除當前行,這個命令就代表著刪除游標所在處開始的後三行。又...
vim命令的理解
這部分 一起來說 vim 語,理解此部分是需要你已經了解了 vim 的幾種常用的工作模式 正常模式 插入模式 命令模式等 總結得很好,對於記憶vim命令非常有幫助,感謝。動詞代表了我們打算對文字進行什麼樣的操作。例如 d 表示刪除delete r 表示替換replace c 表示修改change y...
Vim 命令和配置
1.游標移動 l右移乙個字元 h左移乙個字元 w右移乙個字 w右移乙個空白分隔字 b左移乙個字 b左移乙個空白分隔字 移到行尾 e右移到字的末尾 e右移到空白分隔字的末尾 0移到行首 return 移到下一行行首 j下移一行 移到上一行行首 k上移一行 句尾 句首 段尾 段首 2.檢視工作緩衝區 d...