Vim 进阶技巧讲义
Opening
在程序员的世界里,编辑器之争一直是个有趣的话题。传说中程序员分三类:用 Vim 的、用 Emacs 的,还有其他。你属于哪一类呢?
技巧一:快速跳转
在日常编码中,我们花费大量时间在浏览和定位代码上,而不是输入新的代码。因此,掌握高效的跳转方法可以极大提升我们的工作效率。
行号跳转
- gg - 跳转到文件开头
- G - 跳转到文件末尾
- {行号}G - 跳转到指定行
- set relativenumber - 显示相对行号
- vi +100 filename - 打开文件并跳转到第100行
窗口内跳转
- H - 跳转到当前窗口首行
- M - 跳转到窗口中间
- L - 跳转到窗口底部
搜索跳转
- /pattern - 向下搜索
- ?pattern - 向上搜索
- n / N - 重复搜索
- * - 搜索光标下的单词
- # - 反向搜索光标下的单词
跳转历史
- :jumps - 查看跳转历史记录
- Ctrl-O - 跳回上一个位置
- Ctrl-I - 跳到下一个位置
- :changes - 查看编辑位置历史
- g; - 跳到较老的修改位置
- g, - 跳到较新的修改位置
标记与跳转
- m{a-zA-Z} - 设置标记
- '{mark} - 跳转到标记行
技巧二:行内移动
在单行内快速移动光标是提升 Vim 使用效率的关键。
基本移动
- 0 - 跳到行首
- $ - 跳到行尾
- ^ - 跳到行内第一个非空字符
- g_ - 跳到行内最后一个非空字符
精确定位
- f{char} - 向后查找字符并跳转
- F{char} - 向前查找字符并跳转
- t{char} - 向后查找字符并跳到其前一个位置
- T{char} - 向前查找字符并跳到其后一个位置
- ; - 重复上次的字符查找
- , - 反向重复上次的字符查找
单词移动
- w - 移动到下一个单词开头
- e - 移动到当前单词结尾
- b - 移动到上一个单词开头
- W/E/B - 同上,但以空格为分隔符
技巧三:高效编辑
Vim 的强大之处在于其编辑命令的组合能力。
动作命令
- c - change (修改)
- d - delete (删除)
- y - yank (复制)
- v - visual (可视化选择)
文本对象
- w - word (单词)
- s - sentence (句子)
- p - paragraph (段落)
- ( or ) - 圆括号内的内容
- { or } - 花括号内的内容
- [ or ] - 方括号内的内容
重复与撤销
- . - 重复上次的修改
- u - 撤销上次修改
- Ctrl-R - 重做(撤销的反向操作)
技巧四:Buffer Windows Tab
Buffer 管理
- :ls - 列出所有缓冲区
- :b {number} - 切换到指定编号的缓冲区
- :bn / :bp - 切换到下一个/上一个缓冲区
- :bd - 关闭当前缓冲区
Window 操作
- :sp - 水平分割窗口
- :vsp - 垂直分割窗口
- Ctrl-w h/j/k/l - 在窗口间移动
- Ctrl-w = - 使所有窗口等宽、等高
Tab 页管理
- :tabnew - 创建新标签页
- gt / gT - 切换到下一个/上一个标签页
- :tabclose - 关闭当前标签页
技巧五:寄存器
- :reg - 查看寄存器内容
- "ap - 粘贴 a 寄存器内容
- q - 录制宏
- @ - 执行宏
技巧六:Vimrc 配置
基础配置
- 语法高亮
- 显示行号
- 设置 Tab 缩进
- 配置文件编码
快捷键设置
- <leader>v - 快速打开配置文件
- <leader>q - 强制退出
- <leader>y/p - 系统剪贴板复制/粘贴
实用替代键
- Ctrl-[ - 替代 Esc 键
- ZZ - 替代 :wq
- ZQ - 替代 :q!
技巧七:插件管理
推荐使用 vim-plug 作为插件管理器,常用插件包括:
- fzf:模糊查找工具
- vim-easy-align:代码对齐
- vim-commentary:注释插件
- vim-gitgutter:显示 git diff 信息
- tokyonight:配色方案
- lightline:状态栏插件
- vim-mucomplete:代码补全
- SearchComplete:搜索补全
- matchup:增强 % 跳转功能
Vim 的生态与影响力
Vim 的影响力已经渗透到各种工具中,包括 Neovim、命令行、IDE 和浏览器扩展等。
Ending
Vim 就像开源世界中的一支铅笔,几乎每台类 Unix 系统都预置其中,其理念影响深远。希望大家能够通过学习,找到属于自己的高效编辑方式。
最后,让我们缅怀 Vim 之父 Bram Moolenaar,同时关注他生前致力于的乌干达儿童慈善事业。愿大家在新的一年里效率 MAX,Happy hacking!
