由於VIM網路上有相當多的資源,當然直接去鳥哥找是最快,但是這裡紀錄幾個我最常使用的功能,日後會持續的增加:
- 複製與貼上相關:
x, X 在一行字當中,x 為向後刪除一個字元 (相當於 [del] 按鍵), X 為向前刪除一個字元(相當於 [backspace] 亦即是倒退鍵) (常用) dd 刪除游標所在的那一整列(常用) ndd n 為數字。刪除游標所在的向下 n 列,例如 20dd 則是刪除 20 列 (常用) yy 複製游標所在的那一行(常用) nyy n 為數字。複製游標所在的向下 n 列,例如 20yy 則是複製 20 列(常用) p, P p 為將已複製的資料在游標下一行貼上,P 則為貼在游標上一行! 舉例來說,我目前游標在第 20 行,且已經複製了 10 行資料。則按下 p 後, 那 10 行資料會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用) u 復原前一個動作。(常用) [Ctrl]+r 重做上一個動作。(常用) 這個 u 與 [Ctrl]+r 是很常用的指令!一個是復原,另一個則是重做一次~ 利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦! . 不要懷疑!這就是小數點!意思是重複前一個動作的意思。 如果你想要重複刪除、重複貼上等等動作,按下小數點『.』就好了! (常用)
- 區塊選擇應用:
v 字元選擇,會將游標經過的地方反白選擇! V 行選擇,會將游標經過的行反白選擇! [Ctrl]+v 區塊選擇,可以用長方形的方式選擇資料 y 將反白的地方複製起來 d 將反白的地方刪除掉
- 搜尋相關:
- / = 搜尋
- n = 移往下一個搜尋結果
- N = 移往上一個搜尋結果
- 游標移動相關:
- gg = 移到整份文件的最上方
- G = 移到整份文件的最下方
- H = 移到目前螢幕的最上方
- L = 移到目前螢幕的最下方
- 10Enter = 游標往下移動10行,前面的數字表示行數
- :10Enter = 游標直接移動到第10行
- {、} = 把游標移動到上一個、下一個段落
- Ctrlwj = 把游標往下面的分割視窗移動
- Ctrlwk = 把游標往上面的分割視窗移動
- Ctrlwh = 把游標往左邊的分割視窗移動
- Ctrlww = 在各個分割視窗間切換
- 書籤功能:
mx : x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
`x 回到書籤原設定位置。
- ` 是 backward quote,就是 Tab 鍵上面那一個。
'x 回到書籤設定行行首。
- ' 是 forward quote,是 Enter 鍵隔壁那一個。
進階應用:
數目字的用法比較特殊,'0 是回到前一次編輯檔案中離開前的最後位置,'1 則是回到前二次編輯檔案的最後位置,依此類推。您不必使用 m 來標示,vim 會自動記憶。很玄吧!其實這是 viminfo 的功能,您要認真追究的話,請 :h viminfo-file-marks。viminfo 關掉,就沒這個功能了!
- 小寫字母 只作用於單一檔案內。
- 大寫字母 可作用於編輯中之各檔案間。
- 數目字 可作用於前次編輯的十個檔案。
- 所謂前次指的是前次啟動的 vim。
- :marks 得知目前所有書籤的列表
先記得替換的固定格式
:[range]s/pattern/string/[c,e,g,i]
range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。 pattern 就是要被替換掉的字串,可以用 regexp 來表示。 string 將 pattern 由 string 所取代。 c confirm,每次替換前會詢問。 e 不顯示 error。 g globe,不詢問,整行替換。 i ignore 不分大小寫。
以下以實際操作為主 , 日後將會隨著使用頻率來陸續新增常用的
( NOTE!! 如果在命令指令時有特殊符號(i.e. '.' '\' '>' etc...)
需要加"\" 符號來區分 ,遇到在下一個特殊符號還是要再加一次"\" )
- :%s/sub/add/g
ex. sub
subway
subscript
輸入指令後
add
addway
addscript
- :%s/\<sub\>/add/g
NOTE , <xxx> 裡面的xxx即完全符合的目標 , 當然 "<"與">" 為特殊符號所以需加"\"
ex. sub
subway
subscript
輸入指令後
add
subway
subscript
- :%s/\..\/lib/\.\/lib/g
若覺得程式很大很煩 , 我一開始都會先自動折疊 :set foldmethod = syntax
讓整個程式乾淨些 , 之後在針對我想要的部份 , 依照以下操作去打開與關閉.
zo | 將游標所在處的折疊打開。open。 |
zc | 將游標所在處已打開的內容再度折疊起來。close。 |
zr | 將全文的所有折疊依層次通通打開。reduce。 |
zm | 將全文已打開的折疊依層次通通再折疊起來。more。 |
zR | 作用和 zr 同,但會打開含巢狀折疊(折疊中又還有折疊)的所有折疊。 |
zM | 作用和 zm 同,但對於巢狀折疊亦有作用。 |
zi | 這是個切換,是折疊與不折疊指令間的切換。 |
zn | 打開全文的所有折疊。fold none。 |
zN | 這是 zn 的相對指令,回復所有的折疊。 |
NOTE!! 若想要一開始進去程式預設就是folding , 可在vimrc增加
set foldmethod=syntax.
---------------------------------------------------------------------------------------------------------
若是想要更簡單的學習VIM,Jserv大大有翻譯一個正體的圖解學習VIM,
也是非常好用!!
如下:
資料來源:
1.鳥哥的 Linux 私房菜 http://linux.vbird.org/linux_basic/0310vi.php#vim_v
2.Vim的操作小技巧: http://blog.eddie.com.tw/2011/12/28/vim-tips/
3. 大家來學VIM 「五」尋找,替換:http://www.study-area.org/tips/vim/Vim-5.html
5. 把 Vim 折疊(folding)?:http://edt1023.sayya.org/vim/node12.html
6. 交大的學生整理的HOWTO - vim
http://help.cs.nctu.edu.tw/help/index.php/HOWTO_-_vi,_vim#.E5.B8.B8.E8.A6.8B.E7.A7.BB.E5.8B.95.E6.8C.87.E4.BB.A4
6. 交大的學生整理的HOWTO - vim
http://help.cs.nctu.edu.tw/help/index.php/HOWTO_-_vi,_vim#.E5.B8.B8.E8.A6.8B.E7.A7.BB.E5.8B.95.E6.8C.87.E4.BB.A4
沒有留言:
張貼留言