vi編輯器的使用

vi編輯器的使用 正則表達式

關鍵詞:VI,vi編輯器, shell

1、關於文本編輯器 vim

文本編輯器有不少,好比圖形模式的geditkwriteOpenOffice ... ... ,文本模式下的編輯器有vivimvi的加強版本)和nano ... ... vivim是咱們在Linux中最經常使用的編輯器。咱們有必要介紹一下vivim)最簡單的用法,以讓Linux入門級用戶在最短的時間內學會使用它。 windows

nano工具和DOS操做系統下的edit操做類似,使用簡單,咱們不做介紹了,若是您有興趣,不妨嘗試一下; 服務器

2vi 編輯器 編輯器

爲何要學會簡單應用vi? 工具

vivimLinux最基本的文本編輯工具,vivim雖然沒有圖形界面編輯器那樣點鼠標的簡單操做,但vi編輯器在系統管理、服務器管理中,永遠不是圖形界面的編輯器能比的。當您沒有安裝X-windows桌面環境或桌面環境崩潰時,咱們仍須要字符模式下的編輯器vivivim 編輯器在建立和編輯簡單文檔最高效的工具; 學習

3vi 編輯器的使用方法 spa

3.1 如何調用vi 操作系統

[root@localhost ~]# vi  filename

3.2 vi 的三種命令模式

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

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

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

3.3 文件的保存和退出

Command 模式是vivim的默認模式,若是咱們處於其它命令模式時,要經過ESC鍵切換過來。

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

:w  保存;

:w  filename 另存爲filename

:wq! 保存退出;

:wq! filename 注:以filename爲文件名保存後退出;

:q! 不保存退出;

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

3.4 光標移動

當咱們按ESC進入Command模式後,咱們能夠用下面的一些鍵位來移動光標;

j 向下移動一行;

k 向上移動一行;

h 向左移動一個字符;

l 向右移動一個字符;

ctrlb  向上移動一屏;

ctrlf  向下移動一屏;

向上箭頭    向上移動;

向下箭頭    向下移動;

向左箭頭    向左移動;

向右箭頭    向右移動;

咱們編輯一個文件時,對於 jklh鍵,還能在這些動做命令的前面加上數字,好比 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鍵就把內容貼在原處,而後再移動光標到某處,而後再按pshiftp又能貼上;

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自帶的幫助手冊。無論你經過何種方式學習,下面的幾點是你必需要掌握並熟練運用的:

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

Vi的工做模式爲:

1.         編輯模式

Vi 在初始啓動(打開文件)後首先進入編輯模式,在此模式下可移動光標、刪除文字、複製或粘貼文字等操做;

Vi語法:vi <文件名>

2.         插入模式

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

3.         最後行模式

當用戶在編輯模式下鍵入「:」以後進入最後行模式,在此模式下可鍵入命令用來保存文件、讀取文件內容、執行 Shell 命令、設置 Vi 參數、以正則表達式的方式查找字符串或替換字符串等;

2、             編輯模式命令操做

1.         移動光標

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

           k、jhl      功能分別等同於上、下、左、右箭頭鍵

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,左移光標,到本行的開頭

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

^               移動光標,到本行的第一個非空字符

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     行選中命令

3、             插入模式命令操做

在編輯模式下正肯定位光標以後,可用如下命令切換到插入模式:

i                在光標左側輸入正文

a               在光標右側輸入正文

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

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

I                在光標所在行的開頭輸入正文

A               在光標所在行的末尾輸入正文

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

s               用輸入的正文替換光標所指向的字符       

ns             用輸入的正文替換光標右側n個字符

cw            用輸入的正文替換光標右側的字

ncw          用輸入的正文替換光標右側的 n 個字

cb             用輸入的正文替換光標左側的字

ncb           用輸入的正文替換光標左側的 n 個字

cd             用輸入的正文替換光標的所在行

ncd           用輸入的正文替換光標下面的 n

c$             用輸入的正文替換從光標開始到本行末尾的全部字符

c0             用輸入的正文替換從本行開頭到光標的全部字符

4、             最後行模式命令操做

編輯模式下鍵入「:」,光標就跳到屏幕最後一行,並在那裏顯示冒號,用戶輸入的內容均顯示在屏幕的最後一行,按回車鍵,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 放在命令開頭,表示對正文中全部包含搜索字符串的行進行替換操做。

5、             Shell切換

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

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

另外,在編輯模式下,鍵入 K ,可命令 vi 查找光標所在單詞的手冊頁,至關於運行 man命令。

相關文章
相關標籤/搜索