Line mode

Line mode,顧名思義,就是列模式;也就是以列為單位來處理文章。 早期的編輯器都是以列為單位來列印、修改文章的, 而 vi 則是由一個名為 ed 的列編輯器發展出來的,所以也有對列的編輯功能。

要進入 line mode,只要在 command mode 下按【 : 】, 螢幕左下角會出現 :。你的輸入都會跟在 : 的後面, 當你按下【 Enter 】時 vi 才會執行你下的指令,執行以後會再回到 command mode。 按【 Esc 】則會放棄你的輸入,回到 command mode。 接下來的說明皆假設是在 line mode 下,一個指令的後面都要加上一個【 Enter 】。

當你輸入一個正整數 n 時,游標會跳到第 n 列。 當你按 .= 時,vi 會顯示目前在第幾列。

d 刪除列, 當你要刪除第二十列時,可以下指令 20d

m 移動列, 如果你要把第三列移動到第十列的後面,下指令 3m10

cot 複製列。 指令 2t3 會把第二列複製放到第三列下面。

這樣一列一列的下指令實在是太慢了, 我們也可以指定一個連續的範圍,例如要刪除 1~10 列, 我們可以下指令 1,10d,這樣 vi 就會刪除 1~10 列。 指令中的 1,10 表示從第一列到第十列, 放到最前面表示要 vi 對這十列字作動作。

再例如要移動 3~10 列到第十二列的後面,就要下指令 3,10m12

在 line mode 中,每一個指令都要告訴 vi 你要對那一列作動作, 如果不指定,vi 就會對你目前游標所在的列作動作。 你要處理的列數放在最前面,後面才跟著指令。 列數的表示法有幾個比較重要而實用的:

在 line mode 下也有搜尋指令,當你要搜尋一個字串, 你可以下指令 /string, vi 會自動尋找游標所在的列以後的第一個含有 string 的列, 而游標所在的列則會是最後一個被搜尋的﹝因為會 wrap﹞。

/string/ 表示含有 string 的列的列數, 所以指令 /HTML/= 會印出游標下面第一個含有 HTML 的列的列數。 如果你下指令 /HTML/,/BODY/d, 如果游標下面第一個含有 HTML 的是第 m 列, 第一個含有 BODY 的第 n 列, 則上述指令等於 m,nd

讀者看到這裡,大概會認為 line mode 並沒有太大的用處, 但是至少要把指定列數的方法記下來, 因為下一節要說的全域代換肯定是 command mode 無法辦到的。

[ 前一節 ]‧[ 後一節 ]‧[ 回目錄 ]


製作人、
修改記錄
李易霖 (02/8/18) ---