Linux系統下vim命令集合,linuxvim命令集合
Vim命令合集
命令曆史
以:和/開頭的命令都有曆史紀錄,可以首先鍵入:或/然後按上下箭頭來選擇某個曆史命令。
啟動vim
在命令列視窗中輸入以下命令即可
vim直接啟動vim
vim filename開啟vim並建立名為filename的檔案
檔案命令
開啟單個檔案
vim file
同時開啟多個檔案
vim file1 file2 file3 ...
在vim視窗中開啟一個新檔案
:open file
在新視窗中開啟檔案
:split file
切換到下一個檔案
:bn
切換到上一個檔案
:bp
查看當前開啟的檔案清單,當前正在編輯的檔案會用[]括起來。
:args
開啟遠程檔案,比如ftp或者share folder
:eftp://192.168.10.76/abc.txt
:e \\qadrive\test\1.txt
vim的模式
正常模式(按Esc或Ctrl+[進入) 左下角顯示檔案名稱或為空白
插入模式(按i鍵進入) 左下角顯示--INSERT--
可視模式(不知道如何進入)左下角顯示--VISUAL--
導航命令
%括弧匹配
插入命令
i在當前位置生前插入
I在當前行首插入
a在當前位置後插入
A在當前行尾插入
o在當前行之後插入一行
O在當前行之前插入一行
尋找命令
/text 尋找text,按n健尋找下一個,按N健尋找前一個。
?text 尋找text,反向尋找,按n健尋找下一個,按N健尋找前一個。
vim中有一些特殊字元在尋找時需要轉義 .*[]^%/?~$
:set ignorecase 忽略大小寫尋找
:set noignorecase 不忽略大小寫尋找
尋找很長的詞,如果一個詞很長,鍵入麻煩,可以將游標移動到該詞上,按*或#鍵即可以該單詞進行搜尋,相當於/搜尋。而#命令相當於?搜尋。
:set hlsearch 高亮搜尋結果,所有結果都高亮顯示,而不是只顯示一個匹配。
:set nohlsearch 關閉高亮搜尋顯示
:nohlsearch 關閉當前的高亮顯示,如果再次搜尋或者按下n或N鍵,則會再次高亮。
:set incsearch 逐步搜尋模式,對當前鍵入的字元進行搜尋而不必等待鍵入完成。
:set wrapscan 重新搜尋,在搜尋到檔案頭或尾時,返回繼續搜尋,預設開啟。
替換命令
ra將當前字元替換為a,當期字元即游標所在字元。
s/old/new/用old替換new,替換當前行的第一個匹配
s/old/new/g用old替換new,替換當前行的所有匹配
%s/old/new/用old替換new,替換所有行的第一個匹配
%s/old/new/g用old替換new,替換整個檔案的所有匹配
:10,20 s/^/ /g在第10行知第20行每行前面加四個空格,用於縮排。
ddp交換游標所在行和其下緊鄰的一行。
移動命令
h左移一個字元
l右移一個字元,這個命令很少用,一般用w代替。
k上移一個字元
j下移一個字元
以上四個命令可以配合數字使用,比如20j就是向下移動20行,5h就是向左移動5個字元,在Vim中,很多命令都可以配合數字使用,比如刪除10個字元10x,在當前位置後插入3個!,3a!,這裡的Esc是必須的,否則命令不生效。
w向前移動一個單詞(游標停在單詞首部),如果已到行尾,則轉至下一行行首。此命令快,可以代替l命令。
b向後移動一個單詞2b向後移動2個單詞
e,同w,只不過是游標停在單詞尾部
ge,同b,游標停在單詞尾部。
^移動到本行第一個非空白字元上。
0(數字0)移動到本行第一個字元上,
移動到本行第一個字元。同0健。
$移動到行尾3$移動到下面3行的行尾
gg移動到檔案頭。= [[
G(shift + g) 移動到檔案尾。= ]]
f(find)命令也可以用於移動,fx將找到游標後第一個為x的字元,3fd將找到第三個為d的字元。
F同f,反向尋找。
跳到指定行,冒號+行號,斷行符號,比如跳到240行就是:240斷行符號。另一個方法是行號+G,比如230G跳到230行。
Ctrl + e向下滾動一行
Ctrl + y向上滾動一行
Ctrl + d向下滾動半屏
Ctrl + u向上滾動半屏
Ctrl + f向下滾動一屏
Ctrl + b向上滾動一屏
撤銷和重做
u撤銷(Undo)
U撤銷對整行的操作
Ctrl + r重做(Redo),即撤銷的撤銷。
刪除命令
x刪除當前字元
3x刪除當前游標開始向後三個字元
X刪除當前字元的前一個字元。X=dh
dl刪除當前字元,dl=x
dh刪除前一個字元
dd刪除當前行
dj刪除上一行
dk刪除下一行
10d刪除當前行開始的10行。
D刪除當前字元至行尾。D=d$
d$刪除當前字元之後的所有字元(本行)
kdgg刪除當前行之前所有行(不包括當前行)
jdG(jd shift + g)刪除當前行之後所有行(不包括當前行)
:1,10d刪除1-10行
:11,$d刪除11行及以後所有的行
:1,$d刪除所有行
J(shift + j) 刪除兩行之間的空行,實際上是合并兩行。
拷貝和粘貼
yy拷貝當前行
nyy拷貝當前後開始的n行,比如2yy拷貝當前行及其下一行。
p在當前游標後粘貼,如果之前使用了yy命令來複製一行,那麼就在當前行的下一行粘貼。
shift+p在當前行前粘貼
:1,10 co 20將1-10行插入到第20行之後。
:1,$ co $將整個檔案複製一份並添加到檔案尾部。
正常模式下按v(逐字)或V(逐行)進入可視模式,然後用jklh命令移動即可選擇某些行或字元,再按y即可複製
ddp交換當前行和其下一行
xp交換當前字元和其後一個字元
剪下命令
正常模式下按v(逐字)或V(逐行)進入可視模式,然後用jklh命令移動即可選擇某些行或字元,再按d即可剪下
ndd剪下當前行之後的n行。利用p命令可以對剪下的內容進行粘貼
:1,10d將1-10行剪下。利用p命令可將剪下後的內容進行粘貼。
:1, 10 m 20將第1-10行移動到第20行之後。
退出命令
:wq儲存並退出
ZZ儲存並退出
:q!強制退出並忽略所有更改
:e!放棄所有修改,並開啟原來檔案。
視窗命令
:split或new開啟一個新視窗,游標停在頂層的視窗上
:split file或:new file用新視窗開啟檔案
split開啟的視窗都是橫向的,使用vsplit可以縱向開啟視窗。
Ctrl+ww移動到下一個視窗
Ctrl+wj移動到下方的視窗
Ctrl+wk移動到上方的視窗
關閉視窗
:close最後一個視窗不能使用此命令,可以防止意外退出vim。
:q如果是最後一個被關閉的視窗,那麼將退出vim。
ZZ儲存並退出。
關閉所有視窗,只保留當前視窗
:only
錄製宏
按q鍵加任意字母開始錄製,再按q鍵結束錄製(這意味著vim中的宏不可嵌套),使用的時候@加宏名,比如qa。。。q錄製名為a的宏,@a使用這個宏。
執行shell命令
:!command
:!ls列出目前的目錄下檔案
:!perl -c script.pl檢查perl指令碼文法,可以不用退出vim,非常方便。
:!perl script.pl執行perl指令碼,可以不用退出vim,非常方便。
:suspend或Ctrl - Z掛起vim,回到shell,按fg可以返回vim。
注釋命令
perl程式中#開始的行為注釋,所以要注釋某些行,只需在行首加入#
3,5 s/^/#/g注釋第3-5行
3,5 s/^#//g解除3-5行的注釋
1,$ s/^/#/g注釋整個文檔。
:%s/^/#/g注釋整個文檔,此法更快。
協助命令
:help or F1顯示整個協助
:help xxx顯示xxx的協助,比如:help i, :help CTRL-[(即Ctrl+[的協助)。
:help 'number' Vim選項的協助用單引號括起
:help 特殊鍵的協助用<>擴起
:help -t Vim啟動參數的協助用-
:help i_插入模式下Esc的協助,某個模式下的協助用模式_主題的模式
協助檔案中位於||之間的內容是超連結,可以用Ctrl+]進入連結,Ctrl+o(Ctrl + t)返回
其他非編輯命令
.重複前一次命令
:set ruler? 查看是否設定了ruler,在.vimrc中,使用set命令設制的選項都可以通過這個命令查看
:scriptnames 查看vim指令檔的位置,比如.vimrc檔案,文法檔案及plugin等。
:set list顯示非列印字元,如tab,空格,行尾等。如果tab無法顯示,請確定用set lcs=tab:>-命令設定了.vimrc檔案,並確保你的檔案中的確有tab,如果開啟了expendtab,那麼tab將被擴充為空白格。
Vim教程
在Unix系統上
$ vimtutor
在Windows系統上
:help tutor
:syntax列出已經定義的文法項
:syntax clear清除已定義的文法規則
:syntax case match大小寫敏感,int和Int將視為不同的文法元素
:syntax case ignore大小寫無關,int和Int將視為相同的文法元素,並使用同樣的色彩配置
vi使用方法詳細介紹
vi編輯器是所有Unix及Linux系統下標準的編輯器,它的強大不遜色於任何最新的文字編輯器,這裡只是簡單地介紹一下它的用法和一小部分指令。由於對Unix及Linux系統的任何版本,vi編輯器是完全相同的,因此您可以在其他任何介紹vi的地方進一步瞭解它。Vi也是Linux中最基本的文字編輯器,學會它後,您將在Linux的世界裡暢行無阻。
1、vi的基本概念
基本上vi可以分為三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下:
1) 命令列模式command mode)
控制螢幕游標的移動,字元、字或行的刪除,移動複製某區段及進入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令列模式。
3) 底行模式(last line mode)
將檔案儲存或退出vi,也可以設定編輯環境,如尋找字串、列出行號……等。
不過一般我們在使用時把vi簡化成兩個模式,就是將底行模式(last line mode)也算入命令列模式command mode)。
2、vi的基本操作
a) 進入vi
在系統提示符號輸入vi及檔案名稱後,就進入vi全螢幕編輯畫面:
$ vi myfile
不過有一點要特別注意,就是您進入vi之後,是處於「命令列模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動游標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi後,先不要亂動,轉換到「插入模式(Insert mode)」再說吧!
b) 切換至插入模式(Insert mode)編輯檔案
在「命令列模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
c) Insert 的切換
您目前處於「插入模式(Insert mode)」,您就只能一直輸入文字,如果您發現輸錯了字!想用游標鍵往回移動,將該字刪除,就要先按一下「ESC」鍵轉到「命令列模式(command mode)」再刪除文字。
d) 退出vi及儲存檔案
在「命令列模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」,例如:
| : w filename |
(輸入 「w filename」將文章以指定的檔案名稱filename儲存) |
| : wq |
(輸入「wq」,存檔並退出vi) |
| : q! |
(輸入q!, 不存檔強制退出vi) |
3、命令列模式(command mode)功能鍵
1). 插入模式
| 按「i」切換進入插入模式「insert mode」 |
按"i"進入插入模式後是從游標當前位置開始輸入檔案 |
| 按「a」進入插入模式後 |
是從目前游標所在位置的下一個位置開始輸入文字 |
| 按「o」進入插入模式後 |
是插入新的一行,從行首開始輸入文字 |
2). 從插入模式切換為命令列模式
按「ESC」鍵。
3). 移動游標
| 按「ctrl」+「b」 |
螢幕往"後"移動一頁 |
按「ctrl」+「f」 |
螢幕往"前"移動一頁 |
| 按「ctrl」+「u」 |
螢幕往"後"移動半頁。 |
按「ctrl」+「d」 |
螢幕往"前"移動半頁 |
| 按數字「0」 |
移到文章的開頭 |
按「G」 |
移動到文章的最後 |
| 按「$」 |
移動到游標所在行的"行尾" |
按「^」 |
移動到游標所在行的"行首" |
| 按「w」 |
游標跳到下個字的開頭 |
按「e」 |
游標跳到下個字的字尾 |
| 按「b」 |
游標回到上個字的開頭 |
按「#l」 |
游標移到該行的第#個位置,如:5l,56l。 |
vi可以直接用鍵盤上的游標來上下左右移動,但正規的vi是用小寫英文字母「h」、「j」、「k」、「l」,分別控制游標左、下、上、右移一格。
4). 刪除文字
| 「x」 |
每按一次,刪除游標所在位置的"後面"一個字元 |
| 「#x」 |
例如,「6x」表示刪除游標所在位置的"後面"6個字元 |
| 「X」 |
大寫的X,每按一次,刪除游標所在位置的"前面"一個字元 |
| 「#X」 |
例如,「20X」表示刪除游標所在位置的"前面"20個字元 |
| 「dd」 |
刪除游標所在行 |
| 「#dd」 |
從游標所在行開始刪除#行 |
5). 複製
| 「yw」 |
將游標所在之處到字尾的字元複製到緩衝區中 |
| 「#yw」 |
複製#個字到緩衝區 |
| 「yy」 |
複製游標所在行到緩衝區 |
| 「#yy」 |
例如,「6yy」表示拷貝從游標所在的該行"往下數"6行文字 |
| 「p」 |
將緩衝區內的字元貼到游標所在位置。注意:所有與"y"有關的複製命令都必須與"p"配合才能完成複製與粘貼功能 |
6). 替換
| 「r」 |
替換游標所在處的字元。 |
| 「R」 |
替換游標所到之處的字元,直到按下「ESC」鍵為止 |
7). 回複上一次操作
「u」:如果您誤執行一個命令,可以馬上按下「u」,回到上一個操作。按多次"u"可以執行多次回複。
8). 更改
| 「cw」 |
更改游標所在處的字到字尾處 |
| 「c#w」 |
例如,「c3w」表示更改3個字 |
9). 跳至指定的行
「ctrl」+「g」列出游標所在行的行號。
「#G」:例如,「15G」,表示移動游標至文章的第15行行首。
4、Last line mode下命令簡介
在使用「last line mode」之前,請記住先按「ESC」鍵確定您已經處於「command mode」下後,再按「:」冒號即可進入「last line mode」。
A) 列出行號
| 「set nu」 |
輸入「set nu」後,會在檔案中的每一行前面列出行號 |
B) 跳到檔案中的某一行
「#」:「#」號表示一個數字,在冒號後輸入一個數字,再按斷行符號鍵就會跳到該行了,如輸入數字15,再斷行符號,就會跳到文章的第15行。
C) 尋找字元
「/關鍵字」:先按「/」鍵,再輸入您想尋找的字元,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往後尋找到您要的關鍵字為止。
「?關鍵字」:先按「?」鍵,再輸入您想尋找的字元,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止。
D) 儲存檔案
| 「w」 |
在冒號輸入字母「w」就可以將檔案儲存起來。 |
「E」 |
離開vi |
| 「q」 |
按「q」就是退出,如果無法離開vi,可以在「q」後跟一個「!」強制離開vi |
「qw」 |
一般建議離開時,搭配「w」一起使用, 這樣在退出的時候還可以儲存檔案 |
5、vi命令列表
1、下表列出命令模式下的一些鍵的功能:
l |
右移游標一個字元 |
k |
游標上移一行 |
h |
左移游標一個字元 |
j |
游標下移一行 |
^ |
游標移動至行首 |
0 |
數字"0",游標移至文章的開頭 |
G |
游標移至文章的最後 |
$ |
游標移動至行尾 |
Ctrl+f |
向前翻屏 |
Ctrl+b |
向後翻屏 |
Ctrl+d |
向前翻半屏 |
Ctrl+u |
向後翻半屏 |
i |
在游標位置前插入字元 |
a |
在游標所在位置的後一個字元開始增加 |
o |
插入新的一行,從行首開始輸入 |
ESC |
從輸入狀態退至命令狀態 |
x |
刪除游標後面的字元 |
#x |
刪除游標後的#個字元 |
X |
(大寫X),刪除游標前面的字元 |
#X |
刪除游標前面的#個字元 |
dd |
刪除游標所在的行 |
#dd |
刪除從游標所在行數的#行 |
yw |
複製游標所在位置的一個字 |
#yw |
複製游標所在位置的#個字 |
yy |
複製游標所在位置的一行 |
#yy |
複製從游標所在行數的#行 |
p |
粘貼 |
u |
取消操作 |
cw |
更改游標所在位置的一個字 |
#cw |
更改游標所在位置的#個字 |
2、下表列出行命令模式下的一些指令
| w filename |
儲存正在編輯的檔案為filename |
| wq filename |
儲存正在編輯的檔案為filename,並退出vi |
| q! |
放棄所有修改,退出vi |
| set nu |
顯示行號 |
| /或? |
尋找,在/後輸入要尋找的內容 |
| n |
與/或?一起使用,如果尋找的內容不是想要找的關鍵字,按n或向後(與/聯用)或向前(與?聯用)繼續尋找,直到找到為止。 |
對於第一次用vi,有幾點注意要提醒一下:
1、用vi開啟檔案後,是處於「命令列模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。切換方法:在「命令列模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。
2、編輯好後,需從插入模式切換為命令列模式才能對檔案進行儲存,切換方法:按「ESC」鍵。
3、儲存並退出檔案:在命令模式下輸入:wq即可!(別忘了wq前面的)
vi使用手冊
VI是unix上最常用的文本編輯工具,作為unix軟體測試人員,有必要熟練掌握它。
進入vi的命令
| vi filename |
開啟或建立檔案,並將游標置於第一行首 |
| vi +n filename |
開啟檔案,並將游標置於第n行首 |
| vi + filename |
開啟檔案,並將游標置於最後一行首 |
| vi +/pattern filename |
開啟檔案,並將游標置於第一個與pattern匹配的串處 |
| vi -r filename |
在上次正用vi編輯時發生系統崩潰,恢複filename |
| vi filename....filename |
開啟多個檔案,依次編輯 |
移動游標類命令
| h |
游標左移一個字元 |
l |
游標右移一個字元 |
| space |
游標右移一個字元 |
Backspace |
游標左移一個字元 |
| k或Ctrl+p |
游標上移一行 |
j或Ctrl+n |
游標下移一行 |
| Enter |
游標下移一行 |
w或W |
游標右移一個字至字首 |
| b或B |
游標左移一個字至字首 |
e或E |
游標右移一個字j至字尾 ) :游標移至句尾 ( :游標移至句首 }:游標移至段落開頭 {:游標移至段落結尾 |
| nG |
游標移至第n行首 |
n+ |
游標下移n行 |
| n- |
游標上移n行 |
n$ |
游標移至第n行尾 |
| H |
游標移至螢幕頂行 |
M |
游標移至螢幕中間行 |
| L |
游標移至螢幕最後行 |
0 |
(注意是數字零)游標移至當前行首 |
| $ |
游標移至當前行尾 |
|
|
螢幕翻滾類命令
| Ctrl+u |
向檔案首翻半屏 |
Ctrl+d |
向檔案尾翻半屏 |
| Ctrl+f |
向檔案尾翻一屏 |
Ctrl+b |
向檔案首翻一屏 |
| nz |
將第n行滾至螢幕頂部,不指定n時將當前行滾至螢幕頂部 |
|
|
插入文本類命令
| i |
在游標前 |
I |
在當前行首 |
| a |
游標後 |
A |
在當前行尾 |
| o |
在當前行之下新開一行 |
O |
在當前行之上新開一行 |
| r |
替換當前字元 |
R |
替換當前字元及其後的字元,直至按ESC鍵 |
| s |
從當前游標位置處開始,以輸入的文本替代指定數目的字元 |
S |
刪除指定數目的行,並以所輸入文本代替之 |
| ncw或nCW |
修改指定數目的字 |
nCC |
修改指定數目的行 |
刪除命令
| ndw或ndW |
刪除游標處開始及其後的n-1個字 |
do |
刪至行首 |
| d$ |
刪至行尾 |
ndd |
刪除當前行及其後n-1行 |
| x或X |
刪除一個字元,x刪除游標後的,而X刪除游標前的 |
Ctrl+u |
刪除輸入方式下所輸入的文本 |
搜尋及替換命令 :
| /pattern |
從游標開始處向檔案尾搜尋pattern |
| ?pattern |
從游標開始處向檔案首搜尋pattern |
| n |
在同一方向重複上一次搜尋命令 |
| N |
:在反方向上重複上一次搜尋命令 :s/p1/p2/g:將當前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:將檔案中所有p1均用p2替換 |
選項設定
| all |
列出所有選項設定情況 |
term |
設定終端類型 |
| ignorance |
在搜尋中忽略大小寫 |
list |
顯示製表位(Ctrl+I)和行尾標誌($) |
| number |
顯示行號 |
report |
顯示由面向行的命令修改過的數目 |
| terse |
顯示簡短的警告資訊 |
warn |
在轉到別的檔案時若沒儲存當前檔案則顯示NO write資訊 |
| nomagic |
允許在搜尋模式中,使用前面不帶“\”的特殊字元 |
nowrapscan |
禁止vi在搜尋到達檔案兩端時,又從另一端開始 |
| mesg |
允許vi顯示其他使用者用write寫到自己終端上的資訊 |
|
|
最後行方式命令
| :n1,n2 co n3 |
將n1行到n2行之間的內容拷貝到第n3行下 |
| :n1,n2 m n3 |
將n1行到n2行之間的內容移至到第n3行下 |
| :n1,n2 d |
將n1行到n2行之間的內容刪除 |
| :w |
儲存當前檔案 |
| :e filename |
開啟檔案filename進行編輯 |
| :x |
儲存當前檔案並退出 |
| :q |
退出vi |
| :q! |
不儲存檔案並退出vi |
| :!command |
執行shell命令command |
| :n1,n2 w!command |
將檔案中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個檔案內容作為command的輸入 |
| :r!command |
將命令command的輸出結果放到當前行 |