Vim 技巧整理

Cheat Sheet 已經很多地方有了,這邊就不打算整理,我自己有整理幾個參考連結在結尾。

我常用的文件內移動方式

  • gg - 跳到第一行
  • G - 跳到最後一行
  • 10G - 跳到第 10 行
  • { - 跳到上一個空行
  • } - 跳到下一個空行
  • Ctrl + d - 往下滑半頁(Down)
  • Ctrl + u - 往上滑半頁(Up)

Action - Around/Inner - Range

這是我最常用的組合之一:

  • Action
    • c - Change
    • d - Delete
    • y - Yank
    • v - VISUAL
  • Around/Inner
    • a - Around
    • i - Inner
  • range
    • w - Word
    • { - {}
    • [ - []
    • " = ""
    • < - <>

舉例:

  • ciw - 刪掉當前文字,直接進入 INSERT 模式
  • ci" - 刪掉 "" 裡面的文字,直接進入 INSERT 模式
  • yi( => p - 複製 () 裡面的文字,並在下面貼上

另外我最常用的還有 vai,可以直接選取整個函數。但這好像只有 Neovim 裡面可以,Vim 裡面不行。

  • vai => <space>y - 複製整個函數到 clipboard(可以問 AI)
  • vai => d - 刪除整個函數
  • vai => gsa) - 在整個函數外面加上 ()(搭配 mini-surround 套件)
  • vai => gsat => div - 在 HTML 裡面選取元素外面加上一層 <div> 元素
  • vai => gc - 註解整個函數
  • vai => y => p - 複製整個函數,並貼上

把特定文字換成新的文字

VSCode 裡面:Cmd + Option + f

在 Vim 裡面:

  • :%s/old/new/gc - 把 old 替換成 new
    • s - Substitute
    • g - Global
    • c - Confirm(每個文字會跟你確認是否要替換)
  • :'<,'>%s/old/new/gc - 在 VISUAL 選取範圍內把 old 替換成 new
    • '<,'> - VISUAL 選取範圍

但我根本記不起來這個語法,所以我在 Neovim 裡面設定:

  • :R old/new => :%s/old/new/gc
  • :RV old/new => :'<,'>%s/old/new/gc

在連續幾行開頭加上某些文字

  • Ctrl + v - 進入 VISUAL-BLOCK 模式
  • j/k - 往上往下選取
  • ^ - 把選取範圍每一行的游標移到句子開頭
  • I - 在開頭前面進入 INSERT 模式
  • 輸入我想要的文字
  • Esc

在連續幾行結尾加上某些文字

  • Ctrl + v - 進入 VISUAL-BLOCK 模式
  • j/k - 往上往下選取
  • $ - 把選取範圍每一行的游標移到句子結尾
  • A - 在結尾後面進入 INSERT 模式
  • 輸入我想要的文字
  • Esc

把此行的所有空格換成換行

1. 尋找空格,替換成換行

  • f<space> - 尋找這行裡面的下一個空格
  • r<enter> - 把游標上的這個空格替換成換行
  • 一直重複做以上兩步

2. 選取整行,把空格換成換行

  • V - 選取整行
  • RV \ /\r
    • RV - 前面提到的自定義替換方法
    • \ - 空格
    • \r - 換行符號

以上只是我一些常用的技巧,如果有高手知道更多,歡迎在下面留言分享,讓更多人發現 Vim 的美好。

一些 Cheat Sheet 連結參考:

較舊一篇 將 Github 的 Hugo 專案移到 Linode (4) - 把網域改連到 Linode
使用 Hugo 建立
主題 StackJimmy 設計