写在前面
每次都觉得我的vim走上正轨了
three months later…
卧槽 这什么bug?这个插件怎么用来着?那个命令怎么写来着?
three days later…
“我又好了!”
为了再次避免这种情况,打算把每次学到东西记录下来。查博客总比查百度高效一些。由于只是记录当前学到的东西,
又因为认识的片面性,
所以可能会有错误,反正后面发现是错误了,再在后续的杂记里更正就是了。
1.1
关于Vundle
使用Vundle
插件进行Vim插件的统一管理,包括安装、卸载等功能。 一般单独开一个文件.vimrc.bundles
列出所要加载的插件,在.vimrc
里需要载入该文件。 在.vimrc.bundles
中列出所需插件之前,需要先将Vundle
的代码包加入vim的运行时路径:
1 | set rtp+=~/.vim/bundle/Vundle.vim/ |
其中rtp
应该是runtime path的意思,vim有自己的运行时来解析执行vimscript脚本,想要调用预先定义在文件中的函数,自然需要将这些文件地址加入运行时地址列表。我猜后面其他插件的文件路径都是由Vundle负责加入rtp
的。
在下面这样的代码块中加入所需要使用的插件
1 | call vundle#begin() |
注意Vundle必须是第一个列入的插件。call
是vimscript中的函数调用,#
类似python或java中的.
。如果不打算使用某插件可以注释掉对应的Plugin
那一行,而不需要卸载。
安装插件
在.vimrc.bundles
加入Plugin xxx/xxxxxxx
,保存文件后在vim下执行
1 | :PluginInstall |
卸载插件
在.vimrc.bundles
注释Plugin xxx/xxxxxxx
,保存文件后在vim下执行
1 | :PluginClean |
1.2
ultisnips
是一个snippets的引擎,vim-snippets
里面有很多常用的脚本。这两个插件需要配合使用。- 发现自己的
ultisnips
有bug,然后我重装了,然后出现更大的bug,查了半天是github上的最新版本的代码支持python3了,但是我的vim只支持python2, 于是手动下了github上之前版本的代码放入.vim/Bundle
文件夹。 但是还是有bug,发现我的Enter
键没法回车了,查了半天bug,甚至阅读了ultisnips
的部分代码(主要是./autoload/UltiSnips/map_keys.vim
和./autoload/UltiSnips.vim
),经过各种调试发现是,somehow,我的vim在select模式下<c-m>
和<cr>
是捆绑的,我配置了用<c-m>
来展开,结果就导致了<cr>
也映射到了展开snippets的命令上。。。TAT。最后试了几个键发现c-l
是好用的,也顺手。 - 另外,我观察到在打开vim的瞬间,ultisnips会先跑两个样例,如果这两个样例有问题,就会在打开vim的时候报错,一般情况下用户是察觉不到这个过程的。
inc
、incc
、mainn
、fori
都是c语言中常用的snippets- 在我的配置中
<c-l>
可以进行展开或者跳到下一个placeholder,<c-k>
回到上一个placeholder。 :UltiSnipsEdit
可以查看对应当前编辑文件的snippet配置文件
1.3
在vim插件的代码中可以通过verbose map **
和echo
进行调试。:map
、:snoremap
等可以查看对应模式下的按键映射。关于按键映射的知识点,可参考https://blog.csdn.net/u012291393/article/details/78650512
1.4
多行缩进
1 | :10,20> |
跑Python代码
1 | :py import sys; print(sys.version) |
多行注释: ctrl+v进入列编辑模式,在编辑模式中,在行间上下移动光标,选择需要编辑哪些行的对应的列,之后使用I(大写)进入列插入。 插入注释符,按Esc退出列编辑模式即可实现多行注释。
删除注释:按v,进入visual模式,横向选中列的个数(如”/ /“注释符号,需要选中两列),再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号。
- Post title:VIM杂记(一)
- Post author:shaw
- Create time:2020-03-09 17:23:18
- Post link:https://www.zenwill.top/2020/03/09/VIM杂记-一/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.