vim編輯器使用手冊

一.vi的基本概念
文本編輯器有很多,圖形模式下有gedit、kwrite等編輯器,文本模式下的編輯器有vi、vim(vi的增強版本)和nano。vi和vim是Linux系統(tǒng)中最常用的編輯器。
vi編輯器是所有Linux系統(tǒng)的標準編輯器,用于編輯任何ASCII文本,對于編輯源程序尤其有用。它功能非常強大,通過使用vi編輯器,可以對文本進行創(chuàng)建、查找、替換、刪除、復制和粘貼等操作。
vi編輯器有3種基本工作模式,分別是命令模式、插入模式和末行模式。在使用時,一般將末行模式也算入命令行模式。各模式的功能區(qū)分如下。
1.命令行模式
控制屏幕光標的移動,字符、字或行的刪除,移動、復制某區(qū)域及進入插入模式,或者到末行模式。
2.插入模式
只有在插入模式下才可以做文本輸入,按“ESC”鍵可回到命令行模式。
3.末行模式
將文件保存或退出vi編輯器,也可以設置編輯環(huán)境,如尋找字符串、列出行號等。

二.vi的基本操作
1.進入vi編輯器
在系統(tǒng)shell提示符下輸入vi及文件名稱后,就進入vi編輯畫面。如果系統(tǒng)內(nèi)還不存在該文件,就意味著要創(chuàng)建文件;如果系統(tǒng)內(nèi)存在該文件,就意味著要編輯該文件。下面就是用vi編輯器創(chuàng)建文件的示例。

vi filename

~
進入vi之后,系統(tǒng)處于命令行模式,要切換到插入模式才能夠輸入文字。
2.切換至插入模式編輯文件
在命令行模式下按字母“i”就可以進入插入模式,這時候就可以開始輸入文字了。
3.退出vi及保存文件
在命令行模式下,按冒號鍵“:”可以進入末行模式,例如:[:w filename]將文件內(nèi)容以指定的文件名filename保存。
輸入“wq”,存盤并退出vi。輸入“q!”,不存盤強制退出vi。
下面表示vi編輯器的3種模式之間的關系。

三.命令行模式操作
1.進入插入模式
按“i”:從光標當前位置開始輸入文件。
按“a”:從目前光標所在位置的下一個位置開始輸入文字。
按“o”:插入新的一行,從行首開始輸入文字。
按“I”:在光標所在行的行首插入。
按“A”:在光標所在行的行末插入。
按“O”:在光標所在的行的下面插入一行。
按“s”:刪除光標后的一個字符,然后進入插入模式。
按“S”:刪除光標所在的行,然后進入插入模式。
2.從插入模式切換為命令行模式
按“ESC”鍵盤。
3.移動光標
vi可以直接用鍵盤上的光標來上下左右移動,但正規(guī)的vi是用小寫英文字母“h”、“j”、“k”、“l(fā)”分別控制光標左、下、上、右移一格。
按“ctrl+b”:屏幕往后移動一頁。
按“ctrl+f”:屏幕往前移動一頁。
按“ctrl+u”:屏幕往后移動半頁。
按“ctrl+d”:屏幕往前移動半頁。
按數(shù)字“0”:移動到文本的開頭。
按 “G”:移動到文件的最后。
按 “$”:移動到光標所在行的行尾。
按 “^”:移動到光標所在行的行首。
按 “w”:光標跳到下個字的開頭。
按 “e”:光標跳到下個字的字尾。
按 “b”:光標回到上個字的開頭。
按 “nl”:光標移動該行的第n個位置,例如:“5l”表示移動到該行的第5個字符。
4.刪除文字
“x”:每按一次,刪除光標所在位置的后面一個字符。
“nx”:例如:“6x”表示刪除光標所在位置后面6個字符。
“X”:大寫的X,每按一次,刪除光標所在位置的前面一個字符。
“xX”:例如:“20X”表示刪除光標所在位置前面20個字符。
“dd”:刪除光標所在行。
“ndd”:從光標所在行開始刪除n行。例如:“4dd”表示刪除從光標所在行開始的4行字符。
5.復制
“yw”:將光標所在之處到字尾的字符復制到緩沖區(qū)中。
“nyw”:復制n個字到緩沖區(qū)。
“yy”:復制光標所在行到緩沖區(qū)。
“nyy”:例如:“6yy”表示復制從光標所在行開始6行字符。
“p”:將緩沖區(qū)內(nèi)的字符寫到光標所在位置。
6.替換
“r”:替換光標所在處的字符。
“R”:替換光標所到處的字符,直到按下“ESC”鍵為止。
7.撤銷上一次操作
“u”:如果誤執(zhí)行一個命令,可以馬上按下“u”,回到上一個操作。按多次“u”可以執(zhí)行多次撤銷操作。
8.更改
“cw”:更改光標所在處的字到字尾處。
“cnw”:例如:“c3w”表示更改3個字。
9.跳至指定的行
“ctrl+g”:列出光標所在行的行號。
“nG”:例如:“15G”,表示移動光標到該文件的第15行行首。
10.存盤退出
“ZZ”:存盤退出
11.不存盤退出
“ZQ”:不存盤退出

四.末行模式操作
在使用末行模式之前,請記住先按“ESC”鍵確定已經(jīng)處于命令行模式后,再按冒號“:”即可進入末行模式。
1.列出行號
“set nu”:輸入“set nu”后,會在文件中的每一行前面列出行號。
2.取消列出行號
“set nonu”:輸入“set nonu”后,會取消在文件中的每一行前面列出行號。
3.搜索時忽略大小寫
“set ic”:輸入“set ic”后,會在搜索時忽略大小寫。
4.取消搜索時忽略大小寫
“set noic”:輸入“set noic”后,會取消在搜索時忽略大小寫。
5.跳到文件中的某一行
“n”:“n”表示一個數(shù)字,在冒號后輸入一個數(shù)字,再按回車鍵就會跳到該行了,如輸入數(shù)字15,再回車就會跳到文本的第15行。
6.查找字符
“/關鍵字”:先按“/”,再輸入想查找的字符,如果第一次查找的關鍵字不是想要的,可以一直按“n”,往后查找一個關鍵字。
“? 關鍵字”:先按“?”鍵,再輸入想查找的字符,如果第一次查找的關鍵字不是想要的,可以一直按“?”,往后查找一個關鍵字。
7.運行shell命令
“!cmd”:運行shell命令cmd。
8.替換字符
“s /SPARCH/REPLACE/g”:把當前光標所處的行中的SEARCH單詞替換成REPLACE,并把所有SEARCH高亮顯示。
“%s /SPARCH/REPLACE”:把文檔中所有SEARCH替換成REPLACE。
“n1,n2 s /SPARCH/REPLACE/g”:n1、n2表示數(shù)字,表示從n1行到n2行,把SEARCH替換成REPLACE。
9.保存文件
“w”:在冒號輸入字母“w”就可以將文件保存起來。
10.離開vi
“q”:按“q”即退出vi,如果無法離開vi,可以在“q”后面一個“!”強制符離開vi。
“qw”:一般建議離開時,搭配“w”一起使用,這樣在退出的時候還可以保存文件。

五.命令行內(nèi)容說明
命令行模式:移動光標的方法
h或向左方向鍵(←) 光標向左移動一個字符
j或向下方向鍵(↓) 光標向下移動一個字符
k或向上方向鍵(↑) 光標向上移動一個字符
l或向右方向鍵(→) 光標向右移動一個字符
如果想要進行多次移動的話,例如;向下移動30行,可以使用“30j”或“30↓”的組合鍵,即加上想要進行的次數(shù)(數(shù)字)后,操作即可。
[Ctrl]+[f] 屏幕“向下”移動一頁,相當于[Page Down]按鍵
[Ctrl]+[b] 屏幕“向上”移動一頁,相當于[Page Up]按鍵
[Ctrl]+[d] 屏幕“向下”移動半頁
[Ctrl]+[u] 屏幕“向上”移動半頁
命令行模式:移動光標的方法

  • 光標移動到非空格符的下一行
  • 光標移動到非空格符的上一行
    n<space> n表示“數(shù)字”,例如20.按下數(shù)字后再按空格鍵,光標會向右移動這一行n個字符。例如20<space>則光標會向后面移動20個字符距離
    0 這是數(shù)字“0”:移動到這一行的最前面字符處(常用)
    $ 移動到這一行的最后面字符處(常用)
    H 光標移動到這個屏幕的最上方哪一行
    M 光標移動到這個屏幕的中央哪一行
    L 光標移動到這個屏幕的最下方哪一行
    G 移動到這個文件的最后一行(常用)
    nG n為數(shù)字。移動到這個文件的第n行。例如20G則會移動到這個文件的第20行(可配合:set nu)
    gg 移動到這個文件的第一行,相當于1G(常用)
    n<Enter> n為數(shù)字。光標向下移動n行(常用)
    命令行模式:搜索與替換
    /word 從光標位置開始,向下尋找一個名為word的字符串。例如要在文件內(nèi)搜索vbird這個字符串,就輸入/vbird即可(常用)
    ?word 從光標位置開始,向上尋找一個名為word的字符串
    n n是英文按鍵。表示“重復前一個搜索的動作”。舉例來說,如果剛剛執(zhí)行/vbird去向下搜索vbird字符串,則按下n后,會向下繼續(xù)搜索下一個名稱為vbird的字符串。如果是執(zhí)行?vbird的話,那么按下n,則會向上繼續(xù)搜索名稱為vbird的字符串
    N 這個N是英文按鍵。與n剛好相反,為“反向”進行前一個搜索操作。例如/vbird后,按下N則表示“向上”搜索vbird
    命令行模式:搜索與替換
    :n1、n2s/word1/word2/g n1與n2為數(shù)字。在第n1與n2行之間尋找word1這個字符串,并將該字符串替換為word2。舉例來說,在100到200行之間搜索vbird并替換為VBIRD則:“:100、200s/vbird/VBIRD/g”(常用)
    :1、$s/word1/word2/g 從第一行到最后一行尋找word1字符串,并將該字符串替換為word2(常用)
    :1、$s/word1/word2/gc 從第一行到最后一行尋找word1字符串,并將該字符串替換為word2。且在替換前顯示提示符給用戶確認(conform)是否需要替換(常用)
    命令行模式:刪除、復制與粘貼
    p,P p為將已復制的數(shù)據(jù)粘貼到光標的下一行,P則為貼在光標上一行。舉例來說,當前光標在第20行,且已經(jīng)復制了10行數(shù)據(jù)。則按下p后,那10行數(shù)據(jù)會粘在原來的20行之后,即由21行開始貼。但如果是按下P,那么原來的第20行會被變成30行(常用)
    J 將光標所在行與下一列的數(shù)據(jù)結合成同一行
    c 重復刪除多個數(shù)據(jù),例如向下刪除10行,[10cj]
    u 復原前一個操作(常用)
    [Ctrl]+r 重做上一個操作(常用)
    U與[Ctrl]+r是很常用的命令。一個是復原,另一個則是重做一次。利用這兩個功能按鍵,編輯起來就得心應手。
    命令行模式:刪除、復制與粘貼
    . 這就是不數(shù)點。意思是重復前一個動作。如果想重復刪除、重復粘貼,按下小數(shù)點“.”就可以(常用)
    插入模式
    i、I 插入:在當前光標所在處插入輸入文字,已存在的文字會向后退;其中,i為“從當前光標所在處插入”,I為“在當前所在行的第一個非空格符處開始插入”(常用)
    a、A a為“從當前光標所在的下一個字符處開始插入”,A為“從光標所在行的最后一個字符處開始插入”(常用)
    o、O 這是英文字母o的大小寫。o為“在當前光標所在的下一行處插入新的一行”,O為“在當前光標所在處的上一行插入新的一行”(常用)
    r、R 替換:r會替換光標所在的那一個字符;R會一直替換光標所在的文字,直到按下Esc鍵為止(常用)
    使用上面這些按鍵時,在vi畫面的左下角處會出現(xiàn)“—INSERT--”或“—REPLACE--”的字樣。通過名稱就知道是什么操作。特別注意,上面也提過了,想在文件中輸入字符時,一定要在左下角處看到INSERT/ REPLACE才能輸入。
    Esc 退出插入模式,回到命令行模式中(常用)
    末行命令模式
    :w 將編輯的數(shù)據(jù)寫入硬盤文件中(常用)
    :w! 若文件屬性為“只讀”時,強制寫入該文件。不過,到底能不能寫入,與文件權限有關
    :q 離開vi(常用)
    :q! 若曾修改過文件,又不想存儲,使用!為強制離開不存儲文件
    注意一下,那個感嘆號(!)在vi當中,常常具有“強制”的意思。
    :wq 存儲后離開,若為:wq!則為強制存儲后離開(常用)
    :e! 將文件還原到最原始的狀態(tài)
    ZZ 若文件沒有更改,則不存儲離開,若文件已經(jīng)更改,則存儲后離開
    :w[filename] 將編輯的數(shù)據(jù)存儲成另一個文件(類似另存新文件)
    :r[filename] 在編輯的數(shù)據(jù)中,讀入另一個文件的數(shù)據(jù)。即將“filename”這個文件內(nèi)容加到光標所在行的后面
    :n1、n2 w[filename] 將n1到n2的內(nèi)容存儲成filename文件
    :!command 暫時離開vi到命令模式下執(zhí)行command的顯示結果。例如,“:! ls /home”,即可在vi中查看/home中以ls輸出的文件信息
    :set nu 顯示行號,設置之后,會在每一行的前綴顯示該行的行號
    :set nonu 與set nu相反,為取消行號
    特別注意,在vi中,“數(shù)字”是很有意義的。數(shù)字通常表示重復做幾次的意思。也有可能表示要去哪里的意思。舉例來說,要刪除50行,則是用“50dd”。數(shù)字加在動作之前。要向下移動20行,使用“20j”或“20↓”即可。
    掌握這些命令就很不錯了,因為常用到的命令也可能只有一半。通常vi的命令除了上面筆者注明的常用的幾個外,其他不用背,可以做一張簡單的命令表,當有問題時就可以馬上查詢。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Vim幾句話介紹Vim是Unix系統(tǒng)上的文本編輯軟件(你該不會不知道什么是文本編輯軟件吧!),在windows上也...
    何必遠方閱讀 3,329評論 0 3
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,727評論 9 468
  • dpkg 學習 安裝mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji閱讀 541評論 0 0
  • vi編輯器是所有Unix及Linux系統(tǒng)下的標準編輯器,它的強大不遜色于任何最新的文本編輯器,這里只是簡單地介紹一...
    輪回小飛飛閱讀 520評論 0 3
  • 看完電影,我最大的疑問是,在原著中,女主角真的自首了嗎? 和東野圭吾的另一部小說《白夜行》對比起來看,兩個男女...
    漁之舟閱讀 208評論 0 0

友情鏈接更多精彩內(nèi)容