Vim 提供了大量的快捷键和命令来加速文本编辑,帮助你更高效地工作。以下是一些常用的 Vim 快捷键,帮助你提高工作效率:
光标移动相关
- h:向左移动一个字符。
- j:向下移动一行。
- k:向上移动一行。
- l:向右移动一个字符。
- w:跳到下一个单词的开头。
- e:跳到当前或下一个单词的末尾。
- b:跳到前一个单词的开头。
- 0:跳到当前行的开头。(
数字0, 字母 O 是会有不一样的效果) - $:跳到当前行的末尾。
- gg:跳到文件的开头。
- G:跳到文件的末尾。
- 按
^会跳到当前行的第一个非空字符。 - Ctrl + u:向上滚动半屏。
- Ctrl + d:向下滚动半屏。
- Ctrl + f:向前滚动一屏。
- Ctrl + b:向后滚动一屏。
文本选择和操作
- v:进入可视模式,选择字符。
- V:进入可视行模式,选择整行。
- Ctrl + v:进入块选择模式,选择列。
- y:复制选中的文本(yank)。
- d:删除选中的文本(delete)。
- p:粘贴(paste)已复制或删除的文本。
- P:将粘贴的文本插入光标前。
文本修改
- i:进入插入模式,在光标前插入文本。
- I:进入插入模式,在行首插入文本。
- a:进入插入模式,在光标后插入文本。
- A:进入插入模式,在行尾插入文本。
- o:在当前行下方插入新行。
- O:在当前行上方插入新行。
- ciw:删除当前单词并进入插入模式(修改当前单词)。
- cw:删除当前单词的一部分并进入插入模式。
- C:删除光标到行尾的内容,并进入插入模式。
- x:删除光标处的一个字符。
- X:删除光标前一个字符。
- r:替换一个字符。
- R:进入替换模式,替换多个字符。
gcc:注释或取消注释当前行。如果当前行已注释,使用此命令将取消注释。gc:注释或取消注释选中的文本。你可以先进入可视模式(v或V),然后选择需要注释的部分,最后按gc来注释或取消注释。
撤销与重做
- u:撤销(undo)上一次操作。
- Ctrl + r:重做(redo)上一次撤销的操作。
- :earlier [time]:撤销到指定时间点。
- :later [time]:恢复到指定时间点。
.代表 “重复上一个修改操作”,即重复你上次执行的编辑命令。
跳转到定义
如果你想跳转到 定义(Definition),可以使用:
- 快捷键:
gd(在 Neovim 中)gf(跳转对应文件)gx(用默认应用打开,一般用于打开链接)F12(在 VSCode 默认键位)Ctrl + 左键点击(在 VSCode UI)
搜索和替换
- /pattern:向下搜索
pattern。 - ?pattern:向上搜索
pattern。 - n:跳转到下一个搜索结果。
- N:跳转到上一个搜索结果。
- :%s/old/new/g:替换文件中所有的
old为new。 - :s/old/new/g:替换当前行的所有
old为new。 - :s/old/new/gc:替换当前行的所有
old为new,并询问是否替换。
在 vim 中,当你进入 Visual Mode(无论是字符模式 v 还是块模式 Ctrl-v),并且选择了一个单词后,按 r 来替换字符,默认情况下你只能替换为一个单个字符。如果你想替换为一个完整的单词(比如 test),你需要执行以下步骤:
1. 选择单词
- 使用
v或Ctrl-v进入选择模式。 - 使用光标选择你要替换的单词或区域。
2. 按 r 然后输入单个字符
- 如果你按下
r后,接着输入一个字符,它会将选中的字符替换为你输入的字符。
但是,如果你要替换为整个单词(比如 test),你需要做的步骤是:
3. 替换为单词
- 按
c(改变命令):这会删除选中的内容,并进入插入模式。 - 然后 输入
test,输入完后按Esc退出插入模式。
这样,选中的单词或区域就会被 test 替换掉。
另外一种方法
如果你不想删除整个选区,只是替换单个字符的情况,也可以使用 r 来替换每个字符,但如果是替换成多个字符(比如 test),还是推荐使用 c 来进行替换。
多窗口和标签页操作
- :split 或 :sp:水平分割窗口。
- :vsplit 或 :vs:垂直分割窗口。
- Ctrl + w, h/j/k/l:在分割的窗口之间切换。
- :tabnew:打开一个新的标签页。
- gt:切换到下一个标签页。
- gT:切换到上一个标签页。
折叠相关快捷键
za→ 切换当前折叠状态(折叠/展开)zc→ 折叠当前代码块zo→ 展开当前代码块zC→ 递归折叠当前代码块及其子折叠zO→ 递归展开当前代码块及其子折叠zm→ 增加折叠级别(更大范围的代码块可折叠)zr→ 减少折叠级别(更大范围的代码块可展开)zM→ 最大化折叠(所有可折叠的代码块全部折叠)zR→ 完全展开(所有折叠的代码块全部展开)
查看折叠信息
zf→ 手动创建折叠(如zf3j表示折叠光标向下 3 行)zd→ 删除当前折叠zE→ 删除所有折叠
你可以通过 :set foldmethod= 来查看或设置折叠方式,常见的折叠方式有:
manual→ 手动折叠indent→ 按缩进折叠syntax→ 按语法折叠expr→ 使用表达式折叠marker→ 通过}标记折叠
如果你在 nvim 中使用 LazyVim,它可能会有额外的折叠插件(如 nvim-ufo),可检查 :h fold 了解更多信息。
剪切与粘贴
- yy:复制当前行。
- dd:删除当前行(同时剪切)。
- p:粘贴内容到光标后。
- P:粘贴内容到光标前。
- 5p:粘贴 5 次。
其他常用命令
- :w:保存当前文件。
- :wq:保存并退出。
- :q:退出当前文件。
- :q!:强制退出当前文件(不保存)。
- :e [file]:打开指定的文件。
- :b [buffer]:切换到指定的缓冲区。
- :ls:列出所有缓冲区。
进阶命令
- .:重复上一个命令(比如删除、插入等)。
- Ctrl + r:在插入模式下执行查找并替换。
- gq:格式化当前行或选中的文本。
- :set nu:显示行号。
- :set nonu:隐藏行号。
- :set wrap:自动换行。
- :set nowrap:禁用自动换行。
copilot 插件命令
| 快捷键 | 功能描述 |
|---|---|
Ctrl + l | 接受 Copilot 提示 |
Alt + [ | 上一个 Copilot 提示 |
Alt + ] | 下一个 Copilot 提示 |
Alt + \ | 手动触发提示 |
Alt + Enter | 打开 Copilot 面板(旧版) |
你也可以自定义快捷键, 用 which-keys 查看 (一般在 keymaps.lua 中定义)
LSP 中常用命令
| 快捷键 | 功能 |
|---|---|
gd | 跳转到定义 |
gD | 跳转到类型定义 |
gi | 跳转到实现 |
gr | 查找引用(常配合 Telescope) |
K | 显示文档(hover info) |
<leader>rn | 重命名符号 |
<leader>ca | 代码操作(Code Action) |
[d / ]d | 上/下一个诊断问题 |
<leader>cd | 打开诊断列表(浮窗) |
gl | 当前行诊断信息 |
vscode 折叠代码快捷键

vscode 的聚焦窗口好像只有 K(即shift + k), 然后就可以用 h,j,k,l 来移动 (下载了 nvim 这些插件才行)
然而有些窗口就无法聚焦的,nvim 中的窗口是设定为不可聚焦的
括号快速跳转这些
✅ 方法一:使用 % 快速跳转匹配括号
适用场景
-
当前光标在
{或}上时 -
函数体是被大括号包裹的
操作
-
把光标移到
}上,然后按下:% -
它会跳转到与之匹配的
{(即函数的开始)
✅ 方法二:使用 treesitter 的文本对象 af / if 跳转函数范围
如果你安装并启用了 nvim-treesitter(LazyVim 默认启用),可以:
操作
-
[+m:跳到上一个函数开始 -
]+m:跳到下一个函数开始 -
[+M:跳到上一个函数结尾 -
]+M:跳到下一个函数结尾
这些是 treesitter 的内建移动快捷键(可以检查 :help nvim-treesitter-textobjects)
✅ 方法三:使用 LSP 的 go to definition(跳到函数定义)
如果你在某个函数调用处,想跳到函数声明处,可以用:
gd
跳到函数定义(如果是光标在调用上)
或者:
gD
跳到声明(声明 ≠ 定义,某些语言区分)
但这通常用于函数调用处 → 跳到定义,而你说的是函数末尾 → 函数头部,此时 % 和 treesitter 更合适。
✅ 方法四:用缩进折叠、函数范围快速移动
你可以用:
[{ 跳到当前作用域(block)的开始
]} 跳到当前作用域(block)的结束
由 [{ 跳转到上一级块(如函数)的开头,非常适合从 } 跳回 {。
✨ Bonus:推荐常用跳转键表
| 快捷键 | 含义 | 来源 |
|---|---|---|
% | 括号配对跳转 | 原生 |
[{ | 当前作用域开头(如函数) | 原生 |
[m | 上一个函数开始(treesitter) | treesitter textobj |
]m | 下一个函数开始(treesitter) | treesitter textobj |
[{, ]} | 进入/退出当前块作用域 | 原生 |
总结
- 熟练掌握
d(删除)、y(复制)、p(粘贴)等基本操作会大大提高工作效率。 - 使用
ciw、cw、C等命令快速修改单词或行,避免手动删除和插入。 - 善用
gg、G和w、b等命令快速定位,减少鼠标操作。 - 通过多窗口和标签页功能(
:split、:vsplit)提高多任务处理能力。 u和Ctrl + r是日常编辑中非常有用的撤销/重做工具。
随着时间的推移,使用这些快捷键会让你更加得心应手,从而提高工作效率。你可以根据自己的需求进一步定制和优化 Vim 配置。如果你有其他 Vim 使用上的问题,欢迎继续提问!