學習vi和vim編輯器(5):越過基礎的藩籬,vivim

來源:互聯網
上載者:User

學習vi和vim編輯器(5):越過基礎的藩籬,vivim

本章將對之前學習的編輯命令如" c "," d ",“ y ”等命令進行總結,並學習一些新的知識:其他進入vi的方法,利用緩衝區來儲存拖曳或刪除的文本以及如何在檔案中做標記。

更多命令的組合:

之前已經不止一次講過,對於" c ", " d "," y "等命令具有"command""TextObject"的使用形式,即這些編輯命令可以與游標移動命令進行組合使用,通過游標移動命令來表示編輯命令將會影響的文本範圍。現在將這些組合命令進行簡單的總結,也是對之前學習知識的回顧:

更改 刪除 複製 從游標位置到......

cH     dH   yH     當前螢幕頂端

cM  dM   yM        當前螢幕中間

cL      dL      yL           當前螢幕底端

c+    d+     y+          下一行

c5|   d5|    y5|          本行第五列

c2)  d2)   y2)       往下第二個句子(檔案結束方向)

c{     d{       y{           往前一個段落(檔案開始方向)

c/pattern  d/pattern  y/pattern  往下pattern第一次出現的地方

cn     dn    yn        下一個模式

cG    dG    yG        到檔案結尾

c9G d9G  y9G  到檔案第九行

開啟vi的選項:

之前已經講過 "vi filename"這種簡單的方法來使用vi編輯器開啟檔案,還有很多好用的vi命令開啟選項。前進到特定位置:可以在命令列中指定開啟檔案後游標第一次移動的方式,例如根據行號或搜尋結果移動。

vi +n file:在第n行開啟檔案;

vi + file:在最後一行開啟file;

vi +/pattern file:在第一個出現pattern的地方開啟file;

這些命令中可以使用" + ",也可以使用" - ",一般來說,兩種方法都能接受,但實際測試時,發現用" - "會出現錯誤,如所示,是不是書上又講錯了?暫時先記錄下來吧。


這些vi編輯器的開啟選項對程式員來說非常有用。例如當編譯一個源檔案時出錯時,編譯器都會把編譯出錯的相關行號資訊顯示出來。因此我們可以直接在開啟檔案時就定位當相應的行上,如所示:


而且,當我們在編輯檔案的時候,如果正好編輯到一半而不得不暫時離開時,可以在當前位置用某個模式標記起來,如"HERE",當我們回來時,只需要"vi  +/HERE  file"即可。

唯讀模式:可以以唯讀模式開啟一個檔案,這樣就不必擔心不經意間修改檔案了:

vi -R filename;

view filename;

view命令也像vi命令,其實view只是vi的連結:

如果在唯讀模式中想要修改檔案並儲存修改,則需要使用" :w! "。驚嘆號就代表覆蓋掉唯讀模式。

恢複緩衝區:當編輯檔案時,如果系統發生了錯誤,此時自從上一次存檔以來所做的檔案改動都會消失,可以使用-r選項恢複系統死機時的編輯緩衝區。

vi -r 或者 ex -r:得到系統儲存下來的所有檔案清單;

vi -r filename:可以恢複檔案名稱對應的編輯緩衝區;

:pre:強制系統即使在沒有死機時也儲存緩衝區;

善加利用緩衝區:

之前已經提過,對於最後一次刪除或拖曳的內容(刪除和拖曳操作共用相同的緩衝區)會被儲存到緩衝區中,可以使用放置命令將這些文本放回到檔案中。

同時,vi編輯器會將最後九次刪除操作儲存到有編號的緩衝區中,可以恢複這些緩衝區中的任何一個。但是只有以行為單位的刪除本文才會被儲存到編號緩衝區中,對於刪除一行中的一部分,或者單詞的一部分等,都不會被儲存到編號緩衝區中,此時只能在刪除操作發生之後立即用p命令進行恢複。

在這些編號緩衝區中,最後一次刪除的內容儲存在緩衝區1,倒數第二次刪除的內容儲存到緩衝區2,依此類推。如果要恢複某個編號緩衝區內容,首先輸入 "(雙引號),再指定緩衝區編號,再使用放置命令,例如 "1p。

如果不確定哪個緩衝區中存放了要恢複的內容,不需要不停的輸入 "np進行嘗試。相反,因為在p命令之後使用重複命令" . "時,會自動增加緩衝區的編號,再結合撤銷命令(u),即可按編號逐步查看每個緩衝區的內容,從而進行正確的恢複,命令形式如下:"1pu.u.u.u. 依此類推。

同時,vi可以將拖曳或刪除的文本放在以字母為標號的命名緩衝區中,這些文本可以儲存到26個緩衝區(a-z)中,並且可以在編輯會話的任何時候使用放置命令來恢複這些文本。如果某個命名緩衝區中已經存放了文本,此時繼續向該緩衝區中放置文本,則新的文本會覆蓋該緩衝區中已經存在的文本,即之前的文本會消失。

要將文本儲存到命名緩衝區中,需要在拖曳或刪除命令之前加上雙引號(")以及緩衝區的名字(a-z),例如:"add即將刪除的該行內容儲存到命名為a的緩衝區中。恢複時,只需要輸入雙引號,加上緩衝區的名字(a-z),以及放置命令p,即可恢複某個命名緩衝區的內容,如"ap。當使用大寫字母指定緩衝區時,拖曳或刪除的文本會附加到相應的緩衝區中。

對一處做標記:

可以在文本的某處做一個看不見的書籤,然後在別處編輯時,可以根據相關的命令回到相應的書籤位置。需要注意的是,標記只在當前編輯會話中有效,並不會儲存在檔案中。

mx:將當前位置標記為x(x可以是任何字元);

'x:(單引號)將游標移動到標記x所在行的第一個字元;

`x:(反引號)將游標移動到以x標記的字元處;

``:(兩個反引號)在移動位置之後,回到上一個標記;

'':(兩個單引號)回到上一個標記所在行的開頭;


本章vi編輯器命令總結:

vi +n,vi +,vi +/pattern,vi -R,view, vi -r,:pre,"1p,"ayy,"ap,mx,'x,`x,``,''。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.