vim是一款文本編輯工具,因此學習時不求功能全記住,只要在使用vim時工作更有效率就可以了。本文從實用的角度總結了vim的操作方法,希望讀者讀完本文後經過練習都能達到飛一般的文本編輯速度。 ...
vim是一款文本編輯工具,因此學習時不求功能全記住,只要在使用vim時工作更有效率就可以了。本文從實用的角度總結了vim的操作方法,希望讀者讀完本文後經過練習都能達到飛一般的文本編輯速度。
vi是Linux的標準編輯器,那麼vim是當之無愧的vi加強版,不僅相容所有的vi命令和操作,還增加了很多適合於編寫代碼的新功能,比如vim會根據文件的擴展名和文件開頭確定語法高亮等。在有些distribution中vi其實只是vim的別名,比如CentOS中就會發現:vi is aliased to 'vim',所以使用vi命令時其實就是使用的vim。
一,基本功能
使用vim [filename]即可進入vim,如果文件不存在就會創建文件;如果不指定文件名,可以在保存時指定一個文件名。
1.一般模式
進入vim之後什麼都沒操作時,vim便處於一般模式。在該模式下可以進行大部分操作,包括刪除,複製,粘貼等。
下表中的n都表示數字而非按鍵n;command代指某條命令;filename代指文件的名稱(存在或者不存在)。
===============================刪除================================ x 相當於Del X 相當於Backspace nx 向後刪除n個字元 dd 刪除當前行 ndd 向下刪除n行
d1G 刪除第一行到當前行 dG 刪除當前行到最後一行 ===============================複製=================================
yy 複製當前行 nyy 複製n行
y1G 複製第一行到當前行 yG 複製當前行到最後行 ===============================粘貼=================================
p 粘貼到當前行下麵 P 粘貼到當前行下麵
=============================選中文本===============================
v 按字元選中 V 按行選中 [Ctrl]+v 按矩形區域選中
===========================快速移動游標=============================
n+<space> 游標後移n個字元
n+<enter> 游標後移n行
nG 移到第n行
gg 移到文件開始
=============================撤銷&重做===============================
u 撤銷
. 重覆上一條修改文本內容的命令
[Ctrl]+r 重做
==============================其他===================================
ZZ 退出並保存(實際是沒有修改就不保存)
2.插入模式
在一般模式中按下i,o,a就會進入插入模式(我最常用的就只有i和o,o是插入新行),這時會在屏幕左下角顯示"-- INSERT --"。在插入模式下按Esc就又回到一般模式。在該模式下可以進行文字的輸入,所有的按鍵(除了Esc)都保持按鍵用於輸入時的含義,比如此時按多少下u也不會撤銷什麼而是輸入u。
3.命令模式
在一般模式下鍵入冒號,斜杠,問號三個之一時便進入命令模式,命令執行結束後自動回到一般模式(鍵入命令後按enter便執行命令)。在該模式下可以進行文本搜索,替換,保存/另存為,導入,vim設置等較複雜的操作。
============================搜索&替換=============================== /pattern/ 正向搜索 搜索完成後,配合n和N可以在多處文字間切換 ?pattern? 反向搜索 搜索完成後,配合n和N可以在多處文字間切換
:s/pattern/string/g 在本行中匹配pattern並替換成string
:n1,n2 s/pattren/string/g 在n1到n2行中匹配pattern並替換為string
:n1,n2 s/pattern/string/gc 在n1到n2行中匹配pattern並替換為string,每次替換都詢問。
:1,$ s/pattern/string/g 在第一行到最後一樣之間進行替換
:% s/pattern/string/g 在全文範圍內進行替換
==========================保存/另存為/導入===========================
:w 保存 :w!強制保存
:q 退出 :q!強制退出,不會保存
:r filename 導入文件
:w filename 另存為
:n1,n2 w filename 把n1到n2的內容另存為文件filename
:n1,n2 w! filename 把n1到n2的內容另存為,如果指定文件已經存在則覆蓋
:wq 保存並退出
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3: 將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d 將n1行到n2行之間的內容刪除
===============================其他=================================
:n 轉到第n行
:! command 轉向執行command,指向完成後返回vim
:set nu 顯示行號
:set nonu 隱藏行號
註:1.經過測試發現 :! command 中的命令不能是命令別名,只能是bash內建命令或者可執行文件名稱。
2.字元串替換命令 :n1,n2 s/pattren/string/g 中末尾的g表示不僅替換第一處,而是全部替換。
二,分屏操作和標簽
1.標簽頁
vim擁有類似瀏覽器樣式的標簽頁,方便同時編輯多個文檔。在一個標簽頁下還可以分出多個視窗(一個標簽頁可以包含多個分屏),每個視窗編輯不同的文檔。多視窗(分屏)的好處是方便對照數據等,相比之下,個人感覺標簽頁用到的時候更多一些。
可以直接使用 :tabnew 打開新的標簽頁,然後在新標簽頁內使用r導入文件,也可以使用 :tabnew filename 直接在新標簽頁打開指定文件。
一般模式下,g+t可以在不同標簽頁之間切換(經測試,要先按g後按t,反過來是不行的)。 :tabm n 可以把當前標簽頁移到指定標簽位置,n從0開始。
2.分屏
vim -on filename1 filename2 以上下分屏的方式打開多個文件。 vim -On filename1 filename2 以左右分屏的方式打開多個文件。如果已經進入vim,可以使用 :sp 打開一個新視窗(上下分屏),或者使用 :vsp (左右分屏)。sp可以指定文件,如 :sp filename ,這樣在新視窗打開指定文件,否則新打開的視窗會顯示舊視窗同樣的文件,二者同步修改(頗有fork的意思)。
按下Ctrl後,連按兩下w可以在不同視窗之間切換,也可以通過[Ctrl]+w+方向鍵切換視窗。
三,更多的知識
~/.viminfo文件(自動生成)記錄了用戶的操作歷史等信息,因此再次打開文檔後會發現游標還停在上次離開時的位置等等。
/etc/.vimrc是保存了vim的配置信息,比如預設是否會有語法高亮,行號等。不建議在這裡修改配置,可以在自己的家目錄下新建.vimrc來修改配置。
關於Linux的更多知識還在整理,之後會給大家分享交流。