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- 替代:wqZQ- 替代: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!