Vim最佳实践
是的,重新安装你的Vim。
默认安装的 Vim 不带 Python、Lua、Ruby 和 Perl 脚本支持。因此,你需要加入这些脚本支持,然后重新编译安装。在重新安装前,请先备份好 ~/.vim
目录中的内容和 vimrc 文件。
源码编译安装
以 macOS 系统为例,在 Vim 源码目录的 src 目录下有一个 configure 文件。运行 ./configure --help
可以查看一些编译选项,从中添加你想要的选项。在添加 --enable-pythoninterp
选项时,一定要带上 --with-python-config-dir
选项,用来指向你的 Python 配置目录。在 macOS 系统中,这个值一般是 /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
。另外,请勿使用 Homebrew 安装的 Python,因为编译过程中会找不到 Python frameworks。如果配置有问题,可以查看 src 目录中的 auto/config.log
文件来查看详细错误。编译成功后,会在 src/macvim/build/release
目录生成 dmg 安装包。
从 Homebrew 中安装
Homebrew 是一个可以下载源码并编译安装的软件包管理器。在执行 brew install macvim
之前,可以使用 brew edit macvim
来编辑一些编译选项。只需在 args = %w[]
的中括号内添加 configure
的编译选项。编译过程中产生的错误日志可以在 ~/Library/Logs/Homebrew/macvim
目录下查看。
重新安装所有的插件
在没有包管理器之前,Vim 的插件安装非常不便。每个插件都需要手动复制 .vim 文件和 doc 文件到特定目录,安装过程麻烦且容易出错。此外,Vim 也没有提供插件升级机制,用户需要自己去检查插件是否有新版本,然后重新复制文件进行安装。这种方式非常不友好,因此大部分人不会想着去升级插件。
幸好有了 Vundle 这个工具。它基于 GitHub 仓库来安装和更新插件。只需在 vimrc 中配置好 Bundle 项即可完成插件的安装与更新。但请注意正确填写 Bundle 的名称,否则会找不到相应的 GitHub 仓库。此外,可以在这里中搜索到几乎所有的 Vim 插件。安装完插件后,将之前备份好的 .vim 文件夹下的 color 和 syntax 目录复制到新的 .vim 文件夹中,因为这两个目录下的内容不需要 Vundle 管理。
你不应该使用的东西
自动补全
相信我,Vim 只是一个编辑器,很难达到 IDE 那种自动补全的效果。刚开始没有自动补全可能会不习惯,写代码速度会慢一点,但习惯了之后会有很多好处。首先,你的代码命令会非常规范,不会出现单词和大小写错误的问题。其次,不使用自动补全会让你对代码理解更深刻。当然,如果你写的是 Objective-C 这样的代码,还是乖乖用 IDE 的自动补全吧,否则会非常不便。
不要试图将 Vim 打造成 IDE
网上有很多“将你的 Vim 打造成 IDE”一类的文章,不要去看这些文章并按照它们的建议安装一些不解决你实际问题的插件。既然选择使用编辑器,就不要试图将其改造成 IDE 的环境。使用编辑器的方法得当,可以比 IDE 更高效。
不要使用别人的配置文件
网上有很多公开的 vimrc 文件,有些高手的配置文件确实非常出色。但那是别人的配置,别人有自己的习惯与偏好。配置文件最好根据自己的习惯来设置,特别是一些修改了快捷键的配置文件,很难快速适应。此外,不要盲目使用别人推荐的插件。大部分插件是为了解决特定问题而开发的。如果一个插件你并没有经常用来解决你的问题,那么这个插件迟早会被遗忘在角落里。而且不常用的插件命令会增加不必要的记忆负担。
一些你应该知道的高级技巧
标签(tag)跳转与缓冲区跳转
Vim 默认集成了 ctags 的接口,使用 ctags 生成 tag 文件后,可以使用 ctrl+]
跳转到函数的定义与声明,使用 ctrl+o
可以跳回上一个缓冲区,ctrl+i
可以跳到下一个缓冲区。这三个快捷键基本上可以满足你在代码中到处跳转的需求。
标记(mark)
上述的跳转功能比较弱,属于盲跳。Vim 自带的 mark 可以让你有目的性地跳转。在命令模式下,使用 m
加一个字母可以设置一个标记。添加好标记后,使用 '
(单引号)加上标记的字母可以跳到指定的位置,并且这种跳转还可以跨文件。比如:使用 ma
添加一个标记,然后使用 'a
跳到刚才的标记。使用命令 :marks
可以查看所有设置的标记,其中 0~9
是最近编辑的文件。
寄存器(register)
Vim 的寄存器功能类似于 mark,但它记录了你最近删除与复制的文字。你可以将一段文字复制到特定寄存器中,然后再从寄存器中取出。使用 visual 模式选择一段文字,在命令模式下使用 "ay
将这段文字复制到名为 a 的寄存器中。需要使用 a
中的文字时,使用 "ap
命令即可。使用 :reg
命令可以查看所有的寄存器,其中 0~9
显示了最近删除与复制的文字。
宏(macro)
Vim 的宏是用来录制一段动作并保存到命名的宏中。在命令模式下使用 qa
命令(a 代表宏名,可以是其他字母或数字)。此时状态栏左侧会显示 recording,然后进行一些操作,完成后在命令模式下使用 q
退出录制。之后可以使用 @a
播放这段宏。如果需要连续执行 10 次,使用 10@a
即可。
Reference