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

拓展5 | 其他插件和技巧:吴咏炜的箱底私藏

Python-mode
YCM
下一讲再见
安装/实验至少三个插件
编程工具的趣味性
有用和无用的区分
插件和技巧的介绍
为什么是 42?
查看光标下字符的内码
Home 键的行为
自动关闭最后一个 quickfix 窗口
行过滤
Killersheep
Matrix
Calendar
Markdown Preview
Largefile
Auto-pairs
Rainbow
Undowarning
Renamer
Syntastic 和 ALE
吴咏炜
课后练习
内容小结
技巧
插件
Vim 的插件和技巧大放送

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

你好,我是吴咏炜。
上一讲我介绍了最重要的一些插件。今天这讲拓展,我们就算是查漏补缺,再分享一些我个人这些年压箱底的收藏。这些插件和技巧有新有旧,都非常好用,欢迎你挑选感兴趣的内容,纳入自己的个人收藏箱。

插件

Syntastic 和 ALE

说到代码检查插件,我最早是从 Syntastic 开始用的,然后慢慢转向了 ALE。不过,我因为主要写 C++ 和 Python,所以慢慢放弃了使用这两个插件,转而使用对这两种语言支持较好的 YCM(第 13 讲)和 Python-mode(拓展 3)。
虽然 YCM 和 Python-mode 集成的工具比较有限,比如 YCM 对 C++ 的代码检查仅限于 Clang 系列工具提供的支持,而不像 Syntastic/ALE 还可以选择很多其他的工具,但是,它们对我来讲还是够用了——何况对于 C 和 C++,要让 Syntastic 或 ALE 干活的话,大部分情况下需要配置头文件包含路径和编译选项,也是件麻烦事。
不过,对于其他语言的开发者,Syntastic/ALE 可能还是非常有用的。
先说 Syntastic。这是一个老牌的代码检查插件,其 1.0 版本发布在 2009 年。这些年下来,这个插件里积累了好几十种语言的代码检查支持,既有常见的 C、C++、Python、Java、JavaScript 等语言,也有冷门一点的 ACPI、AppleScript、Julia、VHDL、z80 汇编等语言。对于每种语言,它能自动识别已经安装的代码检查器,并在你文件存盘时自动检查代码(也可以手工使用 :SyntasticCheck 命令来检查)。要检查当前文件 Syntastic 识别到了哪些代码检查器,可以使用 :SyntasticInfo 命令;而在 ALE 中没有等价的好用命令。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

吴咏炜在文章《Vim 插件和技巧大放送:吴咏炜的箱底私藏》中分享了多年来积累的 Vim 插件和技巧。他介绍了一些代码检查插件,如 Syntastic 和 ALE,以及其他实用插件,如 Renamer、Undowarning、Rainbow 和 Auto-pairs,涵盖了代码检查、文件操作、编辑提醒和大文件处理等方面。此外,他还分享了一些有趣的插件,如 Markdown Preview、Calendar、Matrix 和 Killersheep。除了插件,他还分享了一些实用的 Vim 技巧,如行过滤、自动关闭最后一个 quickfix 窗口、Home 键的行为修改以及查看光标下字符的内码。总的来说,这些插件和技巧为 Vim 用户提供了丰富的工具和功能,不仅提高了编辑效率,还增加了一些有趣的功能和娱乐性。读者可以根据自己的需求选择安装和实验这些插件和技巧,为自己的编程工作带来更多便利和乐趣。

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

全部留言(9)

  • 最新
  • 精选
  • 吴咏炜
    置顶
    再推荐一个今天发现的很酷的插件,对付 CSV 很棒: https://github.com/mechatroner/rainbow_csv 这个不仅提供了 CSV 文件的加亮,还能使用类 SQL 的 :Select 命令来进行选择和排序! 如果想把 CSV 文件对齐的话,可以考虑使用这个插件: https://github.com/godlygeek/tabular 最简单的对齐命令可以是“:Tabular /,”。如果你的 CSV 文件里有引号里的逗号的话,可能需要一个更复杂的正则表达式来对齐,如: Tabularize /\%("\%([^"]\|""\)*"\|[^,"]*\),/l0
    2020-09-25
    2
    2
  • 我来也
    老师连压箱底的东西都拿出来了,我们赚到了哈。 # Syntastic 和 ALE 前面这个插件已经被我屏蔽了,后面这个还保留着在。 当时是安装了coc.nvim后,觉得功能有些重复了。 # Renamer 看上去还不错,抽空了试试。 # Undowarning 这个功能是我想过,但是没花精力折腾过的。 我一般会用`:e`来重新载入文件内容,但是无法处理打开了文档,中途又存过档的问题。 不支持包管理就Fork一下,自己折腾一下吧。 毕竟现在还要手动下载安装有点麻烦。 # Rainbow 这个插件很早就装了,配置中有一段参考了这个: https://github.com/luochen1990/rainbow/blob/master/README_zh.md 具体为啥已经忘记了。 虽然安装的早,但是真正发挥这个插件的价值,正是从老师这学会开启了`termguicolors`配置后。 之前的可选颜色很少,效果并不明显。现在每一层级的括号都是鲜明的颜色,简直不能再好了。 # Auto-pairs 我对这个插件真是又爱又恨。 默认的配置中,我只添加了一项: `let g:AutoPairsMapCh = 0 " 不需要修复<C-h>删除前面的字符` 因为这个按键已经被我映射为了在插入模式中移动光标,而不是删除字符了。 对它爱的地方是真的方便。 对它恨的地方是有个场景下的行为不是我想要的。 例如: ``` let g:AutoPairsMapCh = 0 " 不需要修复<C-h>删除前面的字符 "<光标在这里> " jedi-vim插件映射了`<leader>n` 这里用不上 就禁用掉 ``` 如果我在光标的地方删除前面那个`"`,这个插件会人性化的把空行和后面的`"`也删除掉。 以至于我都养成了习惯,删除这个位置的"`"用`x`而不是`<Delete>` 今天学了专栏,知道还可以通过快捷键来切换插件的启用状态。 # Largefile 想不到还有插件搞这个事情,我得好好看看。 之前是参考的这里: https://vim.fandom.com/wiki/Faster_loading_of_large_files 大约十几行代码可以满足我的需求。 我之前用vim主要是看日志,动辄几百兆。用了它,打开大文件时终于不用去喝水了。 # Markdown Preview 除了`iamcco/markdown-preview.nvim`,我还安装了`plasticboy/vim-markdown`。 我也忘记为啥要安装两个了。 有了它后,在vim中写markdown文件,还可以在浏览器中实时的预览,是真的方便。 # Calendar 我安装的是`itchyny/calendar.vim` 但是说实话,我用的并不多,哈哈。 # Matrix 学习了 # Killersheep 升级vim到8.2时安装过。 # 行过滤 学习了。 之前好像是`grep -v`来实现相同的效果。 # 自动关闭最后一个 quickfix 窗口 这也是一个我一直想要的功能,哈哈。 有了它,再也不用多按一次`ZQ`了! # Home 键的行为 我好像在vim中没有使用过该键。 很多地方的Home键功能都被我用`<C-a>`来替代了。 我的配置中有这个配置: ``` " remap vim 0 nnoremap 0 ^ nnoremap ^ 0 ``` 交换了这两个键的行为。 相比之下还是0按的方便。 # 查看光标下字符的内码 学习了。

    作者回复: 最不可或缺的插件,你都会了,所以就得翻翻箱底啦。 Auto-pairs 我碰到的问题和你一样。也是 Vim 挑注释符号实在有点诡异啊。除了 Vim 脚本,基本上没遇到过奇怪问题。

    2020-09-07
    3
  • helloworld
    受本文启发, 我把0改成了第一次按将光标跳转到行首第一个非空字符, 再按一次才到行首, 因为0比^好敲一点, 而我们大多数的需求都是将光标跳转到行首第一个非空字符. 这样一改方便多了.

    作者回复: 我还是不喜欢改原生键的行为。Home 键的这个行为则是各种编辑器的惯例了……

    2021-07-09
    2
  • helloworld
    vim-scripts/LargeFile,这个插件试了下,文件打开速度提升不明显:283m的文本文件,不启用此插件vs启用此插件的打开时间对比,vim:15.04s,14.96秒,neovim:6.41s,5.87s,可见此插件用处不太大,想打开大文件速度快,用neovim替代vim就行了

    作者回复: 编辑大文件,用标准的设置应该会卡得多。提升不仅在打开上。

    2021-07-04
  • helloworld
    “要检查当前文件 Syntastic 识别到了哪些代码检查器,可以使用 :SyntasticInfo 命令;而在 ALE 中没有等价的好用命令。”,这句说的不太对,ale有 :ALEInfo 的

    作者回复: SyntasicInfo 里报告的 Available 是 Syntastic 检测到的当前机器上可用的代码检查器,而 ALEInfo 里报告的 Available 是 ALE 支持的代码检查器,两者不一样。

    2021-07-03
  • 我来也
    给大家再分享一个优化打开大文件的时间消耗经验. 昨天无意发现我打开一个大文件时非常耗时,3G文件居然耗时43s+。 这个瓶颈肯定不是在硬盘,所以我就用二分法定位到了两个配置项。 做了如下调整后,耗时缩减到了原来的1/3。 ``` " 禁用撤销文件 setlocal noundofile " 禁用相同缩进距离的行构成折叠 而使用手动折叠 setlocal foldmethod=manual ``` 优化前后的效果 ``` 耗时ms 优化前 43474.539: opening buffers 优化后 14411.636: opening buffers 不使用配置 13839.206: opening buffers ``` 可以看到,优化的效果还很明显,时间几乎与不使用任何`.vimrc`配置文件相当了。 以下是我的测试语句 ``` vim --startuptime startuptime.log +qall 3.log ; grep 'opening buffers' startuptime.log | tail -n3 vim --startuptime startuptime.log -u NONE +qall 3.log ; grep 'opening buffers' startuptime.log | tail -n3 ``` 以下是我的完整配置 ``` " 以上的配置文件中,当文件大于2MB,不启动语法高亮在内的一切附加功能 " file is large from 2MB " https://vim.fandom.com/wiki/Faster_loading_of_large_files let g:LargeFile = 1024 * 1024 * 2 augroup LargeFile autocmd! autocmd BufReadPre * let f=getfsize(expand("<afile>")) | if f > g:LargeFile || f == -2 | call LargeFile() | endif augroup END function! LargeFile() " no syntax highlighting etc set eventignore+=FileType " save memory when other file is viewed setlocal bufhidden=unload " is read-only (write with :w new_filename) " setlocal buftype=nowrite " no undo possible setlocal undolevels=-1 " 不保存撤销文件 setlocal noundofile " 开启手动折叠功能 setlocal foldmethod=manual " display message autocmd VimEnter * echo "The file is larger than " . (g:LargeFile / 1024 /1024 ) . \ " MB, so some options are changed (see .vimrc for details)." endfunction ```

    作者回复: 跟 LargeFile 插件对比过吗?主要功能区别和效果差异是什么?

    2020-09-29
    2
  • 湟水鱼儿
    没想到vim里还有搭车客中的彩蛋

    作者回复: 还可以 :help holy-grail 以前还曾经用 help! 能出来 Don't panic.

    2020-09-08
  • helloworld
    “希望能够无限制地进行编辑撤销,同时还想在退回打开文件的状态之前能有一个提醒,那 undowarning.vim 可能就是你想要的。”,一直有这个困扰,这回可以解决了😄
    2021-07-03
  • pure_black
    :smile 前来报道。
    2020-12-05
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部