Vim 实用技巧必知必会
吴咏炜
前 Intel 资深软件架构师
21753 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
Vim 实用技巧必知必会
15
15
1.0x
00:00/00:00
登录|注册

09|七大常用技巧:让编辑效率再上一个台阶

少量修改某一变量名称
交换两处文本内容
交换两行内容
图形界面剪贴板寄存器 +*~
表达式寄存器 =
搜索寄存器 /
黑洞寄存器 _
特殊寄存器 .:#%
有名寄存器 az
小删除寄存器 -
数字寄存器 09
无名寄存器
<C-X><C-F>(文件自动完成)
<C-N>(next)
<C-P>(previous)
Fzf.vim 插件
Vim-eunuch 插件
撤销树插件
撤销历史
宏的录制和播放
常用的寄存器使用场景
寄存器类型
gx(打开链接或非文本文件)
<C-W>f(在新窗口中打开文件)
gf(跳转到文件)
基于文件系统的自动完成
基于当前文件文本的自动完成
学以致用
实践安装插件
模糊文件查找
对当前缓冲区的更名和移动
撤销树
Vim 寄存器/剪贴板
文本目标跳转
自动完成
课后练习
Vim 的七大常用技巧

该思维导图由 AI 生成,仅供参考

你好,我是吴咏炜。
学到这里,你应该已经初步掌握 Vim 了。我们这一讲来重点看一下 Vim 里的七大常用编辑技巧。有些技巧你直接就可以用,有些则需要安装第三方插件。但无论是哪种情况,它们都可以大大提高你的编辑效率。
从这一讲开始,我们将不再讨论插件的安装过程,而只是给出像 skywind3000/asyncrun.vim 这样的名称。相信你学到现在应该已经不需要我再详细讲述这样的基础知识了。如果你对安装插件还不太熟练的话,请复习第 4 讲。接下来,我们正式开始今天的内容。

自动完成

自动完成是一个编辑器中很主流的功能了。通常,我们希望编辑器能在我们输入一部分内容时就能猜到我们希望输入的是什么,并能够予以提示。自动完成可以节约我们输入的工作量,是一件编辑中非常必要的利器。
Vim 内置有自动完成功能。最基本的自动完成功能有两种:
基于当前文件文本的自动完成
基于文件系统的自动完成
我们先说基于当前文件文本的自动完成。在当前文件里,或当前文件用 #include(C 类语言的情况)包含的文件里包含某个关键字时,你可以输入头若干个字母并按下 <C-P>(表示 previous)或 <C-N>(表示 next)来进行自动完成。这两者的区别是,<C-P> 是从当前位置往前找,而 <C-N> 是从当前位置往后找。当只有一个匹配项时,Vim 直接给出完成结果,再次按下 <C-P><C-N> 则取消自动完成。当存在多个匹配项时,Vim 会根据搜索顺序给出匹配项列表并使用第一个匹配项;再次按下 <C-P><C-N> 则可以在列表里进行选择。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Vim编辑器技巧大揭秘:提高编辑效率的七大技巧 Vim编辑器是一款功能强大的文本编辑工具,本文介绍了Vim的七大常用编辑技巧,旨在提高编辑效率。首先介绍了自动完成功能,包括基于当前文件文本和文件系统的自动完成,以及相关快捷键的使用方法。其次讨论了文本目标跳转技巧,通过`gf`和`<C-W>f`命令可以方便地跳转到文件。此外,还介绍了Vim的寄存器功能,包括不同寄存器的用途和访问方式。这些技巧可以帮助用户更高效地使用Vim编辑器,提高编辑效率。 文章还介绍了使用寄存器进行文本交换、宏的录制和播放、文本对象增强、撤销树的使用以及对当前缓冲区的更名和移动。这些技巧不仅提高了编辑效率,还展示了Vim编辑器强大的自动化和交互性功能。通过这些技巧,读者可以更好地利用Vim编辑器进行文本编辑,提高工作效率。 另外,文章还介绍了使用模糊文件查找的技巧,通过NERDTree和Fzf插件的模糊匹配功能,可以快速查找文件并预览内容,提高了文件查找的效率。 总之,本文深入探讨了Vim编辑器的高级编辑技巧,为读者提供了丰富的编辑工具和方法,帮助他们更好地利用Vim编辑器进行文本编辑,提高工作效率。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Vim 实用技巧必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 我来也
    老师的这些常用技巧确实都很实用. # 文本目标跳转 与文件名自动补全一样,有时还是非常实用的. 既然提到了`gf`,可以把类似的命令`gF`也记一下. `:h gF` 和 "gf" 相同,但如果文件名后面跟随着数值,那么光标将定位在该文件名的该行上。 # Vim 寄存器 / 剪贴板 今天对数字寄存器0-9和小删除寄存器`-`有了新的认识.之前完全没有留意过这几个. 作为补充,与`a-z`小写字母的寄存器对应的,`A-Z`大小的寄存器,表示在原来小写寄存器的内容后面追加.(虽然这个也不常用) # 常用的寄存器使用场景 不确定老师是不是为了特意把`"0`寄存器用起来才这么弄. 我是看了半天才弄明白的. 在`使用复制、自动选择、粘贴修改变量名`的场景中,如果构建的步骤合适,是可以用`.`命令,更简单的来实现相同的效果. 就拿图中的状况来说,我的按键序列可能是这样 1. `*`   全字匹配光标下的内容`foo` 2. `cwfoobar<Esc>`   编辑光标下的单词 3. `n`   跳转到下一处匹配的地方 4. `.`   重复上次的修改操作 5. `n.`   可以不断的重复 `只要每次构建的命令合适`,就可以用`.`命令方便的实现重复. # 宏的录制和播放 作为补充,与寄存器类似,大写的`A-Z`宏,好像也是在原有宏的后面添加内容. # `junegunn/fzf.vim` 有精力的同学,这个插件可以好好的深挖一下. 有很多实用的功能待你去发掘. # 题外话 针对MacOS下的同学,我推荐一款神器[paste](https://pasteapp.io/) 它可以记录历史的剪切板内容. 还可以给他们取别名, 钉起来. 有了它,应对本文中`两处文本交换的演示`类似的场景,就有了另外一套搞法.

    作者回复: 对你来讲,讲得越多你越开心。但编辑已经嫌我最近几讲内容太多了,还要我砍少点,免得把初学的同学吓跑了。🤪

    2020-08-12
    8
    6
  • 乘风破浪
    请问老师您的bat如何配合fzf使用?我已经安装了bat,但是调出fzf, 还是无法显示语法高亮的效果。

    作者回复: 不需要配置,但 bat 的预览效果的前提是: - 在 Vim 里使用 :Files 命令(不是 :FZF 命令) - 屏幕足够大(比如 80x24 是出不来的) 是不是有某个条件你没满足?

    2020-10-20
    3
    1
  • 皮聪
    前9章看了两遍,内容确实不少,跟着做的话,感觉还好,光看的话就很难看下去。还是得做,这么多章对我而言,最麻烦的是正则那一章,不知道有没有快速的训练正则使用的方法。

    作者回复: 就是多练吧。有些东西就是纯粹的熟能生巧。

    2022-07-05
  • 大狗爱吃鱼
    win10下,fzf安装bat和ripgrep后,无预览小窗口,报"Preview window not supported (bash not found in PATH)"

    作者回复: 我倒真没在Windows下试过fzf。错误信息提示说应该安装bash,你可以试试。Git for Windows就带了Bash,打开个Git窗口试试。

    2020-10-20
  • 瀚海星尘
    边学边练了好几天,终于看完啦~技能学习还是得慢慢练哈,学了不练过几天就忘了

    作者回复: 对,光学不练一场空。

    2020-09-06
  • 李公子胜治
    老师,我最近学了你的c++专栏,准备实战剖析folly源码,结果根本看不到,老师觉得学习cpp分析源码这种学习方式咋样,另外,我最近买了一本 《c++沉思录》,但是网上说书太老了,请问老师还有必要看吗

    作者回复: 我没说过剖析 folly 吧……而且,像 folly、boost 这样的大库,真要剖析,单一个库就可以写一个专栏了。 关键仍然是方法,理解了语法要点和惯用法,自然就能看明白代码了。Folly 的代码还是相当清晰的。 看源码肯定是有用的,不过如果不是自己经常用的,看的体会可能不大。从我自己的角度,我自己没有完整看过哪个库的源码,基本是按需查看。(《STL源码剖析》不算的话,毕竟,有导读的看书比直接看代码还是要轻松。) 《C++ 沉思录》评价还是不错的,我觉得可以结合学习新标准一起看。毕竟书本身确实是有点老了。反过来,这么老的书评价还不错,说明确实是经典。

    2020-08-16
    2
  • pyhhou
    每一篇都是满满的干货,感谢老师,有几个问题 1. 文本目标跳转那里,貌似必须是有后缀名的文件名才能跳转过去?像是在 golang 和 javascript 中路径中文件的后缀是默认省去的,就没有办法跳转过去,不知道是不是需要自行配置或者依赖插件? 2. 用 /... 全局搜索的结果会被高亮表示,但是回到正常模式或者插入模式,这个高亮显示一直都还在。该如何去除呢?感觉像是搜索寄存器里的值一直会显示出来,除非搜索一个全局不存在的东西才能让高亮消失。。。 3. 关于 a-z 寄存器那里,不知道老师有没有使用上面的习惯。感觉没有刻意去练习并习惯,一般也就临时用用,大概也就用到前 3 个吧。多了真的记不住。0-9 寄存器也是一样。估计还是要借助插件把这些寄存器的内容都显示出来? 4. 另外有关宏,感觉这个功能挺强大的。不知道老师后面会不会讲更多的应用场景? 越来越感觉到 vim 的强大。另外认识到好多 shell 上面的工具,像是 fzf,真是节省效率的利器。希望以后跟着老师多多认识并学习这方面的工具。另外,不知道老师有没有计划写几篇来专门讲实际应用的案例,虽然说每一篇针对每个点都有案例。但是我想的是如果能够有一个应用场景把前后讲的这些东西都串起来,这样跟着练习几次,熟练度会大大提高。毕竟 VIM 这东西不练还是不行的,工作中习惯了以往的编辑模式,要一下子应用上老师前前后后讲的这些内容,除非把注意力刻意放在编辑这一块,否则不太容易。

    作者回复: 1. 这个要看相关的插件支持怎么样了(如 vim-go 和 coc、YouCompleteMe 等)。我觉得应该没问题的。用 Vim 内置的这个跳转功能确实不行。 2. 这个已经说过啦。第 7 讲定义的 <F2> 就是干这个的。 3. 没啥特别习惯。印象里 a-z 我同时最多用过 5 个?编辑过后也就不记得里面是什么了。 4. 目前没计划。Vim的功能太多了,感觉讲都讲不完。������ 如果后面能找到时间,看看是不是再搞个加餐吧。

    2020-08-13
    2
  • return
    实用。 确实有点多, 计划每天学一个,稳健。

    作者回复: 没问题,关键是练熟、掌握。

    2020-08-12
  • bianf
    我在vim插入模式下,输入当前路径下的其他文件开头,然后按下ctrl+f,终端窗口下方出现了文件名补全字样,同时也出现了文件名列表,可以用ctrl+f/n/p在匹配项中跳转,但是ctrl+x不行,输入ctrl+x只会显示^x 模式(^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)但是您的文章里是说可以的,ctrl+x有什么特别的使用条件吗
    2022-03-08
    1
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部