歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Vim常見使用命令總結完整分享

Vim常見使用命令總結完整分享

日期:2017/2/28 15:28:36   编辑:Linux教程

vim是linux下命令行一款經典編輯器,操作簡單、功能強大,這是很多unix上元老級程序員的摯愛。這是我總結整理的vim最常用的命令集合,沒事常閱讀,最重要的是有問題了,嘗試用這些東西去解決問題,不一定是高效快捷的,但起碼是有效的。

打開vim的方式

vim filename #打開文件filename,並將光標置於第一行首
vim +n filename #打開文件filename,並將光標置於第 n 行首
vim + filename #打開文件filename,並將光標置於最後一行
vim + /pattern file #打開文件file,並將光標置於其中第一個於pattern 匹配的字符串處
vim –r filename #在上次正用vi編輯filefame發生系統崩潰後,恢復filename
vim file1 … filen #打開多個文件,依次對之進行編輯
vim -o file1 … filen #用水平分隔的方式打開多個文件然後進行編輯
vimdiff filename1 filename2 #用垂直分割的方式打開兩個文件filename1,filename2並顯示不同比較

插入數據操作

行操作:
I #在光標所在行首插入文本
A #在光標所在行尾添加文本
o(open) #在光標所在行下面添加一行
O #在光標所在行上面添加一行
nS #從當前行開始,刪除向下 n 行並進入編輯模式,若無 n 刪除當前所在行,並進入編輯模式
:r filename #在編輯數據中讀入一個文件內容數據,並把這些數據添加到光標所在行後面

字符操作:
i(insert) #在光標前插入文本
a(append) #在光標後插入文本
r(Replace) #替換光標所在處字符,結束替換
R #替換多個字符,以按下 [Esc] 鍵標志替換結束
ns #從當前光標位置處開始,刪除 n 個字符並進入編輯模式,若無 n 刪除一個字符,並進入編輯模式

改變某區域:
可以重復的:
[c]+[num]+[ h / j / k / l / w / b / e / ( / ) / { / } / $ / G / /word / ?word / tc / Tc / fc / Fc / `c ]
c: #表示改變操作
重復操作次數: #num 表示操作重復次數
操作區域選擇:
    h #改變光標前一個字符
    l #改變光標所在處的字符
    j #改變本行與下一行
    k #改變本行與上一行
    w #改變光標開始到下一個單詞詞首處
    b #改變光標開始到上一個單詞詞首處
    e #改變光標開始到這個單詞的結尾處
    ( #改變光標開始到句子結束處
    ) #改變光標開始到句子開始處
    { #改變光標開始到段落開始處
    } #改變光標開始到段落結束處
    $ #改變從光標開始處到行尾處
    G #改變從光標所在行到行尾處
    /word #改變從光標開始處到下個word字符串,不含word ( word 指代任意字符串,正則表達式 )
    ?word #改變從光標開始處到上個word 字符串,不含word ( word 指代任意字符串,正則表達式 )
    tc #改變從光標開始處到下個 c 字符處,不含 c ( c 指代任意字符 )
    Tc #改變從光標開始處到上個 c 字符處,不含 c ( c 指代任意字符 )
    fc #改變從光標開始處到下個 c 字符處,含 c ( c 指代任意字符 )
    Fc #改變從光標開始處到上個 c 字符處,含 c ( c 指代任意字符 )
    `c #改變從光標開始到標記 c 這個位置
不可重復的:
[c]+[ 0 / ^ / H / L]
c: #表示改變操作
操作區域選擇:
    0 #改變從光標所在處到某一行的開始位置
    ^ #改變到某一行的第一個字符位置(不包括空格或TAB字符)
    L #改變直到屏幕上最後一行的內容
    H #改變直到屏幕上第一行的內容
[c]+[i]+[ { / } / ( / ) / " / ' ]
c: #表示改變操作
i: #表示 in 即在裡面的意思
操作區域選擇:
    { #改變在 {} 中內容( 要求光標在 {} 內 )
    } #改變在 {} 中內容( 要求光標在 {} 內 )
    [ #改變在 [] 中內容( 要求光標在 [] 內 )
    ] #改變在 [] 中內容( 要求光標在 [] 內 )
    ( #改變在 () 中內容( 要求光標在 {} 內 )
    ) #改變在 () 中內容( 要求光標在 () 內 )
    " #改變在 "" 中內容( 要求光標在 "" 內 )
    ' #改變在 '' 中內容( 要求光標在 '' 內 )

保存/退出

:q #退出vim 返回到shell,若有修改未被保存,vi 在末行給出提示信息並不退出vim到 shell
:q! #退出 vim 返回到 shell,放棄未保存的修改
:wq #保存後退出,無論文件是否有修改,都更新文件的修改時間
:x #保存後退出,若文件沒有修改的話,不更新文件的修改時間
:w #將編輯的數據寫入硬盤中
:w! #若文件屬性為"只讀"時,強制寫入該文件
:w filename #寫入當前文件到 filename 文件
ZZ #若文件沒有更動,則不保存離開,若文件被更動過,則保存後離開
:n1,n2 w filename #將 n1 到 n2 的內容保存到 filename 這個文件中

移動光標

位移
字符操作:
nh / n← #向左移動 n 字符,無 n 移動一字符
nl / n→ #向右移動 n 字符,無 n 移動一字符
n #n 表示“數字”,光標會向右移動這一行 n 個字符.
0 #這是數字 “0”:移動到這一行的最前面字符處
^ #移動到這一行的最開始字符處行操作:
nj / n↓ #向下移動 n 行,無 n 移動一行
nk / n↑ #向上移動 n 行,無 n 移動一行
[Ctrl+p] #光標上移一行
[Ctrl+n] #光標下移一行
n+ #光標下移到 n 行頭,若沒有 n 光標移到下行行頭
n- #光標上移到 n 行頭,若沒有 n 光標移到上行行頭
n$ #光標下移到 n 行尾,若沒有 n 則移動到本行行尾
n_ #向下移動 n-1 行,並光標移動到非空白行首
H #光標移動到這個屏幕的最上方哪一行
M #光標移動到這個屏幕的中央哪一行
L #光標移動到這個屏幕的最下方哪一行
nG #n 為數字.移動到這個文件的第 n 行.若沒有 n 則移動到最後一行
gg #移動到這個文件的第一行,相當於 1G
n #向下移動 n 行,無 n 移動一行

跳轉

W / w #光標右移一個字至字首.
B / b #光標左移一個字至字首.
E / e #光標右移一個字至字尾.
( #光標移到上個句子句首.
) #光標移到下個句子句首.
{ #光標移到上個段落句首.
} #光標移到下個段落句首.
fc #光標跳轉到本行下一個字符 c 處( c 指代任意字符 )
Fc #光標跳轉到本行上一個字符 c 處( c 指代任意字符 )
tc #光標跳轉到本行下一個字符 c 的前一個字符處( c 指代任意字符 )
Tc #光標跳轉到本行上一個字符 c 的後一個字符處( c 指代任意字符 )
/word #光標跳轉到下一個字符串word 處,並把所有word 單詞高亮顯示( word 指代任意字符串,正則表達式 )
?word #光標跳轉到上一個字符串word 處,並把所有word 單詞高亮顯示( word 指代任意字符串,正則表達式 )
# #光標跳轉到下個與光標所在處單詞相同的單詞,並把所有與光標所在處的相同的單詞高亮顯示
* #光標跳轉到上個與光標所在處單詞相同的單詞,並把所有與光標所在處的相同的單詞高亮顯示
gd #將與光標所在處的單詞相同的單詞全部高亮顯示,並跳轉到上一個高亮顯示的單詞
gD #將與光標所在處的單詞相同的單詞全部高亮顯示,並跳轉到最前面一個高亮顯示的單詞
`. #跳轉至上次編輯位置
`c #將光標轉移到書簽 c 處( c 為任意字符 )

下面兩個與 / 與 ? 組合著用:
n #下一個匹配(如果是/搜索,則是向下的下一個,?搜索則是向上的下一個,但其實它只會在高亮字符中切換)
N #上一個匹配(同上)
與 f/F 配合使用的命令:
; #重復上一個f命令

還原與重做

. #重復前一個操作
u #還原前一個操作
[Ctrl]+r #重做上一個操作

滾動屏幕

[Ctrl+f] #屏幕“向下”移動一頁,相當於[Page Down]按鍵
[Ctrl+b] #屏幕“向上”移動一頁,相當於[Page Up]按鍵
[Ctrl+d] #屏幕“向下”移動半頁
[Ctrl+u] #屏幕“向上”移動半頁
[Ctrl+e] #屏幕向下滾一行
[Ctrl+y] #屏幕項上滾一行
nz #將第 n 行滾至屏幕頂部。不指定 n 時將當前行滾至屏幕頂
:$ #屏幕滾到文章最後一行
:0 #屏幕滾到文章最開始一行
Copyright © Linux教程網 All Rights Reserved