vi 經常會用到的文書處理軟體
===========================================
一般模式: 游標跟頁數的移動
------------------------------------------------------------
h 游標向左移動一個字元
------------------------------------------------------------
j 游標向下移動一個字元
------------------------------------------------------------
k 游標向上移動一個字元
------------------------------------------------------------
l 游標像右移動一個字元
------------------------------------------------------------
[Ctrl] + [f] 螢幕向上移動一頁
------------------------------------------------------------
[Ctrl] + [b] 螢幕向下移動一頁
------------------------------------------------------------
[Ctrl] + [d] 螢幕向上移動半頁
------------------------------------------------------------
[Ctrl] + [u] 螢幕向下移動半頁
------------------------------------------------------------
[Ctrl] + [e] 螢幕往下捲一行
------------------------------------------------------------
[Ctrl] + [y] 螢幕往上捲一行
------------------------------------------------------------
+ 游標移動到非空白字元的下一列
------------------------------------------------------------
- 游標移動到非空白字元的上一列
------------------------------------------------------------
n <space> 按下數字後再按空白鍵,游標向右移動n個字元
------------------------------------------------------------
n <Enter> 按下數字後再按Enter鍵,游標向下移動n行
------------------------------------------------------------
nG 移動游標到第n行,如30G會移動到該檔案的第30行
------------------------------------------------------------
0 (數字的0) 移動到本行的最前面
------------------------------------------------------------
$ 移動到本行的最後面
------------------------------------------------------------
H 移動到銀幕的最上方的一行
------------------------------------------------------------
M 移動到銀幕中央的那一行
------------------------------------------------------------
L 移動到銀幕的最下方那一行
------------------------------------------------------------
G 移動到整個檔案的最後面一行
------------------------------------------------------------
===========================================
一般模式: 搜尋跟取代的部份
------------------------------------------------------------
/word 向游標之後尋找一個字串名稱為 word 的字串
------------------------------------------------------------
?word 向游標之前尋找一個字串名稱為 word 的字串
------------------------------------------------------------
s(substitute)指令可以搜尋某行跟列的範圍,這個搜尋只會找該行第一個符合條件的字串並加以處理如果
該行內有數個相同的條件滿足,並想要取代所有的字串,需要加上g的參數
------------------------------------------------------------
g(global) 指令可以搜尋所有編輯檔案內的資料
------------------------------------------------------------
% 可以代表所有編輯的檔案的所有區域的內容
------------------------------------------------------------
:n1,n2s/word1/word2/g 在第 n1 與 n2 行之間尋找 word1 這個字串,並將word1串取代為 word2
------------------------------------------------------------
:1,$s/word1/word2/g 從第一行道最後一行之間尋找 word1 這個字串,並將word1串取代為 word2
------------------------------------------------------------
:1,$s/word1/word2/gc 從第一行道最後一行之間尋找 word1 這個字串,並將word1串取代為 word2
並且在取代前詢問(conform)是否需要取代
------------------------------------------------------------
n 往下繼續尋找相同的字串
------------------------------------------------------------
N 往上繼續尋找相同的字串
------------------------------------------------------------
===========================================
一般模式: 刪除
------------------------------------------------------------
x , X x 為向後刪除一個字元, X 為向前刪除一個字元
------------------------------------------------------------
nx 為向後刪除n個字元
------------------------------------------------------------
dd 刪除一整列
------------------------------------------------------------
ndd 刪除游標以下的n列
------------------------------------------------------------
d1G 刪除游標所在到第一行的所有資料
------------------------------------------------------------
dG 刪除游標所在到最後一行的所有資料
------------------------------------------------------------
c 重複刪除多個資料,例如:向下刪除10行 [ 10cj]
------------------------------------------------------------
%d 刪除整個目前編輯的資料
------------------------------------------------------------
===========================================
一般模式: 複製
------------------------------------------------------------
yy 複製游標所在的那一行
------------------------------------------------------------
nyy 複製游標所在的向下的n列
------------------------------------------------------------
y1G 複製游標所在列到第一列的所有資料
------------------------------------------------------------
yG 複製游標所在列到最後一列的所有資料
===========================================
一般模式: 貼上
------------------------------------------------------------
p 將複製的資料貼在游標的下一行(小寫)
------------------------------------------------------------
P 將複製的資料貼在游標的上一行(大寫)
------------------------------------------------------------
===========================================
一般模式: 復原
------------------------------------------------------------
u 復原前一個動作
------------------------------------------------------------
U 復原游標該行的所有的改變
------------------------------------------------------------
===========================================
進入編輯模式
------------------------------------------------------------
i [insert]插入 ,在游標所在的位置向前插入字元
------------------------------------------------------------
I 插入(INSTER) , 從在游標所在的位置那一行的第一個字元開始插入
------------------------------------------------------------
a [append]插入, 在游標所在的位置向後插入字元
------------------------------------------------------------
A 插入, 從在游標所在的位置那一行的最後一個字元開始插入
------------------------------------------------------------
o [open]在游標所在位置想向下插入一行
------------------------------------------------------------
O 在游標所在位置向上插入一行
------------------------------------------------------------
r 只會取代游標所在的那一個字元
------------------------------------------------------------
R 會從游標目前所在的位置一直往下取代下去,一直到按下Esc為止
------------------------------------------------------------
Esc 退出編輯模式,回到一般模式中
------------------------------------------------------------
s 刪除游標所在之字元,並進入輸入模式
------------------------------------------------------------
S 刪除游標所在之整行資料,並在那一行進入輸入模
------------------------------------------------------------
===========================================
指令列命令模式
------------------------------------------------------------
:w 將編輯的資料寫入硬碟中
------------------------------------------------------------
:w! 若檔案屬性維(唯讀)時候強制寫入時候可以用
------------------------------------------------------------
:q 離開vi
------------------------------------------------------------
:q! 離開但是不存檔,有修改過不想存當離開的時候使用
------------------------------------------------------------
:wq 存檔後離開vi
------------------------------------------------------------
:wq! 強制存檔後離開vi
------------------------------------------------------------
:e! 將檔案還原到最原始的狀態
------------------------------------------------------------
ZZ 檔案如果沒有更改,就不存檔離開,如擃有更動過,就存檔後離開
------------------------------------------------------------
:w [filename] 將編輯中的檔案 另存成一個新的檔案
------------------------------------------------------------
:r [filename] 將讀入的檔案 ,插入在目前的游標所在行的後面
------------------------------------------------------------
:set nu or :set number 顯示出行號
------------------------------------------------------------
:set nonu or :set nonumber 取消行號的顯示
------------------------------------------------------------
:! command 暫時離開vi到命令模式下執行 command的顯示結果
------------------------------------------------------------
h向左移一個字元
------------------------------------------------------------
j 向上移一個字元
------------------------------------------------------------
k 向下移一個字元
------------------------------------------------------------
l 向右移一個字元
------------------------------------------------------------
0 移至該行之首
------------------------------------------------------------
$ 移至該行之末
------------------------------------------------------------
^ 移至該行的第一個字元處
------------------------------------------------------------
H 移至視窗的第一列
------------------------------------------------------------
M 移至視窗的中間那列
------------------------------------------------------------
L 移至視窗的最後一列
------------------------------------------------------------
G 移至該檔案的最後一列
------------------------------------------------------------
+ 移至下一列的第一個字元處
------------------------------------------------------------
- 移至上一列的第一個字元處
------------------------------------------------------------
( 移至該行的句首
------------------------------------------------------------
) 移至該行的句末
------------------------------------------------------------
{ 移至該段落的句首
------------------------------------------------------------
} 移至該段落的巨末
------------------------------------------------------------
nG 游標移到該行的第 n列
------------------------------------------------------------
n+ 移到游標所在的地方之後的第n列
------------------------------------------------------------
n- 移到游標所在的地方之前的第 n 列
------------------------------------------------------------
[Ctril] + [g] 顯示該行的行號n% ,n代表第幾行,檔案名稱還有總共有幾行等等資訊
------------------------------------------------------------
P.S. 句子(sentence) 是以 ! . ? 束的一串字
------------------------------------------------------------
P.S. 段落(Paragraph) 是以 空白行隔開的文字
------------------------------------------------------------
===========================================
恢復編輯時被中斷的檔案
------------------------------------------------------------
#vi –r filename
------------------------------------------------------------
===========================================
恢復編輯時被中斷的檔案
------------------------------------------------------------
#vi file1 file2 ……同時開啟多個檔案
第一個編輯完成後可以用:w寫入緩衝區的資料
:n 載入下一個檔案
------------------------------------------------------------
===========================================
執行一些指令
------------------------------------------------------------
:!ls 執行 ls這個指令,可以看到ls以後的結果,最後按ENTER可以回vi
------------------------------------------------------------
:sh 可以直接跳到 shell 模式 , exit 可以回編輯模式
------------------------------------------------------------
===========================================
資料連接的用法跟指令
J 將游標所在的下一行,接在那一行的最後面(大寫的J)