引言—什么是Vim?
接觸Linux這么久,想必對于一切皆文件的哲學思想已經不陌生了。因此,學習并掌握用一款Linux文本編輯器,對于玩轉LInux來說,是很有必要的。
vi編輯器是Unix系統最初的編輯器,它使用控制臺圖形模式來模擬文本編輯窗口,允許查看文件中的行、在文件中移動、插入、編輯和替換文本。
在GNU項目將vi編輯器移植到開源世界時,又在vi的基礎上做了一些改進。由于它不再是以前Unix中的那個原始的vi編輯器,開發人員也就將它重命名為vi improved,簡稱vim。
Vim的使用
vim三種模式概述
基本上vim共分為三種模式,分別為一般模式、編輯模式、命令行模式。
一般模式
-
用vim打開文件,就直接進入一般模式。在這個模式中,可以上下左右按鍵來移動光標,可以刪除字符/整行,可以復制粘貼等操作。
編輯模式
-
按下“i, I, o, O, a, A, r, R”中的任意之一,可以從一般模式進入到編輯模式中,只有進入了編輯模式才能進行編輯。在編輯模式中,再按下Esc鍵,就可以回到一般模式。
命令行模式
-
按下“:、/、?”3個中的任意之一,就可以從一般模式進入到命令行模式中。命令行模式又稱末行模式,在這個模式中,可以查找數據,讀取、保存、替換、顯示行號等一系列的文本操作。另外退出vim編輯器,也是從這個模式下退出的。
三種模式的關系,如下圖所示:
-
根據以上的關系圖,不難發現:只能從一般模式切換到編輯模式和末行模式,即僅可實現一般模式和編輯模式,一般模式和末行模式之間的切換,編輯模式和末行模式之間無法進行切換,只能通過中間的橋梁—一般模式。
一般模式
打開文件
# vim [options] [file ..]
如果不指定文件,將進入以下界面:
光標跳轉
字符間跳轉
h / ←:左; j / ↓:下; k / ↑:上; l / →:右; #COMMAND:跳轉由#指定的個數的字符,COMMAND是h/j/k/l;
單詞間跳轉
* w:下一個單詞的詞首; * e:當前或后一個單詞的詞尾; * b:當前或前一個單詞的詞首; * #COMMAND:跳轉由#指定的個數的單詞;
行首行尾跳轉
^:跳轉至行首的第一個非空白字符; 0:跳轉至行首;(絕對行首) $:跳轉至行尾;(絕對行尾)
行間跳轉
#G:跳轉至由#指定的行; 1G, gg:第一行; G:最后一行;
句間跳轉
): 下一句 (: 上一句 #COMMAND:可以通過#指定一次跳轉的數量;
段間跳轉
}: 下一段; {: 上一段; #COMMAND:可以通過#指定一次跳轉的數量;
刪除
x:刪除光標所在處的字符; #x:刪除光標所在處起始的#個字符; d:刪除命令,可結合光標跳轉字符,實現范圍刪除; d$:刪除當前光標所在處,直至行尾; d^:刪除當前光標所在處,直至行首; dw:刪除當前光標所在處,直至下一個單詞的詞首; dd:刪除光標所在處的行; #dd:刪除光標所處的行起始的共#行;
復制
y:復制,工作行為相似于d命令; y$:復制當前光標所在處,直至行尾; y^:復制當前光標所在處,直至行首; yw:復制當前光標所在處,直至下一個單詞的詞首; yy:復制一整行; #yy:復制#行;
粘貼
p:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方;否則,則粘貼至當前光標所在處的后方; P:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方;否則,則粘貼至當前光標所在處的前方;
其他編輯操作
可視化模式:(進行塊選,然后操作) v:按字符選定; V:按行選定; 結合編輯命令使用:d, c, y 撤銷(undo)操作: u:撤銷此前的操作; #u:撤銷此前的#個操作; 撤銷此前的撤銷: Ctrl+r 重復執行前一個編輯操作: .(點號)
編輯模式
在一般模式中,只要按下i,o,a等字符就能進入編輯模式。在編輯模式中,可以發現左下角狀態欄會出現-插入-的字樣(如果是英文環境則是-INSERT-字樣),即此刻就可以編輯文本了。鍵盤上除了[Esc]這個鍵以外,按下其他的任何鍵均視為一般輸入,所以可以進行編輯了。如下圖即為進入編輯模式的截圖:
命令行模式
地址定界
:start_pos[,end_pos] 起始位置和結束位置,中間用(,)隔開,且后者可以省略; #:特定的第#行,例如5即第5行; (#表示數字) .(點號):當前行; $:最后一行; #,#:指定行范圍,左側為起始行,右側為結束行;一般右側值大于左側值; #,+#:指定行范圍,左側為超始行絕對編號,右側為相對左側行號的偏移量;例如:3,+7;此為相對地址定界法; .,$-1:從當前行到倒數第二行; 1,$:表示全文:從第一行到最后一行; %:全文; /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行; /first/,$:從第一次能被first匹配到的行開始,到最后一行結束; /pat1/,/pat2/:從光標所在處起始(開始往下找),第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行; 地址定界,可同編輯命令一同使用,實現編輯操作:如,d刪除,y復制等; w /PATH/TO/SOMEFILE:將范圍內的文本保存至指定的文件中; r /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取并插入至指定位置;
查找
/PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串; ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串; n:下一個,與命令方向相同; N:上一個,與命令方向相反;
查找并替換
s:末行模式的命令;使用格式: s/要查找的內容/替換為的內容/修飾符 可把分隔符替換為其它非常用字符:即將s//替換為 s@@@ s### 要查找的內容:可使用正則表達式; 替換為的內容:不能使用正則表達式,但可以引用; 如果“要查找的內容”部分在模式中使用分組符號:在“替換為的內容”中使用后向引用; 直接引用查找模式匹配到的全部文本,要使用&符號; 修飾符: i:忽略大小寫; g:全局替換,意味著一行中如果匹配到多次,則均替換;
關閉文件
ZZ 保存并退出; :q 離開vim編輯器; :q! 強制退出,不保存此前的編輯操作; :wq 保存并退出; :w 將編輯的文件寫入硬盤文件中; :x 保存并退出; :w /PATH/TO/SOMEFILE 將保存的修改后,保存到其他文件中。類似于另存為。
多文件編輯
-
1、通過
vim FILE1 FILE2 ...
命令來使用一個vim打開多個文件。 -
2、在vim中先使用
:files
命令查看編輯的同時打開的文件是什么,如下圖所示,我們同時打開了兩個文件。按下任意鍵之后,就可以回到vim的一般模式。 -
3、在文件間切換:
:next / :n 下一個; :prev / :N 上一個; :first 第一個; :last 最后一個;
-
4、下面就可以在打開的多文件之間進行復制粘貼等操作。
-
5、退出所有文件:
:wqall 保存所有文件并退出; :wall 只是保存所有文件; :qall 只是退出所有文件;
多窗口編輯
輸入命令vim -o | -O FILE1 FILE2 ...
,則進入多窗口編輯模式,如下圖所示:
-o:水平分割窗口 -O:垂直分割窗口 在窗口間切換:Ctrl+w, ARROW(箭頭↑↓→←) 注意:單個文件也可以分割為多個窗口進行查看: Ctrl+w, s:水平分割窗口 Ctrl+w, v:垂直分割窗口
定制vim的工作特性
注意:在末行模式下的設定,僅對當前vim進程有效;若想永久生效需要配置腳本文件。
永久有效: 全局:/etc/vimrc 用戶個人:~/.vimrc 1、行號 顯示:set number, 簡寫為set nu 取消顯示:set nomber, set nonu 2、括號匹配高亮 匹配:set showmatch, set sm 取消:set nosm 3、自動縮進 啟用:set ai 禁用:set noai 4、高亮搜索 啟用:set hlsearch 禁用:set nohlsearch 5、語法高亮 啟用:syntax on 禁用:syntax off 6、忽略字符大小寫 啟用:set ic 禁用:set noic
總結
Vim的學習曲線相當的陡峭,入門不易,深入需要花時間,熟練記憶并練習三種模式對應的操作,方能熟能生巧。
原創文章,作者:N24_VC,如若轉載,請注明出處:http://www.www58058.com/64089
贊,vim是將來工作很常用的工具~希望能靈活運用~繼續加油~