Vim技巧整理

Vim 进阶技巧讲义

Opening

文章转载于GeekHour,原视频链接:Vim进阶技巧,你知道几个?
放在网站上方便查询

欢迎来到 GeekHour!

在程序员的世界里,编辑器之争一直是个有趣的话题。传说中程序员分三类:用 Vim 的、用 Emacs 的,还有其他。你属于哪一类呢?

大家好,我是老萧,以后会和老杨一起为大家带来最酷的技术分享。之前在 Linux 入门教程中,我们简单介绍过 Vim 的基本使用。今天我们将深入探讨一些进阶技巧,那我们闲言少叙,开始分享。

技巧一:快速跳转

在日常编码中,我们花费大量时间在浏览和定位代码上,而不是输入新的代码。因此,掌握高效的跳转方法可以极大提升我们的工作效率。

行号跳转

  • 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!