Linux中Vim編輯器的使用
Vim功能介紹
vim是一款功能豐富而強大的文本編輯器,支持語法高亮,支持多窗口編輯,是vi文本編輯器的增強版。如果在CentOS
7.2中如果是選擇最小化安裝,其默認是沒有安裝vim rpm包的,需要自行安裝,可以使用yum工具進行在線安裝。
vim至今已經走過了25個春秋,現在8.0版的已經發布了。 本文介紹的vim,版本是7.4.160。
vim是一款模式化的編輯器。
它的工作模式分為三種:
-
編輯模式
編輯模式又稱為正常模式(Normal mode),其進入方式為:執行指令:vim /PATH/FROM/FILENAME
,如果這一文件不存在,則會創建新文件,但如果編輯完成后不予保存則此文件不會保留。這一模式可以對文本內容完成諸如復制、粘貼、刪除這一類的編輯操作。 -
輸入模式
其進入方式有多種,大多是在編輯模式通過按下特定的字符鍵進入。在這一模式中可以對文本內容完成修改添加刪除的操作。 -
末行模式
進入這一模式的方法是在編輯模式中輸入冒號。然后可以輸入很多指令完成對文本的編輯操作,功能十分強大。
vim編輯模式使用練習
vim自帶了一個練習程序,在bash shell中直接執行vimtutor
即可以打開,如下所示:
使用h,j,k,l
鍵移動光標
根據屏幕提示,使用h,j,k,l
鍵分別實現將光標往前移動一格,往下移動一格,往上移動一條,往后移動一格,即h,j,k,l
分別對應前,下,上,后
。如下所示:
放棄對文本文件所有的修改操作
當使用vim對文本文件做了一些修改以后,但又不想保存這些修改,想將文件恢復至原樣,可以使用如下步驟進行操作。
1. 按下ESC
鍵,確保已位于正常模式中
2. 輸入:q!
,按下回車鍵,退出vim模式
3. 當看到shell提示符時,即表明已退出對之前文本文件的編輯
為便于練習繼續,在bash shell中再次執行vimtutor
指令,進入vim的練習之中。
刪除文本的字符
在vim編輯模式中可以按下x鍵,將光標選中的字符刪除。操作步驟如下:
1. 進入vim編輯模式
2. 通過上面介紹過的h,j,k,l鍵將光標移動至想要刪除的字符處
3. 按下x鍵,將光標已選中的字符刪除
vimtutor中的操作示例及說明如下:
在光標所在處或者光標所在行的行首插入字符
在vim編輯模式中,將光標移動至想要插入新字符的位置,然后按下I
鍵即輸入i(小寫),即可進入vim的輸入模式,此時vim編輯器左下角會出現“– INSERT –”提示符,即說明此時已處于vim輸入模式中,可以通過鍵盤輸入想要插入的字符。如果輸入"I
"(大寫),可以實現光標所在行的行首直接進入輸入模式。
vimtutor中的操作示例及說明如下:
繼續結合上面的一些操作方法,將句子中的錯誤進行修正,結果應該是這樣的吧,英語不是很好.^_^
在光標所在行的行尾插入字符
在編輯文本文件時,如果想在某一行的行尾直接進入編輯,可以在vim編輯模式中將光標移動至目標行,不用在意光標在這一行的什么位置,此時按下A鍵方法為輸入大寫A的操作方法。然后進行編輯即可。
vimtutor中的操作示例及說明如下:
保存文本文件并退出vim編輯模式
當編輯完文本文件以后,在vim編輯模式中輸入:wq
,然后回車,對文本文件進行保存,并退出vim的編輯模式,結束對文本文件的修改工作。
vimtutor中的說明及操作示例如下:
一次性刪除一個單詞
在Linux中一個單詞,并非各人類語言語法中的單詞,而是指一個連續且不包含空格的字符串。在vim編輯模式中,將光標移動至想要刪除的單詞的超始處,然后輸入dw
即可直接將這一單詞及其后面的空白字符刪除,無需要通過先進入輸入模式,然后按回退鍵一個字符一個字符進行刪除。
vimtutor中的說明及示例如下:
一次性刪除一行中從光標處起始直至行尾的全部內容
如果文本中某一行中有一個連接的段需要刪除,這時可以在vim編輯模式中,先將光標移動至要刪除部分的起始處,然后輸入d$
即可一次性將光標所在位置至行尾的全部內容一次性刪除。
vimtutor中的說明及操作示例如下:
一次性刪除光標所在處至單詞的最后一個字符
在vim編輯模式中將光標移動至想要刪除的單詞的詞首,然后輸入de
即可將這個單詞刪除。相較于dw
的區別是,de
不會刪除這一個單詞其后的空白字符。vimtutor中的說明如下:
一次性將光標移動一個單詞的方法
vim編輯模式中,一個字符一個字符地移動光標有時難免顯得低效,它提供了直接讓光標在單詞間跳轉的方法。
在編輯模式中:
按下E
鍵(不區分大小寫),可實現將光標直接跳轉至行內本單詞或者下一個單詞的詞尾,如果光標正處在某單詞的中間位置按下E鍵,光標會跳至本單詞的詞尾。
按下W
鍵(不區分大小寫),光標會跳至下一個單詞的詞首。
按下B
鍵(不區分大小寫),光標會跳至本單詞或者前一個單詞的詞首。
一次性將光標移動N個單詞的方法
在vim編輯模式中,還可以使用#{E|W|B}
這種方法,一次性將光標往前或往后移動#個單詞,#為數字,一個標點符號算作一個單詞,至于光標是位于單詞詞首還是詞尾取決于#后面所跟的是E還是W或者B。
vimtutor中的示例及說明:
一次性刪除指定個數的單詞
在vim編輯模式中,使用d#w
,#代表要刪除的單詞數,可以一次性將指定個數的單詞及其后面的空白字符刪除。
vimtutor中的示例及說明:
一次性刪除一整行
在vim編輯模式中,將光標移動至想要刪除的那行上,不管光標處在這行什么位置都可以,然后輸入dd,即可將這一整行刪除;如果輸入#dd,將會刪除當前光標所在的行及其下#行(空白行也算一行),#號表示數字。
vimtutor中的說明及示例結果:
撤銷之前的操作
在vim編輯模式中,如果想撤銷之前的操作,只需要輸入u
(小寫)即可撤銷上一步的操作,如果想撤銷上#步的操作,輸入#u
即可。如果又后悔撤銷了剛才的撤銷操作,可以使用Ctrl+R
組合鍵。如果后悔對這一整行所做的修改,可以輸入U
(大寫)將對這一行所做的操作一次性撤銷。
vimtutor中的說明及操作示例:
對行進行剪切與復制
在vim編輯模式中,如果想要將某一行的位置進行移動,可以先將光標移動至這一行,輸入dd
進行刪除,然后將光標移動至這一行新位置的上一行處,然后輸入p(小寫),剛才刪除的那一行即會被移動到新位置;而如果輸入P(大寫),則剛才刪除的一行,會直接復制到光標所在的這一行處,也相當于將光標放在一這一行新位置的下一行處。
vimtutor中的說明及操作示例:
對字符進行替換
如果想將某字符進行替換,在vim編輯模式中,可以先用光標將這一字符選中,然后輸入r(小寫)并緊接著輸入這一字符想要替換成的字符,這種方式一次只能替換一個字符。
vimtutor中的說明及操作結果:
修改行中的某一個單詞
如果想修改某單詞的部分字符或者整個單詞,在vim編輯模式中可以將光標移動至想要修改的地方的起始處,然后輸入ce
(小寫),它會刪除光標所在處至這個單詞結尾的部分,然后進入輸入模式,這時在將正確的內容輸入即可完成對某單詞的修改。
vimtuor中的說明和操作結果示例:
修改一行中的多個單詞
如果想修改一行中的多個單詞,可能直至這一行的結尾。此時可以在vim編輯模式中使用c#w
或者c$
指令。如下示例中的需求即是需要刪除從“some”開始直至行結尾的部分,因此使用c$指令,然后在輸入模式中進行修改即可。
光標定位及迅速移動
如果想將光標快速移動至文件的最后一行,在vim編輯模式中輸入G
(大寫)即可;如果想將光標快速移動至文件的第一行,在vim編輯模式中輸入gg
(小寫);在編輯模式中按下Ctrl+G
組合鍵,可以在編輯模式的最下邊顯示出當前光標所在的行號,及文件總行數,文件名等信息。在編輯模式中輸入#G
可以將光標跳轉至第#行行首,#為指定的行號。
vim編輯模式中的搜索方法
在vim編輯模式中如果要搜索某一字符或字符串,可以使用/字符(串)
的方式進行,它會從光標所在處開始往下搜索,當要繼續往下搜索時,繼續輸入n
(小寫),當要繼續往上搜索時,繼續輸入N
(大寫)。
另一種搜索方式是在編輯模式中使用?字符(串)的方式進行,它會從光標所在處開始往上搜索,繼續往上搜索,就繼續輸入n
(小寫),繼續往下搜索,就繼續輸入N
(大寫)。
要將光標回退至上一次所在的位置,使用組合鍵Ctrl+O;要將光標往前移,使用組合鍵Ctrl+I。
vimtutor中的示例及說明:
vim編輯模式中檢查括號是否匹配
在vim中可以將光標移動至要檢查的括號處,然后輸入%,光標會自動跳轉至與之匹配的括號處,用此來檢查程序語句中括號是否完整。
vim末行模式
vim末行模式進入的方式:在編輯模式中,按下鍵盤輸入冒號:即可。需要注意的是:在末行模式中所有的指令要生效必須按回車鍵。
末行模式中查找并替換
vim末行模式中支持查找某字符串,然后在將文本中查找到的對象進行替換。在編輯模式中輸入:s/old/new
,然后回車。old表示要查找的字符串,new表示替換后的最終字符串。它只替換查找到的第一個匹配的字符串。
如果要一次性將一行中所有匹配的字符串進行替換,需要在編輯模式中輸入:s/old/new/g
然后回車。
如果要一次性將全文中所有匹配的字符串進行替換,需要在編輯模式中輸入:%s/old/new/g
然后回車。
如果要在文本中一定范圍內查找指定的字符串并替換,需要在編輯模式中輸入:#,#s/old/new/g
,然后回車。#,#表示從哪一行到哪一行,為行編號。
vimtutor中的示例及說明:
末行模式中執行外部命令
在vim末行模式中通過輸入!然后跟上任何可以shell中執行的指令,都可以在這里面執行,執行完以后按下回車鍵會回到之前的編輯模式狀態。
使用示例如下:
將正在編輯的文本全部另存為其它文件
在vim末行模式中通過輸入w /PATH/TO/FILENAME
可以將文件另存為指定的新文件。
將正在編輯的文本中的部分另存為其它文件
在vim編輯模式中,首先將光標移動至需要另存為的內容的起始處,然后輸入v
(小寫),vim末行出現"VISUAL"提示符,再然后結合光標操鍵h,j,k,l
選定需要另存為的文本內容。選定以后,輸入:
進入末行模式,此時vim末行會出現":'<,'>
"提示符,然后緊挨著在其后面輸入w /PATH/TO/FILENAME
即可將選定的文本內容另存為指定的文件中,如果指定文件已經存在,需要使用在文件名后跟上!
,進行強制覆蓋。
以下為vimtutor中的示例及說明:
合并其它文本內容至當前編輯中的文本中
vim末行模式中,將光標移動至想加入其它文本文件內容的超始處,然后輸入r /PATH/FROM/FILENAME
即可將指定文本文件的內容添加至光標下方。
vimtutor中示例的效果:
**末行模式中還支持將其它shell指令的輸出內容直接添加至當前正在編輯中的文本文件中。操作方法為":r !cat /home/lantian/TEST
","cat /home/lantian/TEST
"為需要執行的shell指令。
在編輯模式中直接在光標所在行的下一行或者上一行進入輸入模式
在vim編輯模式中,如果想在光標所在行的下方直接進入輸入模式,可以直接輸入"o"(小寫);如果想在光標所在行的上方直接進入輸入模式,可以直接輸入"O"(大寫)。
vimtutor中的說明及示例如下所示:
在編輯模式中直接在光標所在處的后面或者行尾進入輸入模式
在vim編輯模式中,如果想在光標所在處的后面添加字符即直接進入輸入模式,可以直接輸入"a"(小寫);如果想在光標所在行的行尾直接進入輸入模式,可以直接輸入"A"(大寫)。
vimtutor中示例完成后的效果:
復制和粘貼文本
在vim編輯模式中,如果想復制粘貼某段內容,可以先將光標移動至想要復制的內容的起始處,然后輸入"v
"(小寫)進入"VISTUAL"視圖,然后結合h,j,k,l
鍵移動光標來選取想要復制的內容,被選中的文本會高亮顯示,再按下y
(小寫)就完成了復制工作。然后將光標移動至復制的目標位置,按下p
(小寫)就將之前復制的內容粘貼過來了。
vimtutor中的說明及示例如下:
配置vim工作環境
在vim末行模式中,可以使用豐富的set指令及選項來配置vim的工作環境。常用的有:
-
行號
顯示:set number,簡寫為set nu
取消顯示:set number,簡寫為set nonu -
括號匹配高亮
匹配:set showmatch,set sm
取消:set noshowmatch,set nosm -
自動縮進功能
啟用:set ai
禁用:set noai -
高亮搜索
啟用:set hisearch
禁用:set nohlsearch -
語法高亮
啟用:syntax on
禁用:syntax off -
忽略字符大小寫
啟用:set ic
禁用:set noic
vim編輯長文本時的翻屏操作
在vim編輯模式中使用如下組合鍵,可以實現對應的效果。
Ctrl+f:向文件尾部翻一屏
Ctrl+b:向文件首部翻一屏
Ctrl+d:向文件尾部翻一屏
Ctrl+u:向文件首部翻一屏
Enter:按行向后翻
vim編輯文本時實現句間或者段間跳轉操作
在vim編輯模式中使用如下標點符號,可以實現光標在句間或者段間快速跳轉。
句間跳轉
)
(
段間跳轉
{
}
原創文章,作者:N24_lantian,如若轉載,請注明出處:http://www.www58058.com/62097
學以致用,好棒,有圖有真相