整理分享Linux的vi命令詳解

本篇文章給大家?guī)砹岁P于vi命令的詳細解析,vi編輯器是所有unixlinux系統(tǒng)下標準的編輯器,它的強大不遜色于任何最新的文本編輯器,希望對大家有幫助。

整理分享Linux的vi命令詳解

這里只是簡單地介紹一下它的用法和一小部分指令。由于對Unix及linux系統(tǒng)的任何版本,vi編輯器是完全相同的,因此您可以在其他任何介紹vi的地方進一步了解它。Vi也是Linux中最基本的文本編輯器,學會它后,您將在Linux的世界里暢行無阻。

1、vi的基本概念

  基本上vi可以分為三種狀態(tài),分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區(qū)分如下:

??? 1) 命令行模式command mode)

  控制屏幕光標的移動,字符、字或行的刪除,移動復制某區(qū)段及進入Insert mode下,或者到 last line mode。

??? 2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。

??? 3) 底行模式(last line mode)

  將文件保存或退出vi,也可以設置編輯環(huán)境,如尋找字符串、列出行號……等。

??? 不過一般我們在使用時把vi簡化成兩個模式,就是將底行模式(last line mode)也算入命令行模式command mode)。

2、vi的基本操作

a) 進入vi

??  在系統(tǒng)提示符號輸入vi及文件名稱后,進入vi之后,是處于「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動光標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi后,先不要亂動,轉換到「插入模式(Insert mode)」再說吧!

b) 切換至插入模式(Insert mode)編輯文件

  在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。

c) Insert 的切換

  目前處于「插入模式(Insert mode)」,就只能一直輸入文字,如果發(fā)現(xiàn)輸錯了字!想用光標鍵往回移動,將該字刪除,就要先按一下「ESC」鍵轉到「命令行模式(command mode)」再刪除文字。

d) 退出vi及保存文件

  在「命令行模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」,例如:

: w filename (輸入 「w filename」將文章以指定的文件名filename保存)

: wq (輸入「wq」,存盤并退出vi)

: q! (輸入q!, 不存盤強制退出vi)

3、命令行模式(command mode)功能鍵

1). 插入模式

?????? 按「i」切換進入插入模式「insert mode」,按”i”進入插入模式后是從光標當前位置開始輸入文件;

  按「a」進入插入模式后,是從目前光標所在位置的下一個位置開始輸入文字;

  按「o」進入插入模式后,是插入新的一行,從行首開始輸入文字。

2). 從插入模式切換為命令行模式

????? 按「ESC」鍵。

3). 移動光標

  vi可以直接用鍵盤上的光標來上下左右移動,但正規(guī)的vi是用小寫英文字母「h」、「j」、「k」、「l」,分別控制光標左、下、上、右移一格。

  •   按「ctrl」+「b」:屏幕往”后”移動一頁。

  •   按「ctrl」+「f」:屏幕往”前”移動一頁。

  •   按「ctrl」+「u」:屏幕往”后”移動半頁。

  •   按「ctrl」+「d」:屏幕往”前”移動半頁。

  •   按數(shù)字「0」:移到文章的開頭。

  •   按「G」:移動到文章的最后。

  •   按「$」:移動到光標所在行的”行尾”。

  •   按「^」:移動到光標所在行的”行首”

  •   按「w」:光標跳到下個字的開頭

  •   按「e」:光標跳到下個字的字尾

  •   按「b」:光標回到上個字的開頭

  •   按「#l」:光標移到該行的第#個位置,如:5l,56l。

4). 刪除文字

  •   「x」:每按一次,刪除光標所在位置的”后面”一個字符。

  •   「#x」:例如,「6x」表示刪除光標所在位置的”后面”6個字符。

  •   「X」:大寫的X,每按一次,刪除光標所在位置的”前面”一個字符。

  •   「#X」:例如,「20X」表示刪除光標所在位置的”前面”20個字符。

  •   「dd」:刪除光標所在行。

  •   「#dd」:從光標所在行開始刪除#行

5). 復制

  •   「yw」:將光標所在之處到字尾的字符復制到緩沖區(qū)中。

  •   「#yw」:復制#個字到緩沖區(qū)

  •   「yy」:復制光標所在行到緩沖區(qū)。

  •   「#yy」:例如,「6yy」表示拷貝從光標所在的該行”往下數(shù)”6行文字。

  •   「p」:將緩沖區(qū)內的字符貼到光標所在位置。注意:所有與”y”有關的復制命令都必須與”p”配合才能完成復制與粘貼功能。

6). 替換

  •   「r」:替換光標所在處的字符。

  •   「R」:替換光標所到之處的字符,直到按下「ESC」鍵為止。

7). 回復上一次操作

  「u」:如果您誤執(zhí)行一個命令,可以馬上按下「u」,回到上一個操作。按多次”u”可以執(zhí)行多次回復。

8). 更改

  •   「cw」:更改光標所在處的字到字尾處

  •   「c#w」:例如,「c3w」表示更改3個字

9). 跳至指定的行

  •   「ctrl」+「g」列出光標所在行的行號。

  •   「#G」:例如,「15G」,表示移動光標至文章的第15行行首。

4、Last line mode下命令簡介

  在使用「last line mode」之前,請記住先按「ESC」鍵確定您已經(jīng)處于「command mode」下后,再按「:」冒號即可進入「last line mode」。

A) 列出行號

 「set nu」:輸入「set nu」后,會在文件中的每一行前面列出行號。

B) 跳到文件中的某一行

 「#」:「#」號表示一個數(shù)字,在冒號后輸入一個數(shù)字,再按回車鍵就會跳到該行了,如輸入數(shù)字15,再回車,就會跳到文章的第15行。

C) 查找字符

 「/關鍵字」:先按「/」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往后尋找到您要的關鍵字為止。

 「?關鍵字」:先按「?」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止。

D) 保存文件

 「w」:在冒號輸入字母「w」就可以將文件保存起來。

E) 離開vi

 「q」:按「q」就是退出,如果無法離開vi,可以在「q」后跟一個「!」強制離開vi。

 「qw」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件。

5、vi命令列表

1、下表列出命令模式下的一些鍵的功能:

  • h左移光標一個字符

  • l右移光標一個字符

  • k光標上移一行

  • j光標下移一行

  • ^光標移動至行首

  • 0數(shù)字”0″,光標移至文章的開頭

  • G光標移至文章的最后

  • $光標移動至行尾

  • Ctrl+f向前翻屏

  • Ctrl+b向后翻屏

  • Ctrl+d向前翻半屏

  • Ctrl+u向后翻半屏

  • i在光標位置前插入字符

  • a在光標所在位置的后一個字符開始增加

  • o插入新的一行,從行首開始輸入

  • ESC從輸入狀態(tài)退至命令狀態(tài)

  • x刪除光標后面的字符

  • #x刪除光標后的#個字符

  • X(大寫X),刪除光標前面的字符

  • #X刪除光標前面的#個字符

  • dd刪除光標所在的行

  • #dd刪除從光標所在行數(shù)的#行

  • yw復制光標所在位置的一個字

  • #yw復制光標所在位置的#個字

  • yy復制光標所在位置的一行

  • #yy復制從光標所在行數(shù)的#行

  • p粘貼

  • u取消操作

  • cw更改光標所在位置的一個字

  • #cw更改光標所在位置的#個字

2、下表列出行命令模式下的一些指令

  • w filename

儲存正在編輯的文件為filename

  • wq filename

儲存正在編輯的文件為filename,并退出vi

  • q!

放棄所有修改,退出vi

  • set nu

顯示行號

  • /或?

查找,在/后輸入要查找的內容

  • n

與/或?一起使用,如果查找的內容不是想要找的關鍵字,按n或向后(與/聯(lián)用)或向前(與?聯(lián)用)繼續(xù)查找,直到找到為止。

對于第一次用vi,有幾點注意要提醒一下:

1、用vi打開文件后,是處于「命令行模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。切換方法:在「命令行模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。

2、編輯好后,需從插入模式切換為命令行模式才能對文件進行保存,切換方法:按「ESC」鍵。

3、保存并退出文件:在命令模式下輸入:wq即可!(別忘了wq前面的:)

在屏幕上移動

Vi提供了三個關于光標在全屏幕上移動并且文件本身不發(fā)生滾動的命令。它們分別是H、M和L命令。

H命令

該命令將光標移至屏幕首行的行首(即左上角),也就是當前屏幕的第一行,而不是整個文件的第一行。利用此命令可以快速將光標移至屏幕頂部。若在H命令之前加上數(shù)字n,則將光標移至第n行的行首。

M命令

該命令將光標移至屏幕顯示文件的中間行的行首。即如果當前屏幕已經(jīng)充滿,則移動到整個屏幕的中間行;如果并未充滿,則移動到文本的那些行的中間行。利用此命令可以快速地將光標從屏幕的任意位置移至屏幕顯示文件的中間行的行首。例如,在上面屏幕顯示的情況下(不論光標在屏幕的何處),在命令模式下,輸入命令M之后,光標都將移到add這一行的字母a上。

同樣值得一提的是,使用命令dM將會刪除從光標當前所在行至屏幕顯示文件的中間行的全部內容。

L命令

當文件顯示內容超過一屏時,該命令將光標移至屏幕上的最底行的行首;當文件顯示內容不足一屏時,該命令將光標移至文件的最后一行的行首。可見,利用此命令可以快速準確地將光標移至屏幕底部或文件的最后一行。若在L命令之前加上數(shù)字n,則將光標移至從屏幕底部算起第n行的行首。例如,在上面屏幕顯示的情況下(不論光標在屏幕的何處),在命令模式下,輸入命令3L之后,光標都將移到x++這一行的字母x上。

同樣值得一提的是,使用命令dL將會刪除從光標當前行至屏幕底行的全部內容。

按字移動光標

首先介紹一下Vi中“字”的概念。在Vi中“字”有兩種含義。一種是廣義的字,它可以是兩個空格之間的任何內容。另一種字是狹義上的字,在此種意義之下,英文單詞、標點符號和非字母字符(如!、@、#、$、%、^、&、*、(、)、-、+、{、}、[、]、~、|、”、、/等)均被當成是一個字。因此,上面那一行中就包括{、int、k、;這4個字。

Vi中使用大寫命令一般就是指將字作為廣義來對待,使用小寫命令就是作為狹義對待。

搞清楚Vi中字的含義后,我們就可以介紹按字移動光標的命令了。

Vi 一共提供了三組關于按字移動光標的命令,分別是:

w和W命令

將光標右移至下一個字的字首;

e和E命令

如果光標起始位置處于字內(即非字尾處),則該命令將把光標移到本字字尾;如果光標起始位置處于字尾,則該命令將把光標移動到下一個字的字尾。

b和B

如果光標處于所在字內(即非字首),則該命令將把光標移至本字字首;如果光標處于所在字字首,則該命令將把光標移到上一個字的字首。

按句移動光標

在Vi中,一個句子被定義為是以逗號(,)、句號(.)、問號(?)和感嘆號(!)結尾,且其后面跟著至少兩個以上(含兩個)空格或一個換行符的字符序列。

Vi提供了關于按句移動光標的兩個命令,分別為:

1. ( 命令

將光標移至上一個句子的開頭。

2. ) 命令

該命令將光標移至下一個句子的開頭。

按段移動光標

在Vi中,一個段被定義為是以一個空白行開始和結束的片段。Vi提供了關于按段移動光標的兩個命令,分別為:

1. { 命令

該命令將光標向前移至上一個段的開頭;

2. } 命令

該命令將光標向后移至下一個段的開頭。

屏幕滾動

屏幕命令是以屏幕為單位移動光標的,常用于文件的滾屏和分頁。需要注意的是,屏幕命令不是光標移動命令,不能作為文本限定符用于刪除命令中。

在命令模式下和文本輸入模式下均可以使用屏幕滾動命令。

1. 滾屏命令

關于滾屏命令有兩個:

· 將屏幕向前(文件頭方向)翻滾半屏;

· 將屏幕向后(文件尾方向)翻滾半屏。

可以在這兩個命令之前加上一個數(shù)字n,則屏幕向前或向后翻滾n行。并且這個值被系統(tǒng)記住,以后再用和命令滾屏時,還滾相應的行數(shù)。

2. 分頁命令

關于分頁命令也有兩個:

· 將屏幕向文件尾方向翻滾一整屏(即一頁);

· 將屏幕向文件首方向翻滾一整屏(即一頁)。

同樣也可以在這兩個命令之前加上一個數(shù)字n,則屏幕向前或向后移動n頁。

3. 狀態(tài)命令

命令顯示在vi狀態(tài)行上的vi狀態(tài)信息,包括正在編輯的文件名、是否修改過、當前行號、文件的行數(shù)以及光標之前的行占整個文件的百分比。

4. 屏幕調零命令

Vi 提供了三個有關屏幕調零的命令。它們的格式分別為:

· [行號] z [行數(shù)]

· [行號] z [行數(shù)] .

· [行號] z [行數(shù)] _

若省略了行號和行數(shù),這三個命令分別為將光標所在的當前行作為屏幕的首行、中間行和最末行重新顯示;若給出行號,那么該行號所對應的行就作為當前行顯示在屏幕的首行、中間行和最末行;若給出行數(shù),則它規(guī)定了在屏幕上顯示的行數(shù)。

[例13]

8z16 :將文件中的第8行作為屏幕顯示的首行,并一共顯示16行。

15z . :將文件中的第15行作為屏幕顯示的中間行,顯示行數(shù)為整屏。

15z 5_ :將文件中的第15行作為屏幕顯示的最末行,顯示行數(shù)為5行。

文本插入操作

在命令模式下用戶輸入的任何字符都被Vi當作命令加以解釋執(zhí)行,如果用戶要將輸入的字符當作是文本內容時,則首先應將Vi的工作模式從命令模式切換到文本輸入模式。切換的方式是使用下面的命令。

插入(Insert)命令

Vi提供了兩個插入命令:i和 I。

i命令

插入文本從光標所在位置前開始,并且插入過程中可以使用鍵刪除錯誤的輸入。此時Vi處于插入狀態(tài),屏幕最下行顯示“–INSERT–”(插入)字樣。

I命令

該命令是將光標移到當前行的行首,然后在其前插入文本。

附加(append)命令

Vi提供了兩個附加插入命令:a和A。

a命令

該命令用于在光標當前所在位置之后追加新文本。新輸入的文本放在光標之后,在光標后的原文本將相應地向后移動。光標可在一行的任何位置。

A命令

該命令與a命令不同的是,A命令將把光標挪到所在行的行尾,從那里開始插入新文本。當輸入A命令后,光標自動移到該行的行尾。

a和A命令是把文本插入到行尾的唯一方法。

打開(open)命令

不論是Insert命令也好,還是append命令也好,所插入的內容都是從當前行中的某個位置開始的。若我們希望在某行之前或某行之后插入一些新行,則應使用open命令。

Vi提供了兩個打開命令:o和O。

o命令

該命令將在光標所在行的下面新開一行,并將光標置于該行的行首,等待輸入文本。要注意,當使用刪除字符時只能刪除從插入模式開始的位置以后的字符,對于以前的字符不起作用。而且還可以在文本輸入方式下輸入一些控制字符,例如,Ctrl+l即是插入分頁符,顯示為^L。

O命令

和o命令相反,O命令是在光標所在行的上面插入一行,并將光標置于該行的行首,等待輸入文本。

11.3.4 文本修改

在命令模式下可以使用Vi提供的各種有關命令對文本進行修改,包括對文本內容的刪除、復制、取代和替換等。

文本刪除

在編輯文本時,經(jīng)常需要刪除一些不需要的文本,我們可以用鍵將輸錯或不需要的文本刪除,但此時有一個限制就是當刪到行頭之后,再想刪上面那行的內容是不可能的。

在命令模式下,Vi提供了許多刪除命令。這些命令大多是以d開頭的。常用的有:

1. 刪除單個字符

x: 刪除光標處的字符。若在x之前加上一個數(shù)字n,則刪除從光標所在位置開始向右的n個字符。

X:刪除光標前面的那個字符。若在X之前加上一個數(shù)字n,則刪除從光標前面那個字符開始向左的n個字符。

顯然這兩個命令是刪除少量字符的快捷方法。

2. 刪除多個字符

dd:刪除光標所在的整行。在dd前可加上一個數(shù)字n,表示刪除當前行及其后n-1行的內容。

D或d$:兩命令功能一樣,都是刪除從光標所在處開始到行尾的內容。

d0:刪除從光標前一個字符開始到行首的內容。

dw:刪除一個單詞。若光標處在某個詞的中間,則從光標所在位置開始刪至詞尾。同dd命令一樣,可在dw之前加一個數(shù)字n,表示刪除n個指定的單詞。

如果用戶不小心進行了誤刪除操作,也不要緊,Vi提供了恢復誤操作的命令,并且可以將恢復的內容移動,放在文本的任何地方。恢復命令用2 np,其中n為寄存器號。這是因為Vi內部有9個用于維護刪除操作的寄存器,分別用數(shù)字1,2,? ,9表示,它們分別保存以往用dd命令刪除的內容。這些寄存器組成一個隊列,例如最近一次使用dd命令刪除的內容被放到寄存器1中;當下次再使用dd命令刪除文本內容時,Vi將把寄存器1的內容轉存到寄存器2中,而寄存器1中又將是最近一次dd命令刪除的內容。以此類推,Vi可以保存有最近九次用dd命令刪除的內容,而前面的用dd命令刪除的內容則被拋棄。

  在最末行模式下,也可以對文件內容進行刪除,但它只能刪除整行,一次可將某個指定范圍內(起始行號,終止行號)的所有行全部刪除。需要注意的是,用此種方法進行刪除時,Vi并不把所刪內容放入寄存器中,因而當發(fā)生誤刪除操作時,不能用2 np命令恢復,只能用u命令進行有限的恢復。

最后提一下,如何在文本輸入方式時將所輸入文本刪除。用戶使用組合鍵即可,此時光標將返回插入開始的位置,并且Vi仍處于文本輸入方式。

取消上一命令(Undo)

取消上一命令(Undo),也稱復原命令,是非常有用的命令,它可以取消前一次的誤操作或不合適的操作對文件造成的影響,使之回復到這種誤操作或不合適操作被執(zhí)行之前的狀態(tài)。

取消上一命令有兩種形式,在命令模式下鍵入字符u和U。它們的功能都是取消剛才輸入的命令,恢復到原來的情況。小寫u和大寫U在具體細節(jié)上有所不同,二者的區(qū)別在于,大寫U命令的功能是恢復到誤操作命令前的情況,即如果插入命令后使用U命令,就刪除剛剛插入的內容;

如果刪除命令后使用U命令,就相當于在光標處又插入剛剛刪除的內容。這里把所有修改文本的命令都視為插入命令。也就是說,U命令只能取消前一步操作,如果用U命令撤消了前一步操作,當再按U鍵時,并不是撤消再前一步的操作,而是撤消了剛才U命令執(zhí)行的操作,也就是又恢復到第一次使用U命令之前的狀態(tài),結果是什么都沒做。而小寫u命令的功能是把當前行恢復成被編輯前的狀態(tài),而不管此行被編輯了多少次。

注意:對于取消命令仍可以再使用取消命令。這時會產(chǎn)生一種“負負得正”的效果,文件狀態(tài)將恢復到第一次執(zhí)行取消命令之前的狀態(tài),如同沒做任何操作一般。例如在上例中,再使用一次命令U,屏幕將顯示的內容仍為插入后的內容。

重復命令(Redo)

重復命令也是一個非常常用的命令。在文本編輯中經(jīng)常會碰到需要機械地重復一些操作,這時就需要用到重復命令。它可以讓用戶方便地再執(zhí)行一次前面剛完成的某個復雜的命令。

重復命令只能在命令模式下工作,在該模式下按“.”鍵既可。執(zhí)行一個重復命令時,其結果是依賴于光標當前位置的。

文本內容的修改

文本內容的修改是指在編輯過程中,可以對文本中的某些字符,某些行進行修改,即用新輸入的文本代替需要修改的老文本,它等于先用刪除命令刪除需要修改的內容,然后再利用插入命令插入新的內容。所以在使用修改命令后,vi進入到文本輸入模式下,當輸入完新的內容后,一定要再按回到命令模式,否則Vi會一直認為是在文本輸入模式下,此時輸入的任何內容都被認為是修改的新內容。

Vi提供了三種修改命令,分別是c、C和cc。它們修改文本的范圍是由光標位置和光標移動命令二者限定的。下面分別介紹這三種修改命令。

c命令

c后緊跟光標移動命令,限定修改內容的范圍是從光標當前位置開始到指定的位置為止。命令c中修改文本的范圍是由光標位置和光標移動命令二者限定的。

C、c$命令

C 、c$命令可以修改從光標當前位置開始到該行末尾或從光標當前位置開始到某行末尾范圍內的內容。

當在命令C之前加上數(shù)字n時,表示可以修改指定行數(shù)的內容。例如,3C命令就表示把光標所在位置的字符之后(注意不是整行)直到下面兩個整行的內容刪除,由隨后輸入的內容代替。

cc命令

cc命令的功能和C相同,只是修改的范圍和C不同,它是修改從光標所在行的起始位(不管光標處于該行的何列)到該行末尾或指定某行末尾范圍內的內容。光標所在行的全部內容都由新輸入的內容所代替。

同命令C一樣,也可以在cc之前加上數(shù)字n,表示要從光標當前行算起一共修改n行的內容。例如,5cc表示先刪除光標所在行及其下面的4行,然后輸入要修改的內容。

文本的替換

文本的替換即是用新輸入的文本代替原已有的文本。它同文本修改一樣,也是先執(zhí)行刪除操作,再執(zhí)行插入操作。

Vi提供的替換的命令有取代命令、替換命令和字替換命令。

1. 取代命令 :r和R

r:用隨后輸入的一個字符代替當前光標處的那個字符。

R:用隨后輸入的文本取代從當前光標處及其后面的若干字符,每輸入一個字符就取代原有的一個字符,直到按鍵結束這次取代。若新輸入的字符數(shù)超過原有對應字符數(shù),則多出部分就附加在后面。

若在命令R之前加上一個數(shù)字,例如5R,則表示新輸入的文本重復出現(xiàn)5次,但只取代一個被輸入文本所覆蓋的字符序列,當前行中未被覆蓋的內容仍保留下來,只是位置相應右移。

值得一提的是,利用R取代文本內容時,新輸入的文本可以占多行,取代時也只有光標所在行的對應字符被覆蓋。

可見新輸入的6個字符(包括空格,但不包括)取代原行中的6個字符。

2. 替換命令:s和S

s(小寫):該命令表示用隨后輸入的文本替換當前光標所在的字符。

如果只用一個新字符替換光標所在字符,則s命令與r命令功能類似,如sh與rh的作用都是將光標所在字符變?yōu)閔。但二者也有區(qū)別,r命令僅完成置換,而s命令在完成置換同時,工作模式從命令方式轉為文本輸入方式。因此,s命令的一般使用方式是:s隨后是要替換的正文,最后一定是, 結束文本輸入模式,返回到命令模式。

可以在s前面加一個數(shù)字n,則表示用s后輸入的文本替換從光標所在字符開始及其后的n-1個字符(共n個字符)。

S(大寫):該命令表示用新打入的正文替換光標當前行(整行)(不管光標位于何列)。

如果在S之前給出一個數(shù)字n,例如3,則表示有3行(包括光標當前行及其下面2行)要被S命令之后輸入的正文所替換。

3. 字替換 cw

如果我們只希望將某個字的內容用其他文本串替換,則可用cw命令。cw所替換的是一個狹義的字。輸入這個命令后,Vi將把光標處的那個字刪除,然后用戶可輸入任何文本內容。輸入完成之后按鍵,Vi即用所輸入的內容替換原光標位置至相應字結尾的所有內容。

文本行的合并

Vi提供了將文本中的某些行進行合并的命令。該命令用J(大寫字母)表示,其功能是把光標所在行與下面一行合并為一行。

如果在J命令之前給出一個數(shù)字n,例如3,則表示把光標當前行及其后面的2行(共3行)合并為一行。

文本行的移動

在Vi中我們可以方便地將某個范圍內的文本行左右移動或從一個地方移至另外一個地方。

文本行的左右移動。

文本行左右移動的命令有 >、> 和

(1)> 命令將限定正文行(屏幕的首行)向右移動,通常是8個空格,使用格式為:>光標移動命令。移動正文行的范圍由光標所在行和隨后打入的光標移動命令所限定。

(2)命令相同,只是移動方向相反。例如,

(3)>> 命令將光標所在行右移8個空格。如果在>>命令之前給出一個數(shù)字n,例如4,則表示光標當前行及其下面的3行(共4行)都右移8個空格。

(4)>命令相同,只是移動方向相反。

文本行的異行移動

我們可以利用下面的步驟完成文本行從一個地方移至另外一個地方。

將光標移至待移動文本的首行;

按ndd命令。其中n為待移動的行數(shù)。此時Vi將把待移動的文本行從文件中刪除,并將其放入到1號刪除寄存器中;

將光標移動到目的行處;

按2 1p將待移動的文本行從刪除寄存器中取出。

此時待移動的文本行就出現(xiàn)在目的位置處了。

上述方法雖然可以實現(xiàn)文本行的異行移動,但顯然太煩瑣。Vi還提供了另一種快捷的方法,就是在末行模式下使用命令m(Move命令)。使用方法為n m k,表示把第n行移至第k行的下方。

現(xiàn)在想使第5行移至第4行位置處,可在末行模式下輸入:

:5 m 3

在命令m之前,還可以指定一個行號范圍(起始行號與終止行號),表示要把指定范圍內的文本行移到指定位置。例如:

:2,5 m 0

表示把文件中的第二行至第五行的內容移至文件頭(第零行之下,這個零行使一個虛行)。

Vi中的行號

Vi中的許多命令都要用到行號及行數(shù)等數(shù)值。若編輯的文件較大時,自己去數(shù)是非常不方便的。為此Vi提供了給文本加行號的功能。這些行號顯示在屏幕的左邊,而相應行的內容則顯示在行號之后。

使用的命令為:在末行方式下輸入命令:

:set number

需要說明的是,這里加的行號只是顯示給用戶看的,它們并不是文件內容的一部分。

在一個較大的文件中,用戶可能需要了解光標當前行是哪一行,在文件中處于什么位置,可在命令模式下用組合鍵,此時Vi會在顯示窗口的最后一行顯示出相應信息。該命令可以在任何時候使用。

在末行方式下,我們可以輸入命令nu(單詞number的縮寫)來獲得光標當前行的行號與該行內容。

光標移動操作

全屏幕文本編輯器中,光標的移動操作無疑是最經(jīng)常使用的操作了。用戶只有熟練地使用移動光標的這些命令,才能迅速準確地到達所期望的位置處進行編輯。

Vi中的光標移動既可以在命令模式下,也可以在文本輸入模式下,但操作的方法不盡相同。

在文本輸入模式下,可直接使用鍵盤上的四個方向鍵移動光標。

在命令模式下,有很多移動光標的方法。不但可以使用四個方向鍵來移動光標,還可以用h、j、k、l這四個鍵代替四個方向鍵來移動光標,這樣可以避免由于不同機器上的不同鍵盤定義所帶來的矛盾,而且使用熟練后可以手不離開字母鍵盤位置就能完成所有操作,從而提高工作效率。另外還可以用、、和四個鍵或組合鍵移動光標。且以上這三種鍵在實現(xiàn)功能上是等價的。除此之外,還有一些移動光標的命令。下面對它們的工作方式介紹如下:

  • 、? (均稱為右向鍵)

右向鍵的作用是將光標向右移動一個位置。若在向右鍵前先輸入一個數(shù)字n,那么光標就向右移動n個位置。例如5l表示光標向右移動5個位置。需要注意的是,光標移動不能超過當前行的末尾。若給定的n超過光標當前位置至行尾的字符個數(shù),如果用右向鍵,光標只能移到行尾;如果用,光標移到下面一行或幾行的適當位置。

  • h、、? (向左鍵)

執(zhí)行一次向左鍵,光標向左移動一個位置。同向右鍵一樣,也可以在向左鍵的前面輸入一個數(shù)字n,那么光標就向左移動n個位置。需要注意的是,如果用左向鍵,光標左移不能超出該行的開頭;如果用,光標移到上面一行或幾行的適當位置。

  • j、、ˉ (向下鍵)

執(zhí)行一次向下鍵光標向下移動一個位置(即一行),但光標所在的列不變。當這些命令前面加上數(shù)字n,則光標下移n行。

Vi除了可以用向下鍵將光標下移外,還可以用鍵和“+”鍵將光標下移一行或n行(不包括本行在內),但此時光標下移之后將位于該行的第一個字符處。例如:

3j 光標下移3行,且光標所在列的位置不變。

3+或3 光標下移3行,且光標位于該行的行首。

  • k、、- (向上鍵)

執(zhí)行一次向上鍵光標向上移動一個位置(即一行),但光標所在的列不變。同樣在這些命令前面加上數(shù)字n,則光標上移n行。

若希望光標上移之后,光標位于該行的行首,則可以使用命令“- ”。

  • L (移至行首)

L 命令是將光標移到當前行的開頭,即將光標移至當前行的第一個非空白處(非制表符或非空格符)。

  • $(移至行尾)

該命令將光標移到當前行的行尾,停在最后一個字符上。若在$命令之前加上一個數(shù)字n,則光標下移n-1行并到達行尾。

  • [行號] G(移至指定行)

該命令將光標移至指定行號所指定的行的行首。這種移動稱為絕對定位移動。

光標移到了第6行的行首。

若省略行號,則光標移至該文件的最后一行的行首,即無論該文件有多少屏,都跳至最后一行

相關推薦:《Linux視頻教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享