少年幃禿的煩惱

Navigation

最新協作平台活動

67天前是
某個日子

Home‎ > ‎Others‎ > ‎

Vim



基本概念

Vim 的基本模式 (basic mode) 有六種:
  • 常態模式 (Normal mode)
    一進入 vim 就是處於這個模式, 只能下指令, 不能編輯文字.
  • 插入模式 (Insert mode)
    i (insert) / a (append) / o (open) 就會進入到插入模式, 此時才可以編輯文字, 按 Esc 又回到常態模式. 此時狀態列會有 - INSERT - 字樣.
  • 命令列模式 (Command-lmode)
    按 冒號 ( : ) 就會進入命令列模式, 左下角會有一個冒號出現. 也是按 Esc 回到常態模式. 搜尋時的 /? 也是屬於命令列模式.
  • 反白模式 (Visual mode)
    就是把需要處理的文字反白起來, 狀態列會有 - VISUAL - 或 - VISUAL LINE - 或 - VISUAL BLOCK - 字樣.
  • 選擇模式 (Select mode)
    不清楚跟反白模式有什麼差異. Orz
  • Ex 模式 (Ex mode)
    和命令列模式是一樣的, 差別在於下完指令之後, 還是留在 Ex 模式. 按 gQ 可以進入 Ex 模式, 輸入 visual 可以返回常態模式.

基本上除了 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  
---



// code block
@TODO: