二. 開啟檔案, 關閉檔案
vi 檔名 | 開啟檔案 |
: | 進入命令列的方法 |
q | 離開 (命令列) |
wq | 存檔然後離開 (命令列) |
q! | 放棄存檔, 強迫離開 (命令列) |
ZZ | 存檔然後離開 (不在命令列使用) |
:e 檔名 | 在 Vi 中開啟檔案 |
三. Vi 的操作模式:
Vi 有二種主要的操作模式, ESC 鍵為單向的切換鍵(由本文輸入模式回到編輯命令模式)
- 編輯命令模式 : 要 vi 做一些特定目的的動作. 如插入,附加,取代,修改,刪除,移動游標,搜尋等等. 若是存檔等動作, 則需在命令列中下達, 欲切換至命令列, 需先按 :
- 本文輸入模式 : 在此模式下, 任何字元, 皆被視為輸入的資料.
一開始進入 Vi 之後, 即進入編輯命令模式, 你輸入的每一個字元, 皆被預視為一個指令. 有效的指令會被接受, 若是無效的指令, 會產生 beep beep 聲, 以示警告.
若想做輸入的動作, 必須切換為本文輸入模式, 切換的方法, 只要單按一個特殊意義的字元鍵即可, 如下所示:
按 i 或 I | 插入狀態 |
按 a 或 A | 附加狀態 |
按 R | 取代狀態 R 會進行連續字元取代 |
按 s 或 S | 刪除一個字元;刪除游標所在那一列 |
按 cw, c2b, c$, c0 | 修改狀態 |
按 o 或 O | 新增空白列 |
你不必一下子全用上, 只要會 i, a, o 這個三個模式即可勝任愉快, 因為大部份時候, 你也只用這三個.
OK, 現在你可以試著在本文輸入模式下, 鍵入一些資料看看. 然後, 按 ESC 切換回編輯命令模式.
四. 移動游標:
Vi 為了適用於各種不同的終端機模式, 因此以字鍵的方式來操控游標.
k j h l | 上 下 左 右 |
Enter | 換列 |
w b | 往前一個 word ; 倒退一個 word |
0 $ | 至該列開頭 ; 至該列尾端 |
+ - | 往下一列; 往上一列 |
請記住一個要訣:
在 Vi 中, 大部份的命令都可以在其前面加上數字, 該數字表示重覆該命令的次數.
例如: 8l 表示往右移動 8 個字元, 3w 表示往前移動三個 word, 2b 表示倒退 2 個 word
註: word 的定義, 連續英數字元形成一個 word, 而其它特殊符號則每一個字元便是一個 word(除非連續特殊字元), 例如: --classify 中含有 2 個 word, 一個是 -- ; 一個是 classify
而 -x, 則有 3 個 word.
在特殊的終端機模式下, 方向鍵也是可以使用的. 如 linux 或 vt100.
其實大部份時候, 你仍可以保有使用方向鍵的習慣. 但大概只有 local 下才能使用 PgUp , PgDn, End, Home 等鍵喔!
不過, 若你所使用的終端機模式不支援方向鍵, 那麼上表中的按鍵, 就相當重要了.
五. 捲頁:
^f | 往下一頁 (forward) |
^b | 往上一頁 (before) |
^d | 往下半個螢幕(down) |
^u | 往上半個螢幕(up) |
六. 跳列:
你可以指定跳至某一列位置. 跳動之前, 先查看一下目前所在列數是多少.
^g 可以顯示目前的位置, 如: "ls.txt" line 53 of 264 --20%-- col 16-23
上面表示, 目前是在第 53 列, 全部共有 264 列, 佔該檔百分之20的位置, 目前的游標, 實際是在第23行, 但只算成第16行, 因為中間有使用 tab 鍵.
80G 或 80gg | 跳至第 80 列 |
G | 跳至檔尾 |
gg | 跳至檔頭 |
七. 刪除: (但不會進入本文輸入模式)
以上皆針對游標目前的所在位置產生作用.
還有 dw, db, de, d0, d$ 等命令, 但你不須一下子全用上. 上表中這三個夠用了.
記住一個要訣: Vi 的命令繁多, 但你真正用上手的不必多, 而且這些也就夠了.
八. undo (回復動作):
若你對上一個動作反悔了, 可以使用 undo 的功能:
u | 取消上一個動作所產生的改變 |
U | 取消游標所在那一列所有的改變 |
:e! | 取消所有的改變, 回復至未修改之前 |
九. 關鍵字搜尋/取代:
/ 關鍵字 | 往下搜尋關鍵字 |
? 關鍵字 | 往上搜尋關鍵字 |
n | 重覆搜尋命令(不管往下或往上) |
N | 和 n 相反方向 |
cw字串 | 以該字串取代原有的關鍵字 |
n. | 繼續取代該字串的動作 |
%s/目標/取代/g | 將目標字串全換成取代字串 |
十. 選取、複製與搬移:
Y 或 yy | 選取游標所在那一列 |
5Y 或 5yy | 選取游標列所在共5列 (5 只是一個例子, 可改用其它數字) |
p | 將選取的內容, 複製至游標之後 |
P | 將選取的內容, 複製至游標之前 |
cw, x, dd 等刪除命令 | 會將被刪除的內容放入 buffer 中, 配合 p 或 P 即可做出搬移的效果. |
十一. 暫時跳出 Vi:
在編輯過程中, 你可能想要執行其它命令, 方法如下:
:! 命令 | 執行該令命 |
:sh | 暫時跳出 Vi, 欲回 Vi 按 ^d 或 exit |