vi的編輯操作及命令
vi中的行號
vi中的許多命令都要用到行號及行數等數值。若編輯的檔案較大時,自己去數是非常不方便的。為此vi提供了給文字加行號的功能。這些行號顯示在螢幕的左邊,而相應行的內容則顯示在行號之後。
使用的命令為:在末行方式下輸入命令:
:set number
需要說明的是,這裡加的行號只是顯示給使用者看的,它們並不是檔案內容的一部分。
在乙個較大的檔案中,使用者可能需要了解游標當前行是哪一行,在檔案中處於什麼位置,可在命令模式下用組合鍵,此時vi會在顯示視窗的最後一行顯示出相應資訊。該命令可以在任何時候使用。
[例7]
#include
main ( )
add( )
~ ~ ~
~ ~
「 example.c」[modified] lines 4 of 10 --40%-- col 11
在末行方式下,我們可以輸入命令nu(單詞number的縮寫)來獲得游標當前行的行號與該行內容。
游標移動操作
全螢幕文字編輯器中,游標的移動操作無疑是最經常使用的操作了。使用者只有熟練地使用移動游標的這些命令,才能迅速準確地到達所期望的位置處進行編輯。
vi中的游標移動既可以在命令模式下,也可以在文字輸入模式下,但操作的方法不盡相同。
在文字輸入模式下,可直接使用鍵盤上的四個方向鍵移動游標。
在命令模式下,有很多移動游標的方法。不但可以使用四個方向鍵來移動游標,還可以用h、j、k、l這四個鍵代替四個方向鍵來移動游標,這樣可以避免由於不同機器上的不同鍵盤定義所帶來的矛盾,而且使用熟練後可以手不離開字母鍵盤位置就能完成所有操作,從而提高工作效率。另外還可以用、、和四個鍵或組合鍵移動游標。且以上這三種鍵在實現功能上是等價的。除此之外,還有一些移動游標的命令。下面對它們的工作方式介紹如下:
、(r)(均稱為右向鍵)
右向鍵的作用是將游標向右移動乙個位置。若在向右鍵前先輸入乙個數字n,那麼游標就向右移動n個位置。例如5l表示游標向右移動5個位置。需要注意的是,游標移動不能超過當前行的末尾。若給定的n超過游標當前位置至行尾的字元個數,如果用右向鍵,游標只能移到行尾;如果用,游標移到下面一行或幾行的適當位置。
h、、?(向左鍵)
執行一次向左鍵,游標向左移動乙個位置。同向右鍵一樣,也可以在向左鍵的前面輸入乙個數字n,那麼游標就向左移動n個位置。需要注意的是,如果用左向鍵,游標左移不能超出該行的開頭;如果用,游標移到上面一行或幾行的適當位置。
j、、?(向下鍵)
執行一次向下鍵游標向下移動乙個位置(即一行),但游標所在的列不變。當這些命令前面加上數字n,則游標下移n行。
vi除了可以用向下鍵將游標下移外,還可以用鍵和「+」鍵將游標下移一行或n行(不包括本行在內),但此時游標下移之後將位於該行的第乙個字元處。例如:
3j游標下移3行,且游標所在列的位置不變。
3+或3游標下移3行,且游標位於該行的行首。
k、、?(向上鍵)
執行一次向上鍵游標向上移動乙個位置(即一行),但游標所在的列不變。同樣在這些命令前面加上數字n,則游標上移n行。
若希望游標上移之後,游標位於該行的行首,則可以使用命令「-」。
l (移至行首)
l命令是將游標移到當前行的開頭,即將游標移至當前行的第乙個非空白處(非製表符或非空格符)。
$(移至行尾)
該命令將游標移到當前行的行尾,停在最後乙個字元上。若在$命令之前加上乙個數字n,則游標下移n-1行並到達行尾。
[行號] g(移至指定行)
該命令將游標移至指定行號所指定的行的行首。這種移動稱為絕對定位移動。
[例8]
#include
main ( )
add( )
~ ~ ~
~ ~
「 example.c」 12lines, 125 characters
鍵入命令:6g後,螢幕顯示如下:
#include
main ( )
add( )
~ ~ ~
~ ~
「 example.c」 12lines, 125 characters
游標移到了第6行的行首。
若省略行號,則游標移至該檔案的最後一行的行首,即無論該檔案有多少屏,都跳至最後一行。
第二十七課vi命令 2023年/6月/26日
在螢幕上移動
vi提供了三個關於游標在全螢幕上移動並且檔案本身不發生滾動的命令。它們分別是h、m和l命令。
1.h命令
該命令將游標移至螢幕首行的行首(即左上角),也就是當前螢幕的第一行,而不是整個檔案的第一行。利用此命令可以快速將游標移至螢幕頂部。若在h命令之 前加上數字n,則將游標移至第n行的行首。
[例9] 螢幕顯示如下內容:
#include
main ( )
add( )
~ ~ ~
~ ~
「 example.c」 [ newfile]
在命令模式下輸入4h命令後,游標移到以for開頭的這一行的字母f上。
值得一提的是,使用命令dh將會刪除從游標當前所在行至所顯示螢幕首行的全部內容。
2.m命令
該命令將游標移至螢幕顯示檔案的中間行的行首。即如果當前螢幕已經充滿,則移動到整個螢幕的中間行;如果並未充滿,則移動到文字的那些行的中間行。利用 此命令可以快速地將游標從螢幕的任意位置移至螢幕顯示檔案的中間行的行首。例如,在上面螢幕顯示的情況下(不論游標在螢幕的何處),在命令模式下,輸 入命令m之後,游標都將移到add這一行的字母a上。
同樣值得一提的是,使用命令dm將會刪除從游標當前所在行至螢幕顯示檔案的中間行的全部內容。
3.l命令
當檔案顯示內容超過一屏時,該命令將游標移至螢幕上的最底行的行首;當檔案顯示內容不足一屏時,該命令將游標移至檔案的最後一行的行首。可見,利用此命令可以快速準確地將游標移至螢幕底部或檔案的最後一行。若在l命令之前加上數字n,則將游標移至從螢幕底部算起第n行的行首。例如,在上面螢幕顯示的情況下(不論游標在螢幕的何處),在命令模式下,輸入命令3l之後,游標都將移到x++這一行的字母x上。
同樣值得一提的是,使用命令dl將會刪除從游標當前行至螢幕底行的全部內容。
按字移動游標
首先介紹一下vi中「字」的概念。在vi中「字」有兩種含義。一種是廣義的字,它可以是兩個空格之間的任何內容。
[例10] 在檔案example.c中的第4行:
命令
該命令將游標向後移至下乙個段的開頭。
螢幕滾動
螢幕命令是以螢幕為單位移動游標的,常用於檔案的滾屏和分頁。需要注意的是,螢幕命令不是游標移動命令,不能作為文字限定符用於刪除命令中。
在命令模式下和文字輸入模式下均可以使用螢幕滾動命令。
1. 滾屏命令
關於滾屏命令有兩個:
? < ctrl+u >將螢幕向前(檔案頭方向)翻滾半屏;
? < ctrl+d >將螢幕向後(檔案尾方向)翻滾半屏。
可以在這兩個命令之前加上乙個數字n,則螢幕向前或向後翻滾n行。並且這個值被系統記住,以後再用和< ctrl+d >命令滾屏時,還滾相應的行數。
2. 分頁命令
關於分頁命令也有兩個:
? < ctrl+f >將螢幕向檔案尾方向翻滾一整屏(即一頁);
? < ctrl+b >將螢幕向檔案首方向翻滾一整屏(即一頁)。
同樣也可以在這兩個命令之前加上乙個數字n,則螢幕向前或向後移動n頁。
3. 狀態命令< ctrl+g>
命令顯示在vi狀態行上的vi狀態資訊,包括正在編輯的檔名、是否修改過、當前行號、檔案的行數以及游標之前的行佔整個檔案的百分比。
4. 螢幕調零命令
vi提供了三個有關螢幕調零的命令。它們的格式分別為:
? [行號] z [行數]《回車》
? [行號] z [行數] .
? [行號] z [行數] _
若省略了行號和行數,這三個命令分別為將游標所在的當前行作為螢幕的首行、中間行和最末行重新顯示;若給出行號,那麼該行號所對應的行就作為當前行顯示在螢幕的首行、中間行和最末行;若給出行數,則它規定了在螢幕上顯示的行數。
[例13]
8z16《回車》:將檔案中的第8行作為螢幕顯示的首行,並 一共顯示16行。
15z .:將檔案中的第15行作為螢幕顯示的中間行,顯示行 數為整屏。
15z 5_:將檔案中的第15行作為螢幕顯示的最末行,顯示 行數為5行。
文字插入操作
在命令模式下使用者輸入的任何字元都被vi當作命令加以解釋執行,如果使用者要將輸入的字元當作是文字內容時,則首先應將vi的工作模式從命令模式切換到文字輸入模式。切換的方式是使用下面的命令。
插入(insert)命令
vi提供了兩個插入命令:i和i。
1.i命令
插入文字從游標所在位置前開始,並且插入過程中可以使用鍵刪除錯誤的輸入。此時vi處於插入狀態,螢幕最下行顯示「--insert--」(插入)字 樣。
welcome to viworld!come on!
~ ~
游標位於第乙個「!」上,需在其前面插入:
this is anexample!
使用i命令,並輸入相應文字後,螢幕顯示如下:
welcome to vi worldthis is an example!!come on!
~ ~
由此例可以看到,游標本來是在第乙個「!」處,但是由於是從游標所在位置前開始插入,所以這個「!」就被擠到了新插入的文字之後。
2.i命令
該命令是將游標移到當前行的行首,然後在其前插入文字。
Vim編輯器操作命令
1.三種模式 命令 預設 尾行 編輯模式 2.尾行模式 q 退出vi編輯器 w 儲存修改 wq 儲存並退出編輯 q 強制退出,不儲存修改 wq 強制儲存退出 set number set nu 給編輯器設定序號 set nonumber set nonu 取消序號顯示 內容 搜尋指定內容,小寫 n ...
vim 及文字操作命令練習
1.統計出 etc passwd檔案中其預設shell為非 sbin nologin的使用者個數,並將其使用者都顯示出來 使用者個數 getent passwd grep v sbin nologin wc l 使用者 getent passwd grep v sbin nologin cut d ...
vim 基本編輯操作
一 游標跳轉到指定行 1.在命令模式下,跳轉到指定行 n n為行號 2.命令列加引數 vim n filename 3.命令列加引數 vim filename 游標移至檔案底部 4.檢視模式 shift h 游標移至檔案頭部 header 5.檢視模式 shift m 游標移至檔案中間 middle...