vi編輯器的使用

來源:互聯網
上載者:User

標籤:http   使用   strong   檔案   os   代碼   

vi編輯器的使用

關鍵詞:VI,vi編輯器,

1、關於文字編輯器

文字編輯器有很多,比形模式的gedit、kwrite、OpenOffice ... ... ,文字模式下的編輯器有vi、vim(vi的增強版本)和nano ... ... vi和vim是我們在Linux中最常用的編輯器。我們有必要介紹一下vi(vim)最簡單的用法,以讓Linux入門級使用者在最短的時間內學會使用它。

nano工具和DOS作業系統下的edit操作相似,使用簡單,我們不作介紹了,如果您有興趣,不妨嘗試一下;

2、vi 編輯器

為什麼要學會簡單應用vi?

vi或vim是Linux最基本的文本編輯工具,vi或vim雖然沒有圖形介面編輯器那樣點滑鼠的簡單操作,但vi編輯器在系統管理、伺服器管理中,永遠不是圖形介面的編輯器能比的。當您沒有安裝X-windows案頭環境或案頭環境崩潰時,我們仍需要字元模式下的編輯器vi;vi或vim 編輯器在建立和編輯簡單文檔最高效的工具;

3、vi 編輯器的使用方法

3.1 如何調用vi ;

[root@localhost ~]# vi  filename

3.2 vi 的三種命令模式

Command(命令)模式,用於輸入命令;

Insert(插入)模式,用於插入文本;

Visual(可視)模式,用於視化的的高亮並選定本文;

3.3 檔案的儲存和退出

Command 模式是vi或vim的預設模式,如果我們處於其它命令模式時,要通過ESC鍵切換過來。

當我們按ESC鍵後,接著再輸入:號時,vi會在螢幕的最下方等待我們輸入命令;

:w  儲存;

:w  filename 另存新檔filename;

:wq! 儲存退出;

:wq! filename 註:以filename為檔案名稱儲存後退出;

:q! 不儲存退出;

:x 應該是儲存並退出 ,功能和:wq!相同

3.4 游標移動

當我們按ESC進入Command模式後,我們可以用下面的一些鍵位來移動游標;

j 向下移動一行;

k 向上移動一行;

h 向左移動一個字元;

l 向右移動一個字元;

ctrlb  向上移動一屏;

ctrlf  向下移動一屏;

向上箭頭    向上移動;

向下箭頭    向下移動;

向左箭頭    向左移動;

向右箭頭    向右移動;

我們編輯一個檔案時,對於 j、k、l和h鍵,還能在這些動作命令的前面加上數字,比如 3j,表示向下移動3行。

3.5 插入模式(文本的插入)

i  在游標之前插入;

a  在游標之後插入;

I 在游標所在行的行首插入;

A  在游標所在行的行末插入;

o  在游標所在的行的上面插入一行;

O  在游標所在的行的下面插入一行;

s  刪除游標後的一個字元,然後進入插入模式;

S  刪除游標所在的行,然後進入插入模式;

3.6 常值內容的刪除操作

x 一個字元;

#x 刪除幾個字元,#表示數字,比如3x;

dw 刪除一個單詞;

#dw 刪除幾個單詞,#用數字表示,比如3dw表示刪除三個單詞;

dd 刪除一行;

#dd 刪除多個行,#代表數字,比如3dd 表示刪除游標行及游標的下兩行;

d$ 刪除游標到行尾的內容;

J 清除游標所處的行與上一行之間的空格,把游標行和上一行接在一起;

3.7 恢複修改及恢複刪除操作

u  撤消修改或刪除操作;

按ESC鍵返回Command(命令)模式,然後按u鍵來撤消刪除以前的刪除或修改;如果您想撤消多個以前的修改或刪除操作,請按多按幾次u。這和Word的撤消操作沒有太大的區別;

3.8 可視模式

在最新的Linux發行版本中,vi提供了可視模式,因為這個功能是vim才有的。如果您用的vi沒有這個功能,就換成vim就有了。開啟可視模式,按ESC鍵,然後按v就進入可視模式;

可視模式為我們提供了極為友好的選取文本範圍,以高亮顯示;在螢幕的最下方顯示有;

-- 可視 --  

--VISUAL--

進入可視模式,我們就可以用前面所說的命令列模式中的游標移動指令,可以進行文本範圍的選取。

選取文本範圍有何用?

我們可以對某部份刪除作業,按d鍵就刪除了我們選中的內容。

選中內容後,我們按y就表示複製;按d表示刪除;

值得一提是的刪除的同時,也表示複製。我們返回到命令模式,然後移動游標到某個位置,然後按shiftp鍵,就把剛才刪除的內容貼上了。我們先在這裡提一句,在後文,我們還得詳細說說。

退出可視模式,還是用ESC鍵;

3.9 複製和粘帖的操作

其實刪除也帶有剪下的意思,當我們刪除文字時,可以把游標移動到某處,然後按shiftp鍵就把內容貼在原處,然後再移動游標到某處,然後再按p或shiftp又能貼上;

p 在游標之後粘帖;

shiftp 在游標之前粘帖

來舉一例:

比如我們想把一個文檔的第三行複製下來,然後帖到第五行的後面,我們應該怎麼做呢?

有兩種方法;

第一種方法:

先把第三行刪除,把游標移動到第三行處,然後用dd動作,接著再按一下shiftp鍵。這樣就把剛才刪除的第三行帖在原處了。

接著我們再用k鍵移動游標到第五行,然後再按一下p鍵,這樣就把第三行的內容又帖到第五行的後面了;

第二種方法:

進入可視模式,按ESC鍵,然後按v鍵。移動滑鼠指標,選中第三行的內容,然後按y鍵複製;再移動指標到第五行,最後按p鍵;

所以複製和粘貼操作,是命令模式、插入模式及可視模式的綜合運用;我們要學會各種模式之間的切換,要常用ESC鍵;更為重要的學會在命令模式下移動游標;

3.10 關於行號

有時我們配置一個程式運行時,會出現設定檔X行出現錯誤 。這時我們要用到行號相關的操作;

為所有內容添加行號;

按ESC鍵,然後輸入:

:set number

游標所處位置

在螢幕的右下角,有類似如下的;

         57,8          27

在這之中,57表示第57行,8表示第8個字元;

3.11 尋找和替換功能

3.11.1 尋找

首先,我們要進入ESC鍵,進入命令模式;我們輸入/或?就進入尋找模式了;

/SEARCH  註:正向尋找,按n鍵把游標移動到下一個合格地方;

?SEARCH  註:反向尋找,按shiftn 鍵,把游標移動到下一個合格

舉一例:比如我想在一個檔案中找到swap單詞,我應該如下做;

首先按ESC鍵,進入命令模式,然後輸入;

/swap

?swap

3.11.2 替換

按ESC鍵進入命令模式;

:s /SEARCH/REPLACE/g  註:把當前游標所處的行中的SEARCH單詞,替換成REPLACE,並把所有SEARCH高亮顯示;

:%s /SEARCH/REPLACE  註:把文檔中所有SEARCH替換成REPLACE;

:#,# s /SEARCH/REPLACE/g  註:#號表示數字,表示從多少行到多少行,把SEARCH替換成REPLACE;

註:在這之中,g表示全域尋找;我們注意到,就是沒有替換的地方,也會把SEARCH高亮顯示;

舉例說明:

比如我們有一篇文檔要修改;

我們把游標所在的行,把所有單詞the,替換成THE,應該是:

:s /the/THE/g

我們把整篇文檔的所有的the都替換成THE,應該是:

:%s /the/THE

我們僅僅是把第1行到第10行中的the,替換成THE,應該是;

:1,10  s /the/THE/g

 

1.1.1   編輯器vi

在Linux下開發一般都用vi編輯器來編寫代碼,就像Windows下用記事本寫文擋一樣編寫各種文檔,只是寫的代碼檔案尾碼名是.c或.cpp等;在以後的工作中,我們每天的程式編寫、檔案編輯等工作都得用到vi編輯器,所以對vi運用的熟練程度直接決定了你的工作效率。

網上有關vi使用方法的資料有很多,你可以自己下載回來學習或直接學習Linux內建的協助手冊。不管你通過何種方式學習,下面的幾點是你必須要掌握並熟練運用的:

一、             Vi的三種工作模式的區別以及相互間的切換

Vi的工作模式為:

1.         編輯模式

Vi 在初始啟動(開啟檔案)後首先進入編輯模式,在此模式下可移動游標、刪除文字、複製或粘貼文字等操作;

Vi文法:vi <檔案名稱>;

2.         插入模式

當使用者在編輯模式下鍵入 i, a, o 等命令之後進入插入模式,除 Esc 之外的任何字元均將被看成是插入到編輯緩衝區中的字元,按Esc後切換到編輯模式;

3.         最後行模式

當使用者在編輯模式下鍵入“:”之後進入最後行模式,在此模式下可鍵入命令用來儲存檔案、讀取檔案內容、執行 Shell 命令、設定 Vi 參數、以Regex的方式尋找字串或替換字串等;

二、             編輯模式命令操作

1.         移動游標

要對本文內容進行修改,首先必須把游標移動到指定位置:

           k、j、h、l      功能分別等同於上、下、左、右方向鍵

Ctrl+b          在檔案中向上移動一頁(相當於 PageUp 鍵)

Ctrl+f          在檔案中向下移動一頁(相當於 PageDown 鍵)

H               將游標移到螢幕的最上行(Highest)

nH              將游標移到螢幕的第 n 行

2H              將游標移到螢幕的第 2 行

M               將游標移到螢幕的中間(Middle)

L               將游標移到螢幕的最下行(Lowest)

nL              將游標移到螢幕的倒數第 n 行

3L             將游標移到螢幕的倒數第 3 行

w               在指定行內右移游標,到下一個字的開頭

e               在指定行內右移游標,到一個字的末尾

b               在指定行內左移游標,到前一個字的開頭

0               數字0,左移游標,到本行的開頭

$               右移游標,到本行的末尾

^               移動游標,到本行的第一個非Null 字元

2.         替換和刪除

以用其他字元來替換游標所指向的字元,或從當前游標位置刪除一個或多 個字元:

                     rc                                用 c 替換游標所指向的當前字元

nrc                     用 c 替換游標所指向的前 n 個字元

5rc                     用 c 替換游標所指向的前 5 個字元

x                                  刪除游標所指向的當前字元

nx                                刪除游標所指向的前 n 個字元

3x                                刪除游標所指向的前 3 個字元

dw                              刪除游標右側的字

ndw                            刪除游標右側的 n 個字

3dw                            刪除游標右側的 3 個字

db                               刪除游標左側的字

ndb                             刪除游標左側的 n 個字

5db                             刪除游標左側的 5 個字

dd                               刪除游標所在行,並去除空隙

ndd                             刪除 n 行內容,並去除空隙

3dd                             刪除 3 行內容,並去除空隙

3.         粘貼和複製

從本文中刪除的內容(如字元、字或行)並沒有真正丟失,而是被剪下並複製到了一個記憶體緩衝區中。使用者可將其粘貼到本文中的指定位置:

p               小寫字母 p,將緩衝區的內容粘貼到游標的後面

P               大寫字母 P,將緩衝區的內容粘貼到游標的前面

yy             複製當前行到記憶體緩衝區

nyy 複製 n 行內容到記憶體緩衝區

5yy 複製 5 行內容到記憶體緩衝區

4.         搜尋字串

要尋找檔案中指定字或短語出現的位置,可以 用 vi 直接進行搜尋,而不必以手工方式進行。搜尋方法是:鍵入字元 / ,後面跟以要搜尋的字串,然後 按斷行符號鍵。編輯程式執行正向搜尋(即朝檔案末尾方向),並在找到指定字串後,將游標停到該字串的 開頭;鍵入 n 命令可以繼續執行搜尋,找出這一字串下次出現的位置。用字元 ? 取代 / ,可以實現反向 搜尋(朝檔案開頭方向)

5.         撤銷和重複

在編輯文檔的過程中,為消除某個錯誤的編輯命令造成的後果,可以用撤消命令。另外,如果使用者希望在新 的游標位置重複前面執行過的編輯命令,可用重複命令:

              u   撤消前一條命令的結果

.   重複最後一條修改本文的命令

6.         文本選中

vi 可進入到一種成為 Visual 的模式,在該模式下,使用者可以用游標移動命令可視地選擇文本,然後再執行其他編輯操作,例如刪除、複製等:

v      字元選中命令

V     行選中命令

 

三、             插入模式命令操作

在編輯模式下正確定位游標之後,可用以下命令切換到插入模式:

i                在游標左側輸入本文

a               在游標右側輸入本文

o               在游標所在行的下一行增添新行

O              在游標所在行的上一行增添新行

I                在游標所在行的開頭輸入本文

A               在游標所在行的末尾輸入本文

上面介紹了幾種切換到插入模式的簡單方法。另外還有一些命令,它們允許在進入插入模式之前首先刪去一段本文,從而實現本文的替換。這些命令包括:

s               用輸入的本文替換游標所指向的字元       

ns             用輸入的本文替換游標右側n個字元

cw            用輸入的本文替換游標右側的字

ncw          用輸入的本文替換游標右側的 n 個字

cb             用輸入的本文替換游標左側的字

ncb           用輸入的本文替換游標左側的 n 個字

cd             用輸入的本文替換游標的所在行

ncd           用輸入的本文替換游標下面的 n 行

c$             用輸入的本文替換從游標開始到本行末尾的所有字元

c0             用輸入的本文替換從本行開頭到游標的所有字元

四、             最後行模式命令操作

編輯模式下鍵入“:”,游標就跳到螢幕最後一行,並在那裡顯示冒號,使用者輸入的內容均顯示在螢幕的最後一行,按斷行符號鍵,vi 執行命令;

1.   退出命令

ZZ          在編輯模式下可以退出 vi 編輯程式,該命令儲存對本文所作的修改,覆蓋原始檔案;

:q      在未作修改的情況下退出

:q!   放棄所有修改,退出編輯程式

:wq          將編輯的內容寫入原始檔案並退出編輯程式(相當於 ZZ 命令)

2.   行號與檔案

命令模式下,可以規定命令操作的行號範圍。數值用來指定絕對行號;字元“.”表示游標所在行的行號;字元 符“$”表示本文最後一行的行號;簡單的運算式,例如“.+5”表示當前行往下的第 5 行;

編輯中的每一行本文都有自己的行號,用下列命令可以移動游標到指定行:

:n                                 將游標移到第 n 行

:w                               將編輯的內容寫入原始檔案,用來儲存編輯的中間結果

:w file               將編輯的內容寫入 file 檔案,保持原有檔案的內容不變

:a,bw file                   將第 a 行至第 b 行的內容寫入 file 檔案

:r file                 讀取 file 檔案的內容,插入當前游標所在行的後面

:e file                編輯新檔案 file 代替原有內容

:f file                 將當前檔案重新命名為 file

:f                                 列印當前檔案名稱和狀態,如檔案的行數、游標所在的行號等

:345w file                  將第 345 行寫入 file 檔案

:3,5w file                   將第 3 行至第 5 行寫入 file 檔案

:1,.w file                    將第 1 行至當前行寫入 file 檔案

:.,$w file                    將當前行至最後一行寫入 file 檔案

:.,.+5w file       從當前行開始將 6 行內容寫入 file 檔案

:1,$w file                   將所有內容寫入 file 檔案,相當於 :w file 命令

3.   字串搜尋

給出一個字串,可以通過搜尋該字串到達指定行。如果希望進行正向搜尋,將待搜尋的字串置於兩個“ /”之間;如果希望反向搜尋,則將字串放在兩個“?”之間:

:/str/                                             正向搜尋,將游標移到下一個包含字串 str 的行

:?str?                                           反向搜尋,將游標移到上一個包含字串 str 的行

:/str/w file                         正向搜尋,並將第一個包含字串 str 的行

寫入 file 檔案

:/str1/,/str2/w file                    正向搜尋,並將包含字串 str1 的行至包含字串 str2 的行寫 入 file 檔案

4.   本文替換

利用 :s 命令可以實現字串的替換。具體的用法包括:

:s/str1/str2/                      用字串 str2 替換行中首次出現的字串 str1

:s/str1/str2/g                             用字串 str2 替換行中所有出現的字串 str1

:.,$ s/str1/str2/g                                用字串 str2 替換本文當前行到末尾所有出現的字串 str1

:1,$ s/str1/str2/g            用字串 str2 替換本文中所有出現的字串 str1

:g/str1/s//str2/g              功能同上

 

從上述替換命令可以看到:g 放在命令末尾,表示對搜尋字串的每次出現進行替換;不加 g,表示只對搜尋 字串的首次出現進行替換;g 放在命令開頭,表示對本文中所有包含搜尋字串的行進行替換操作。

五、             Shell切換

在編輯本文時,利用 vi 命令模式下提供的 shell 切換命令,無須退出 vi 即可執行 Linux 命令,十分方便,也可以說是最後行模式。文法格式為:

:! command             執行完 shell 命令 command 後回到 vi

 

另外,在編輯模式下,鍵入 K ,可命令 vi 尋找游標所在單詞的手冊頁,相當於運行 man命令。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.