Vim


Posted by a113062130630210 on 2022-06-21

基本操作

開始

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就可以替換選取範圍的每個<被取代字串>









Related Posts

Day 38 - Environment variable & Workout Tracker

Day 38 - Environment variable & Workout Tracker

使用 Hugo 建立一個 Blog

使用 Hugo 建立一個 Blog

OncePerRequestFilter

OncePerRequestFilter


Comments