基本操作
開始
vim <filename>
用vim開啟檔案
模式
開啟vim之後,分成以下幾種模式:
- normal mode: 左下角不顯示,剛進入vim的時候的模式,進入其他模式可以用esc返回
- insert mode: 左下角顯示INSERT,按i進入
- virtual mode: 左下角顯示VIRTUAL,按v進入,可以選取區域,作為之後操作的對象
- command mode: 最底下那行會出現你輸入的內容,按下:可以開始輸入指令,按下enter執行
## 結束
在command mode輸入:q
然後enter,就可以離開了
儲存的話就是:w
,或者二合一的:wq
同時儲存並離開
如果已經動到檔案,但不想儲存,可以:q!
不存檔就離開
## 刪除
x: 剪下cursor下的字元
## 時間旅行 - u: undo,取消最後一次的動作
- ctrl+r: redo,取消最後一次的undo
.vimrc
.vimrc是vim的設定檔案,通常放在~/.vimrc
,適用於所有用vim編輯的檔案
把tab換成4個space
set expandtab
set shiftwidth = 4
set tabstop = 4
set softtabstop = 4
自動縮排
set smartindent
Highlight cursor所在的那行
set cursorline
vim 語言系統
vim的指令有動詞,描述它們作用形式的副詞,以及指定動作對象的名詞
動詞
- c: change 修改
- d: delete 剪下
- y: yank 複製
- p: paste 貼上
副詞
- i: inside 裡面
- <數字>: 讓後面接著的指令重複
- t: to 直到(不到)
- f: find 直到(踩到)
名詞
- w: word 詞
- s: sentence 句子
- p: paragraph 段落
- b: block 程式區塊
- %: 配對的括號
$ ciw: 刪掉現在所在的單字並且進入insert mode
$ c2s: 刪掉兩個句子並且進入insert mode
$ dtX: 刪除直到這一行的下一個X(不會刪掉下個X,現在cursor所在位置不會算在下個X)
$ d%: 如果現在在有配對的括號上,刪除這兩個括號和它們之間的文字
d, y, c 如果單獨使用,就會對行產生效果,比如dd
會刪掉所在的行,3yy
複製從這行開始的3行,p的結果受剪下或複製時的對象影響,如果是複製行,貼上時就會在這行之後,如果是複製詞或字元,那就會貼在cursor之後
更多移動
- w: word 移動到下個詞的開頭
- e: end 如果不在結尾,移動到這個詞的結尾,否則移動到下個詞的結尾
- b: backward 如果不在開頭,移動到這個詞的開頭,否則移動到上個詞的開頭
- 0: 移動到這行的開頭
- $(shift+4): 移動到這行的結尾
- 輸入
/<想搜尋的字串>
然後enter,會跳到符合這個字串的地方,按下n會到下一個,N會到上一個 - gg: 到整個檔案的最前
- G: 到整個檔案的最尾
- <數字>gg: 到第<數字>行
剪下方式
- D: 剪下到行尾
- J: join,剪下到行尾並且刪除換行符號(也就是把兩行連起來)
其他
.: 重複最後一次的動作
使用shell
輸入:<想執行的指令>
就可以在vim裡面直接執行該指令
visual mode
按下v後,會進入visual mode,會選取此時的cursor和移動後的cursor,可以運用前面的移動方式來使用,選好範圍後,就可以用d、y、c等指令來操作
取代
:s/<被取代字串>/<取代成的字串>
可以把該行第一個<被取代字串>替換為<取代成的字串>:s/<被取代字串>/<取代成的字串>/g
把該行所有<被取代字串>替換為<取代成的字串>:%s/<被取代字串>/<取代成的字串>
可以把每行第一個<被取代字串>替換為<取代成的字串>- 先用visual mode選取之後,按下:會出現
:'<,'>
,這時候輸入:'<,'>s/<被取代字串>/<取代成的字串>/g
就可以替換選取範圍的每個<被取代字串>