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

本章將對以前學習的編輯命令如" c "。" d "。「 y 」等命令進行總結,並學習一些新的知識:其它進入vi的方法,利用緩衝區來存儲拖曳或刪除的文本以及怎樣在文件裏作標記。編輯器

不少其它命令的組合:post

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

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

cH     dH   yH     當前屏幕頂端命令行

cM  dM   yM        當前屏幕中間編譯器

cL      dL      yL           當前屏幕底端it

c+    d+     y+          下一行編譯

c5|   d5|    y5|          本行第五列class

c2)  d2)   y2)       往下第二個句子(文件結束方向)file

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,``,''。

相關文章
相關標籤/搜索