vim編輯器-vim命令大全

相關文章:vim基本命令

VIM命令大全

本文來源
光標控制命令

命令                 光標移動
h                   向左移一個字符
j                   向下移一行
k                   向上移一行
l                   向右移一個字符
G                   移到文件的最后一行
w                   移到下一個字的開頭
W                   移到下一個字的開頭,忽略標點符號
b                   移到前一個字的開頭
B                   移到前一個字的開頭,忽略標點符號
L                   移到屏幕的最后一行
M                   移到屏幕的中間一行
H                   移到屏幕的第一行
e                   移到下一個字的結尾
E                   移到下一個字的結尾,忽略標點符號
(                    移到句子的開頭
)                    移到句子的結尾
{                    移到段落的開頭
}                    移到下一個段落的開頭
0(數字), |           移到當前行的第一列
^                   移到當前行的第一個非空字符
$                   移到當前行的最后一個字符
+, Enter           移到下一行的第一個字符
\-                  移到前一行的第一個非空字符

在 vi 中添加文本

命令                   插入動作
a                   在光標后插入文本
A                   在當前行插入文本
i                   在光標前插入文本
I                   在當前行前插入文本
o                   在當前行的下邊插入新行
O                   在當前行的上邊插入新行
s                   刪除光標所在處字符,并進入插入模式
S                   刪除光標所在的行,并進入插入模式
:r file             讀入文件 file 內容,并插在當前行后
:nr file            讀入文件 file 內容,并插在第 n 行后
Esc                 回到命令模式
^v char             插入時忽略 char 的指定意義,這是為了插入特殊字符

在 vi 中刪除文本

命令                   刪除操作
x                   刪除光標處的字符
dw                  刪至下一個字的開頭
dG                  刪除行,直到文件結束
dd                  刪除整行
db                  刪除光標前面的字
:n,md               從第 m 行開始往前刪除 n 行
d, d$               從光標處刪除到行尾
^h, backspace       插入時,刪除前面的字符
^w                  插入時,刪除前面的字

修改 vi 文本

每個命令前面的數字表示該命令重復的次數
命令                               替換操作
rchar                         用 char 替換當前字符
R text escape                 用 text 替換當前字符直到按下 Esc 鍵
stext escape                  用 text 代替當前字符
S 或 cctext escape             用 text 代替整行
cwtext escape                 將當前字改為 text
Ctext escape                  將當前行余下的改為 text
cG escape                     修改至文件的末尾
ccursor_cmd text escape       從當前位置處到光標命令位置處都改為 text

在 vi 中查找與替換

命令                               查找與替換操作
/text                         在文件中向前查找 text
?text                         在文件中向后查找 text
n                             在同一方向重復查找
N                             在相反方向重復查找
ftext                         在當前行向前查找 text
Ftext                         在當前行向后查找 text
ttext                         在當前行向前查找 text,并將光標定位在 text 的第一個字符
Ttext                         在當前行向后查找 text,并將光標定位在 text 的第一個字符
:set ic                       查找時忽略大小寫
:set noic                     查找時對大小寫敏感
:ranges/pat1/pat2/g           用 newtext 替換 oldtext
:m,ns/oldtext/newtext         在 m 行通過 n,用 newtext 替換 oldtext
&                             重復最后的 :s 命令
:g/text1/s/text2/text3        查找包含 text1 的行,用 text3 替換 text2
:g/text/command               在所有包含 text 的行運行 command 所表示的命令
:v/text/command               在所有不包含 text 的行運行 command 所表示的命令

在 vi 中復制文本

命令                           復制操作
yy                    將當前行的內容放入臨時緩沖區
nyy                   將 n 行的內容放入臨時緩沖區
p                     將臨時緩沖區中的文本放入光標后
P                     將臨時緩沖區中的文本放入光標前
"(a-z)nyy             復制 n 行放入名字為圓括號內的可命名緩沖區,省略 n 表示當前行
"(a-z)ndd             刪除 n 行放入名字為圓括號內的可命名緩沖區,省略 n 表示當前行
"(a-z)p               將名字為圓括號的可命名緩沖區的內容放入當前行后
"(a-z)P               將名字為圓括號的可命名緩沖區的內容放入當前行前

在 vi 中撤消與重復

命令               撤消操作
u               撤消最后一次修改
U               撤消當前行的所有修改
.               重復最后一次修改
,               以相反的方向重復前面的 f、F、t 或 T 查找命令
;               重復前面的 f、F、t 或 T 查找命令
"np             取回最后第 n 次的刪除(緩沖區中存有一定次數的刪除內容,一般為 9)
n               重復前面的 / 或 ? 查找命令
N               以相反方向重復前面的 / 或 ? 命令

保存文本和退出 vi

命令                       保存和/或退出操作
:w                    保存文件但不退出 vi
:w file               將修改保存在 file 中但不退出 vi
:wq 或 ZZ 或 :x       保存文件并退出 vi
:q!                   不保存文件,退出 vi
:e!                   放棄所有修改,從上次保存文件開始再編輯

vi 中的選項

選項                      作用
:set all              打印所有選項
:set nooption         關閉 option 選項
:set nu               每行前打印行號
:set showmode         顯示是輸入模式還是替換模式
:set autoindent       繼承前一行的縮進方式,特別適用于多行注釋
:set smartindent      為C程序提供自動縮進
:set list             顯示制表符(^I)和行尾符號
:set ts=8             為文本輸入設置 tab stops
:set window=n         設置文本窗口顯示 n 行
:set number           顯示行數
:set nonumber         取消顯示行數

vi 的狀態

選項                   作用
:.=                打印當前行的行號
:=                 打印文件中的行數
ctrl+g             顯示文件名、當前的行號、文件的總行數和文件位置的百分比
:l                 使用字母 "l" 來顯示許多的特殊字符,如制表符和換行符

在文本中定位段落和放置標記

選項                            作用
{                          在第一列插入 { 來定義一個段落
[[                         回到段落的開頭處
]]                         向前移到下一個段落的開頭處
m(a-z)                     用一個字母來標記當前位置,如用 mz 表示標記 z
'(a-z)                     將光標移動到指定的標記,如用 'z 表示移動到 z
</pre></code>
**在 vi 中連接行**
<pre><code>
選項                      作用
J                     將下一行連接到當前行的末尾
nJ                    連接后面 n 行

光標放置與屏幕調整

選項                      作用
H                     將光標移動到屏幕的頂行
nH                    將光標移動到屏幕頂行下的第 n 行
M                     將光標移動到屏幕的中間
L                     將光標移動到屏幕的底行
nL                    將光標移動到屏幕底行上的第 n 行
^e(ctrl+e)            將屏幕上滾一行
ctrl+y                將屏幕下滾一行
ctrl+u                將屏幕上滾半頁
ctrl+d                將屏幕下滾半頁
ctrl+b                將屏幕上滾一頁
ctrl+f                將屏幕下滾一頁
ctrl+l                重繪屏幕
z-return              將當前行置為屏幕的頂行
nz-return             將當前行下的第 n 行置為屏幕的頂行
z.                    將當前行置為屏幕的中央
nz.                   將當前行上的第 n 行置為屏幕的中央
z-                    將當前行置為屏幕的底行
nz-                   將當前行上的第 n 行置為屏幕的底行

vi 中的 shell 轉義命令

選項                      作用
:!command             執行 shell 的 command 命令,如 :!ls
:!!                   執行前一個 shell 命令
:r!command            讀取 command 命令的輸入并插入,如 :r!ls 會先執行 ls,然后讀入內容
:w!command            將當前已編輯文件作為 command 命令的標準輸入并執行 command 命令,如 :w!grep all
:cd directory         將當前工作目錄更改為 directory 所表示的目錄
:sh                   將啟動一個子 shell,使用 ^d(ctrl+d) 返回 vi
:so file              在 shell 程序 file 中讀入和執行命令

vi 中的宏與縮寫(避免使用控制鍵和符號,不要使用字符 K、V、g、q、v、、= 和功能鍵)*

選項                      作用
:map key command_seq  定義一個鍵來運行 command_seq,如 :map e ea,無論什么時候都可以 e 移到一個字的末尾來追加文本
:map                  在狀態行顯示所有已定義的宏
:umap key             刪除該鍵的宏
:ab string1 string2   定義一個縮寫,使得當插入 string1 時,用 string2 替換 string1。當要插入文本時,鍵入 string1 然后按 Esc 鍵,系統就插入了 string2
:ab                   顯示所有縮寫
:una string           取消 string 的縮寫

在 vi 中縮進文本

選項                           作用
ctrl+i或 tab          插入文本時,插入移動的寬度,移動寬度是事先定義好的
:set ai               打開自動縮進
:set sw=n             將移動寬度設置為 n 個字符
n>                   使 n 行都向右移動一個寬度,例如 3>> 就將接下來的三行每行都向右移動一個移動寬度
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容