退出vim
按鍵 |
功能 |
:wq |
保存退出 |
:w filename |
保存到指定文件 |
:q |
退出,如果文件修改但沒有保存,會提示無法退出 |
:q! |
退出,不保存 |
進入插入模式
按鍵 |
功能 |
a |
光標位置右邊插入文字 |
i |
光標位置當前處插入文字 |
o |
光標位置下方開啓新行 |
O |
光標位置上方開啓新行 |
I |
光標所在行首插入文字 |
A |
光標所在行尾插入文字 |
進入可視化模式
按鍵 |
功能 |
Ctrl+v |
進入可視化編輯模式 |
其它
按鍵 |
功能 |
:set expandtab |
tab展開爲空格 |
cc/S |
清除整行,進入插入模式 |
d$/C |
刪除光標右邊文字/刪除光標右邊文字進入插入狀態 |
di) |
刪除括號內的文本 |
:set undodir=”xxxx” :set undofile
|
設置持久性撤銷和臨時保存的文件位置 |
:ls |
顯示當前緩衝區文件信息 |
:e |
打開新文件,其他文件放入緩衝區 |
:b 緩衝區編號或者文件名 |
切換到指定的緩衝區文件處 |
:bd/:bd3 |
刪除當前的緩衝區/指定緩衝區窗口 |
“byw |
將當前光標到單詞結尾處的內容放入寄存器”b中(無”b則放入匿名寄存器””中) |
“bdw |
將當前光標處到單詞結尾的內容剪切到寄存器”b中 |
“bp |
將”b中的內容粘貼 |
“1p/”2p/”3p |
將自動存放的歷史刪除內容分別粘貼出來,其中”1,”2,”3爲寄存器 |
ctrl +n/p |
代碼補全,向下查找/向上查找 |
ctrl+x+i |
使用當前工程文件的中的參數進行補全 |
ctrl+x+f |
使用當前工程文件和文件夾名補全 |
ctrl+x+j |
補全標籤 |
查找功能
按鍵 |
功能 |
shift+* |
向下查找當前光標所在的相同單詞並高亮顯示 |
shift+# |
向上查找當前光標所在的相同單詞並高亮顯示 |
gd |
從頭查找當前光標所在的相同單詞並高亮顯示 |
:noh |
取消高亮顯示 |
n |
定位到查找內容的下一個 |
N |
定位到查找內容的上一個 |
:/String |
查找以String組成的正則表達式 |
/^字符串 |
查找以字符串開始的行 |
/字符串$ |
查找以字符串結尾的行 |
替換功能
按鍵 |
功能 |
. |
任意字符,不包括換行 |
\_. |
任意字符,包括換行 |
^$ |
行開頭和結尾 |
\<\> |
單詞開頭和結尾 |
\s |
一個tab或空格 |
\d |
一個數字 |
\a |
一個字母 |
\w |
一個數字或字母 |
\l |
一個小寫字母 |
\u |
一個大寫字母 |
\x |
一個十六進制數 |
\X |
一個非十六進制數 |
\D |
一個非數字 |
\W |
一個非字母 |
\S |
一個非空白字符 |
A\|B |
匹配A或B |
\(X\) \(A\|B\)C |
將X作爲一個組 匹配AC或BC |
* |
重複前一個字符0到多次 |
\+ |
重複前一個字符1到多次 |
\? \= |
重複前一個字符0到1次 |
\{m,n} |
重複前一個字符m到n次 |
\{-m,n} |
重複前一個字符m到n次,儘可能少的字符數進行匹配 |
按鍵 |
功能 |
r |
替換當前光標字符 |
:r 文件名 |
在光標當前位置下一行載入另一個文件 |
:%s/p1/p2/g |
將文件中所有p1均用p2替代,p1和p2可以爲正則表達式 |
:n1,n2s/p1/p2/g |
將n1到n2行所有p1均用p2替代 |
:%s/p1/p2/gciIe |
替換時、全局替換,替換確認,忽略大小寫,區分大小寫,沒有匹配時不顯示錯誤 |
:106;/endstring/s/p1/p2/g |
在106行到endstring行的p1內容替換爲p2 |
光標定位
行間定位
按鍵 |
功能 |
gg |
到文件第一行行首 |
G |
到文件最後一行行首,G必須爲大寫 |
:n |
到指定行,n爲目標行數 |
[n]G |
到指定行,n爲目標行數 |
行內定位
按鍵 |
功能 |
w/W |
後移一個字(狹義)/後移一個字(廣義) |
b/e,B/E |
光標移動到當前字首/字尾(廣義,狹義) |
$ |
光標移動到行末尾 |
0 |
光標移動到行開頭 |
fx |
x爲一個字符,光標向右移動到字符x處 |
cw/ce/cb/c4l |
刪除當前光標處經過的字符量,單個單詞不刪除空格,進入插入模式 |
c2w/c2aw |
刪除光標後的兩個單詞,進入插入模式 |
dw/d3e/db/d4l |
刪除當前光標處經過的字符量,並刪除空格 |
定位切換
按鍵 |
功能 |
Ctrl + o(O) |
回到上次編輯的光標位置 |
ctrl + i(I) |
回到下次編輯的光標位置 |
文本編輯
刪除和修改功能
按鍵 |
功能 |
[n]x |
刪除光標後 n 個字符4x |
[n]X |
刪除光標前 n 個字符 |
D |
剪切光標所在開始到此行尾的字符 |
[n]dd |
刪除從當前行開始的 n 行(準確來講,是剪切,剪切不粘貼即爲刪除) |
[n]yy |
複製從當前行開始的 n 行 |
p |
把粘貼板上的內容插入到當前行 |
dG |
刪除光標所在行開始到文件尾的所有字符 |
J |
合併兩行 |
. |
執行上一次操作 |
u |
撤銷前一個命令 |
ctrl+r |
恢復對使用u命令的操作 |
多窗口操作
按鍵 |
功能 |
:sp file |
橫向新增窗口,file爲窗口名 |
:vs file |
縱向新增窗口 |
vim -o file1, file2… |
橫向窗口打開文件 |
vim -O file1, file2… |
縱向窗口打開多個文件 |
:qa |
退出所有窗口 |
:res(ize) num |
顯示行數調整爲num行 |
:res+num/:res-num |
顯示行數增加num行/顯示行數降低num行 |
:vertical res num |
縱向調整顯示行數 |
:n / :N / :n file |
當前窗口顯示爲下一個窗口內容/上一個窗口內容/指定文件內容 |
:e# |
回到剛纔編輯的文件 |
ctrl+w+上下左右 ctrl+w+hjlk ctrl+w+HJLK |
切換到上/下/左/右的一個窗口 切換到←↓↑→的一個窗口 移動窗口位置到←↓↑→ |
ctrl+w+w |
切換到下一個窗口 |
ctrl+w+o |
刪除當前外的其它窗口 |
ctrl+w+= |
設置所有窗口大小相等 |
:resize +N -N N |
設置窗口高度,加,減,等於 |
:vertical res +N -N N |
設置窗口寬度,加,減,等於 |
:tabnew + filename |
創建新標籤頁 |
gt/gT |
切換到下一個/上一個標籤頁 |
輔助命令
按鍵 |
功能 |
:m N |
將本行移動到第N行下方 |
:g/^/m 0 |
倒序文件行,g爲全局查找,^爲文件行 |
: +1d |
刪除當前行的下一行 |
:g/^/+1d :%norm jdd |
刪除偶數行 |
:%norm jkdd |
刪除奇數行 |
:%s/^\(.*\)\(\n\1\)\+$/\1/g |
多行重複行壓縮爲1行 |
:%s/^\(.*\)\n\1$/\1/g |
兩個重複行壓縮爲1行 |
set命令
按鍵 |
功能 |
:set list |
顯示以“$”表示的換行符和以“^I”表示的製表符等特殊符號 |
:set nolist |
取消特殊符號顯示 |
:set ic |
搜尋時不區分大小寫 |
:set noic |
搜尋時區分大小寫 |
:set nu |
顯示行號 |
:set nonu |
不顯示行號 |
:set foldmethod=indent |
摺疊當前的所有代碼,摺疊方式爲縮進 |
zi |
把摺疊狀態的所有代碼展開和關閉 |
zo |
展開當前位置的摺疊代碼 |
zc |
摺疊當前位置的展開代碼 |
za |
切換當前位置的代碼展開和摺疊狀態 |
:vimgrep string **/*.py |
跨文件查找字符串string。 |
:cn/:cp |
跨文件查找字符串的下一個/上一個 |
其它命令
按鍵 |
功能 |
:!cmd |
臨時執行外部shell命令 |
ctrl+u/ctrl+d |
屏幕向前/向後翻頁半個屏幕 |
pageup/pagedown |
屏幕向前/向後翻頁一個屏幕 |
:terminal |
打開終端窗口 |
:map newcmd existcmd |
設置命令映射,newcmd如;asdf |
:help existcmd |
查看已經存在的命令 |
:set hlsearch/nohlsearch |
設置/取消高亮查找 |
:arg **/*.py :args :argdo cmd |
匹配跨文件操作文件 查看跨文件操作文件 執行跨文件操作文件內容的命令cmd |
qx @x qxq |
錄製宏到x寄存器中 播放x中錄製的宏 清空寄存器x中的內容 |
:set wrapscan/nowrapscan |
設置循環查找/非循環查找 |