很多強者同學都說vim好用或是資工系(所)不會用vim很丟臉,顆顆,老實說用了不少IDE,感覺只要用的習慣就好啦!
雖然說很多IDE很厲害,不過很多時候還是避免不了要用到vim,話說我的vim基本功實在很差,每次用vim編輯的時候都很像智障,該是來筆記的時候惹!!
1. vim一開始最需要學習的就是怎麼去移動游標,之前只會用方向鍵實在有點丟臉!
| 常用游標移動方式 | |||||
|---|---|---|---|---|---|
| h | 在一般模式下,游標往左邊的方向移動一格,如果在前面加上數字(ex:5h)的話,就會往左5格 | ||||
| j | 在一般模式下,游標往下邊的方向移動一格,如果在前面加上數字(ex:5h)的話,就會往下5格 | ||||
| k | 在一般模式下,游標往上邊的方向移動一格,如果在前面加上數字(ex:5h)的話,就會往上5格 | ||||
| l | 在一般模式下,游標往右邊的方向移動一格,如果在前面加上數字(ex:5h)的話,就會往右5格 | ||||
| gg | 把游標一到第一行 | ||||
| G | 把游標一到最後一行 | ||||
| 0 or Home | 把游標移到這一行的最前面的字元 | ||||
| $ or End | 把游標移到這一行的最後面的字元 | ||||
| [Ctrl]+f | 等同於Page down | ||||
| [Ctrl]+b | 等同於Page up |
2. 在IDE中常會用到搜尋的功能,在vim中搜尋我覺得比IDE還要方便(不用離開鍵盤)
| 常用的搜尋方法 | |
|---|---|
| /word | 向游標之下尋找一個名稱為 word 的字串 |
| ?word | 向游標之上尋找一個名稱為 word 的字串 |
| n | 小n代表/word或?word搜尋完後,繼續往下搜尋 |
| N | 大N代表/word或?word搜尋完後,繼續往上搜尋 |
| :set hlsearch | hlsearch(high light search)搜尋前先set好後,/word或?word會把所有關鍵字high light |
3. 最讓我驚訝的部份,就是vim可以用指令把所有的word1變成word2
| 常用的取代指令 | |
|---|---|
| :n1,n2s/word1/word2/g | 從n1行到n2行間把找到的word1取代成word2(ex::100,200s/word1/word2/g) |
| :1,$s/word1/word2/g | 從第1行到最後一行間把找到的word1取代成word2(ex::1,$s/word1/word2/g) |
| :1,$s/word1/word2/gc | 功能同上(ex::1,$s/word1/word2/gc),但是取代前會給使用者確認是否取代 |
4. 刪除,複製,貼上應該是除了怎麼移動游標之外最重要的部份吧!畢竟code總是貼來貼去
| 常用的刪除,複製,貼上 | |
|---|---|
| x | 向後刪除一個字元 |
| X | 向前刪除一個字元 |
| dd | 刪除一整行(超好用) | ndd | n代表數字(ex:5dd),代表刪除游標後n整行 |
| yy | 複製游標所在的那一行(超好用) | nyy | n代表數字(ex:5yy),代表複製游標厚n行 |
| p | 用yy或nyy複製後,從游標下一行貼上 |
| P | 用yy或nyy複製後,從游標上一行貼上 |
| u | 復原前一次動作 |
| [Ctrl]+r | 重作上一個動作 |
5. 從一般模式進入編輯模式,不能只會用i
| 常用的插入模式 | |
|---|---|
| i | 從目前所在的游標處開始插入 |
| I | 從目前所在行的第一個非空白字元開始插入(從所在行的頭開始插入) |
| a | 從目前游標所在的下一個字元開始插入 |
| A | 從目前游標所在的行最後一個字元開使插入 |
| o | 在該行的下一行開始插入 |
| O | 在該行的上一行開始插入 |
6. 區塊地選擇,搭配區塊複製,自動排版,多行註解使用
| 常用的區塊選擇 | |
|---|---|
| v | 以字元為單位,游標走到哪裡,區塊就選到哪裡 |
| V | 以行為單位,游標走到哪裡,行區塊就選到哪裡 |
| [Ctrl]+v | 長方形區塊選擇,常用在多行註解 |
| y | 把反白選取的區塊給複製起來 |
| d | 把反白選取的區塊給刪除掉 |
7. 一些小技巧
| 常用的小技巧 | |
|---|---|
| 多行註解 | [Ctrl]+v(長方形區塊選擇)+選擇區塊+I+註解字元(ex://)+Esc |
| 多行註解消除 | [Ctrl]+v(長方形區塊選擇)+選擇區塊+l+x |
| 程式碼整頁排版 | gg+v+G+= |
| :!command | 暫時離開vim到指令列模式下執行 command 的顯示結果(ex::!ls) |
基本上上表都是參考鳥哥來的,濃縮整理了一下我需要的一些vim指令XD!!
沒有留言:
張貼留言