Vim在Linux上是非常重要的一個編輯器,後序要學習的Shell Script、系統程式開發、甚至是網站內容編輯...等。都可以此老牌編輯器來完成,故需整理一文章來紀錄之。
搭配mc這個檔案瀏灠器更增方便,一方面可以快速地在資料夾間瀏灠檔案內容,一方面也可快速地做檔案編輯、拷貝、刪除等動作十分方便。
(零)各類總整:
切換:iao/v/esc/shift+:
移動:kjhl/wb/()/{}/[]/^$/HML/gg GG + n(次數)
shift+上下左右鍵。
刪除:dd/dw/d$/d0/xX/dnj/dnk(n=次數)
回覆:uU/ctrl+r
複製與貼上:yy/yw/y$/y0/pP/ynj/ynk(n=次數)
搜尋:nN/shift+8(待尋字串前按此即可)
替換:(%s)(3, 6s)/old/new只換第一個,換3~6。
分身:sp/vsp/close/ctrl+w(切換畫面)
設定:/etc/vim/vimrc中可設定set nu...等。
ctags:ctags -R生成,ctrl+[ ]尋找,ctrl+t返回
vim -t [tag名]用來開檔。
在.vimrc中加入set tags=tags
set tags+=./tags
(一)使用幫助:
:help 進入幫助。
ctrl+] 進入說明單元內容。
ctrl+t(o) 離開說明單元內容。
: 命令列下TAB補全字元功能也存在。
(二)基本切換:
i 游標字元前輸入模式。
a 游標字元後輸入模式。
o 游標字元上一行輸入模式。
I 游標字首前輸入模式。
A 游標字首後輸入模式。
O 游標字元下一行輸入模式。
J 將下一行連接至本行輸入模式。
ESC 切到預設模式狀態。
shift+: 切到指令輸入狀態。
(三)多檔案間編輯:
ctrl+z 將目前編輯工作程式推到背景執行。
fg N(數字) 將背景程式推到前景繼續編輯。
jobs 指令列出所有被推到背景的編輯程式。
vim +n (filename) 開檔後游標落在n行。
vim +-x (filename) 檔案加密。
vim +-r (filename) 檔案回復。
vim +/字串 (filename) 開檔後游標落在字串處。
:e (#) (filename) 指令列開檔(#編前一個)。
:n(N) 編下(上)一個檔案。
:files(buffers or ls) 列出buffer中所有檔案。
:bn(l) 列出下(上)一個檔案。
:b (filename or n) 則移至該檔案。
:bd 移除buffer內檔案。
:f 顯示目前編輯檔名。
:f (filename) 改變目前編輯檔名。
:r (n) (filename) 在行數處插入一個檔案內容。
:w (filename) 另存檔名後離開。
(四)檔案內移動:
h 前移。
j 下移。
k 上移。
l 後移。
ctrl+f(b) 翻上(下)頁。
shift+^($) 移到行首(尾)。
gg(G) 移到檔案首(尾)。
w(W) 移到英文字首。
e(E) 移到英文字尾。
b(B) 移到前一英文字首。
H 移到螢幕頂。
M 移到螢幕中。
L 移到螢幕底。
( 移到下一句首。
) 移到上一句首。
{ 移到下一段首。
} 移到上一段首。
:set nu/nonu 顯示/不顯示行號。
:行號 移動到該行。
(五) 基本編輯指令:
x(X) 刪除游標後(前)字元。
dd 刪除一整行。
dw 刪除一個英文字。
dG 刪到游標至檔尾。
dgg 刪到游標至檔頭。
D(d$) 刪到游標至行尾(含游標所在字元)。
d0 刪到游標至行首。
r 取代一個字元。
R 取代字元,直到按ESC。
cc 取代整行字元。
cw 取代一個英文字。
~ 游標處字元大小寫互換。
C 游標處取代至行尾。
c0 游標處取代至行首。
s 游標處插入一字元,並刪掉原來字元。
u 回覆原來動作,就是undo。
U 游標未離本行前,回覆本行所有動作。
ctrl+r 此動作就是redo。
>> 整行向右移一個TAB。
<< 整行向左移一個TAB。
:ce 本文置中。
:ri 本文靠右。
:le 本文靠左。
gqip 整段重排。
gqq 本行重排。
數字鍵加上上述的字元,可以達到加乘的作用。
(六)複製指令:
yy 複製一整行。
y0(^) 複製至行首。
y$ 複製至行尾。
yw 複製一個字。
yG 複製至檔尾。
p(P) 內容貼至游標後(前)。
"ayy 將本行內容複製到緩衝區a(共有a~z 26個緩衝區)。
"ap 將a緩衝區內容貼上(:reg 0~25 可看複製內容)。
. 重複前一次指令。
ctrl+滑鼠右鍵 可以區塊複製。
(七)搜尋與替換指令:
:/(?)[待查字串] 即可向下(上)搜尋字串。
n(N) 繼續往下(上)查字串。
:[range]s/pattern/string[c、e、g、i] 取代指令。
[range] 1,7 表示1~7行。(%表目前文章、#表前篇文章)
pattern 待換字串(可用regexp)。
string 取代字串。
c 每次詢問。
e 不顯示錯誤。
g 不問,整行替換。
i 不分大小寫。
:%s/Edwin/Edward/g 將整篇文章的Edwin換成Edward。
:3, 6s/old/new/g 將3~6行的old換成new。
(八)有用連結:
Trace Kernel設定。
沒有留言:
張貼留言