字节笔记本
2026年2月23日
Vim 高级使用技巧
本文整理了 18 条 Vim 高级使用技巧,帮助开发者提升编辑效率。这些技巧涵盖了重复操作、快速定位、文本替换、寄存器使用等核心功能。
1. 点号重复操作
. 用来重复上一个操作。
2. f{char} 行内查找
f{char} 用来在同一行中找 char 字符,如 f+,会在行中找 + 号。
3. 分号和逗号重复查找
;会重复通过 f 找到字符这个动作,往后找,则会让它往前找
示例:综合上面 3 点,完成任务:把
var foo = "method("+argument1+","+argument2+")";这行代码中的+号前后都加上空格: 先f+找到+,修改:s +,然后;号找到下一个+,然后点.,之后一直输入;.就可以了
4. 大写命令的快捷方式
| 命令 | 等效操作 | 说明 |
|---|---|---|
C | c$ | 删除到行尾并进入插入模式 |
S | ^C | 删除整行并进入插入模式 |
I | ^i | 在行首进入插入模式 |
A | $a | 在行尾进入插入模式 |
O | ko | 在当前行上方插入新行 |
示例:给 10 行代码末尾加上
;分号 先A;<esc>,再j,再点.,后面一直j.就可以了。
5. cw / cb / s 删除并插入
cw删除一个单词并进入插入模式,如果光标在一个单词中间,则bcwcb往前删除单词s只删除当前光标字符,马上变成插入模式
6. Ctrl+A / Ctrl+X 数字增减
<c-a>(Ctrl+a)会把数字变大 1<c-x>减小 1- 要变大 10 则:
10<c-a>
如果光标当前不在数字上,则会在当前位置往后找到第一个数字做操作。
7. daw / dap 删除整个单词或段落
daw(delete all word)删除整个单词,不管光标在单词的哪dap删除整个段落
除了 d 也可以用在 c 上(change)。
8. gu / gU / g~ 大小写转换
guw把单词变成小写gUw变成大写guaw对整个单词进行小写转换g~可以把大小写全部反过来
9. 插入模式下的删除快捷键
<c-h>相当于 backspace 删除一个字符<c-w>向前删除单词<c-u>删除到行开始处
10. 快速返回正常模式
在插入模式下,一般是按 Esc 来回到正常模式,不过它要让你的手离开键盘。替代方案是 <c-[>(Ctrl+[)。
11. 复制粘贴技巧
示例:复制 "PracticalVim,byDrewNeil ReadDrewNeil's" 这段话,光标在开始处,复制到逗号,再粘贴到末尾:
先 yt, 也就是复制到逗号的地方,再 jA 空格到末尾编辑,<c-r>0 把第 0 个寄存器的内容粘贴上。
12. FuzzyFinder 插件 - 快速打开文件
安装 FuzzyFinder 插件:http://www.vim.org/scripts/script.php?script_id=1984
它依赖 L9 库,所以还得先安装 L9:http://www.vim.org/scripts/script.php?script_id=3252
再在 vim 的配置中加上:
nmap ,, :FufCoverageFile <cr>之后就可以通过快速输入两个逗号来打开文件查找功能了。
如果只想显示某几种类型的文件时,加上:
let g:fuf_coveragefile_globPatterns = ['**/*.cpp', '**/*.h', '**/*.c', '**/*.py', '**/*.txt']13. 输入特殊字符
<c-v>xx- xx 指的是数字,ascii 码- 超过 ascii 码的,xx 前面加个 u,表示是 unicode
<c-k>xx- 这里的 xx 就不一定是字母或数字等字符了,运行一下:digraphs就可以看到一个表
14. 特长行的处理
set wrap- 自动换行set nowrap- 不换行
在一行超长的被自动换行的每一行中,要移动位置:
hjkl 四个键前面加上 g,表示在可视行上移动:
g^移动到当前可见行首g$行尾gm移动到当前可见行的中间
15. 默认的 Marks(标记)
| 标记 | 作用 |
|---|---|
\"` | 跳到上次在退出之前做的修改的那个位置 |
\[` | 上次变化或 p 粘贴的第一个字符 |
\]` | 上次变化或 p 粘贴的最后一个字符 |
'<' | 上次在可视 visual 模式下选中的第一行 |
'>' | 上次在可视 visual 模式下选中的最后一行 |
'.' | 上次修改的地方(位置比较确切,明确到列) |
'^' | 在上次 insert 模式退出前的位置 |
16. r! 插入命令执行结果
:r! 用来插入某个命令执行的结果,如:
:r! pwd17. 替换文本
| 命令 | 作用 |
|---|---|
rx | 替换当前光标所在的字符为 x |
R | 从光标处开始替换,直到按下 esc 键 |
2s | 从光标处开始替换,把接下去的两个字符替换成任何你输入的文本 |
2S | 从光标所在的行开始替换,接下去的两行都会被替换成任何你输入的文本 |
18. 改变文本
| 命令 | 作用 |
|---|---|
cc | 改变整行文本 |
C | 从光标处往后全部改变 |
改变文本和替换文本的差别在于,替换时,字符数是一样的。
原文作者:jsongo 原文地址:http://www.jsongo.com/post/draft/vi/2014/vim-advance/