【簡介】shell
Vim是vi編輯器的改進版。vi是類UNIX系統裏最經常使用的編輯器。vim
【模式】編輯器
在shell中直接打vim filename就會進入普通模式。按i鍵進入編輯模式,此時Vim底部顯示INSERT表示能夠編輯內容了。按Esc鍵退出編輯模式,按:切換到命令模式。spa
【經常使用命令】code
進入viorm
vi filename 打開或新建文件,並將光標置於第一行首blog
vi +n filename 打開文件,並將光標置於第n行首文檔
vi + filename 打開文件,並將光標置於最後一行首cmd
vi +/pattern filename 打開文件,並將光標置於第一個與pattern匹配的串處
it
vi filename....filename 打開多個文件,依次進行編輯
vi -r filename 在上次正用vi編輯時發生系統崩潰,恢復filename
從光標開始處向文件尾搜索。好比搜user 按Esc再按/user
從光標開始處向文件首搜索。 ?user
在同一方向重複上一次搜索命令 n
在反方向重複上一次搜索命令 N
查看某行 :行號
撤銷上次操做 u
代碼自動補全 Ctrl+n
刪除當前字符 x或DEL鍵 (刪除內容保存在緩衝區。x刪除光標後的,X刪除光標前的)
刪除當前行 dd (刪除內容保存在緩衝區)
刪除當前光標至行尾的全部內容 d$
刪除從當前行至文件末尾的全部行 dG
刪除至當前行首 d0
左右字符互換 xp
上下兩行內容互換 ddp
把當前行復制到緩衝區 y
把緩衝區中的文本插入到當前位置 p
把當前行復制到a緩衝區(可用26個字母命名多個緩衝區) ay
把a緩衝區中的文本插入當前位置 ap
上下兩行合併成一行 J
重複執行上次執行的命令 .
複製粘貼一整行。假如光標在行首,要複製一行,先按Esc到命令模式,再按yy,再按p,就在該行下面複製粘貼了一整行。或者V選擇拷貝內容(一行高亮),Y拷貝,P粘貼到新地方。
複製粘貼某一區間。光標移動到想要複製的字符下,按Esc,按v進入visual模式(可用高亮的色塊選擇內容),按左右鍵移動到想要複製的字段末尾,按y複製,光標移動到想要粘貼的地方,按p粘貼。
對比2個文件 vimdiff file1 file2
移動光標類命令
h j k l
左 下 上 右
nk 向上移動n行
nj 向下移動n行
nh 向左移動n列
nl 向右移動n列
$ 光標移動到當前行行尾
G 光標移動到文檔最後一行開頭
H 光標移動到當前屏幕首行開頭
L 光標移動到當前屏幕末行開頭
M 光標移動到當前屏幕中間行開頭
{ 光標上移一個段落
} 光標下移一個段落
( 光標移動到句首
) 光標移動到句尾
w或W 光標右移一個字至字首
b或B 光標左移一個字至字首
e或E 光標右移一個字至字尾
nG 光標移至第n行首
n+ 光標下移n行
n- 光標上移n行
n$ 光標移至第n行尾
0 (注意是數字零)光標移至當前行首
插入文本類命令
i 在光標前
I 在當前行首
a 光標後
A 在當前行尾
o 在當前行之下新開一行
O 在當前行之上新開一行
r 替換當前字符
R 替換當前字符及其後的字符,直至按ESC鍵
s 從當前光標位置處開始,以輸入的文本替代指定數目的字符
S 刪除指定數目的行,並以所輸入文本代替之
ncw或nCW 修改指定數目的字
nCC 修改指定數目的行
命令模式下
:q! 不保存退出vim
:w 保存文檔,不退出vim
:x 保存並退出
:! command 運行shell命令
:r! command 將命令cmmand的輸出結果放到當前行
:e filename 編輯/打開一個文件
:s/one/two 在當前行中把第一個one替換成two
:s/one/two/g 把當前行中全部的one替換成two
:%s/one/two/g 在全局範圍內把one替換成two
:n1,n2s/one/two/g 將第n1行至n2行中全部的one替換成two
:tabe 新建一個標籤頁
:close 關閉當前標籤頁
:tabp 切換到上一個標籤頁
:tabn 切換到下一個標籤頁
:qa 關閉全部標籤頁並退出
:set number 列出行號
:reg 列出緩衝區內容
:set all 列出全部參數的配置狀況
:set ignorance 設置在搜索中忽略大小寫
:set nowrapscan 禁止vi在搜索到達文件兩端時,又從另外一端開始
:set warn 在轉到別的文件時若沒保存當前文件則顯示NO write信息
:n1,n2 d 將n1到n2行之間的內容刪除
:n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3 將n1行到n2行之間的內容移至到第n3行下
屏幕翻滾類命令
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
【vimrc配置】
在命令模式下用set命令設置的東西是不能保存的,下次打開vim時又要從新設置。因此vim提供了一個配置文件叫vimrc,能夠保存自定義的配置信息。該文件在Debian系統中位於/etc/vim/目錄下。在該文件中,以雙引號開頭的是註釋。
set autoindent
自動縮排,如當前行是從第3個字符的位置開始編輯的,按回車後光標會自動定位在下一行第三3個字符的位置。
set paste
置粘貼模式,這樣粘貼過來的程序代碼就不會錯位了。
打開文件時自動回到上次編輯位置。
if has("autocmd") autocmd BufRead *.txt set tw=78 autocmd BufReadPost * \ if line("'\"") > 0 && line ("'\"") <= line("$") | \ exe "normal g'\"" | \ endif endif