.
Vim 的基本模式 (basic mode) 有六種:
基本上除了 Ex 模式, 其他的模式, 在 vim 使用過程中, 都會用的到.
進入插入模式的指令
i - 在游標所在字元前開始輸入文字 (insert)
a - 在游標所在字元後開始輸入文字 (append)
o - 在游標所在行下開一新行來輸入文字 (open)
I - 在行首開始輸入文字. 這邊指的是第一個非空白字的地方.
A - 從行尾開始輸入文字.
O - 從游標所在行上開一新行來輸入文字.
刪除指令
dd - 刪除一整行 (delete line)
d$ - 刪至行尾 (含游標所在字元)
d^ - 刪至行首 (不含游標所在字元)
d0 - 用途跟 d^ 一樣
取代及還原
u - 就是重要的 undo
Ctrl+r - 重要的 redo
複製與貼上
yy - 複製游標所在行整行. (yank)
p - 貼在游標之後 (put)
P - 貼在游標之前
"ayy - 將本行文字複製到 a 緩衝區 (vim 稱為 registers). a 可以換成 [a-zA-Z] 任一字母, 小寫的原先的內容會被清掉, 如果是大寫則有 append 的作用.
"ap - 從 a 緩衝區的內容貼上
:reg 可以用來列出所有的 registers 的代號及內容.
好用的指令
. - 句號, 代表重複前次的編輯動作
shift+insert - 貼上在其他地方複製的內容
================
TODO: http://edt1023.sayya.org/vim/node6.html
================
全選 --> ggvG
================
vim 取代
http://greenisland.csie.nctu.edu.tw/wp/2005/09/02/302/
---
一般對於整份文件都要作置換的話,我都會下像這樣的指令:
:%s/, /,/g
---
所以同理,如果你要把那些因為 un*ix 和 DOS 之間格式不合所造成的^M消掉的話,也只需要下成這樣就可以了
:%s/^M//g
---
當然你很確定行數,你也可以這樣下:
:1,300s/vim/VIM/g
---
或者是如果你很確定要從現在游標所在行之後的所有行都置換,可以下成:
:.,$s/vim/VIM/g
---
冒號一開頭的那一小點「 . 」就代表游標現在所在行,「$」則用來表示最後一行。
或許聰明的你已經想到怎麼樣可以從現在所在行之前的都要置換了,
:.,1s/vim/VIM/g
---
不過當你這樣打的時候, vim 會跳出來一個訊息:
Backwards range given, OK to swap (y/n)?
---
取代掉所有的 html tag
:%s/<[^<>]*>//g
---
取代 () 要用 \(\), 然後取代的群組要用 \1 \2 http://greenisland.csie.nctu.edu.tw/wp/2005/09/02/302/
:%s/\([^0-9]\{1,}\)\([0-9]\{1,}\)/\2 \1/g
// code block
@TODO: