本文主要介绍我自己的Vim配置(Ubuntu 16.04,主要用于写Python和C++)以及管理方案(如何将Vim配置快速部署到新机子上)。接下来首先介绍一款强大的Vim配置,然后介绍如何在该Vim配置的基础上添加更多插件,最后给出一个Vim配置管理方案。
The ultimate Vim configuration
核心框架
The ultimate Vim configuration是一份强大的Vim配置,它使用了Pathogen作为插件管理器(关于Vim插件管理器的发展可以看这里),安装插件只需要把插件放到对应目录就好了(一般来说就是git clone)。按照指引安装完后,这份Vim配置的核心目录结构如下:
|
|
从以上目录结构可见,核心框架包含以下三部分:
- 自带插件
sources_forked和sources_non_forked中包含了自带的插件;vimrcs中的basic.vim包含插件无关的通用配置(e.g., 一个tab等于4个空格);plugins_config.vim中包含了针对自带插件的配置。
- 自定义插件
my_plugins是安装自定义插件的地方;my_configs.vim则用于编写针对自定义插件的配置和插件无关的通用配置(值得注意的是,因为my_configs.vim在最后的~/.vimrc中是最后一个被引用的,因此假如它的配置与其他.vim有冲突的话,以my_configs.vim中的配置为准)。
- 安装脚本
install_awesome_vimrc.sh包含修改~/.vimrc的代码。
使用方法
本节主要介绍自带插件的使用方法。
- 打开/关闭文件
,nn:在Vim中打开目录树;,f:查看最近使用过的文件;:W:以sudo权限保存文件;gf:当光标在一个路径上时,打开该文件。
- 编辑
gcc:注释选中的行;$123 / $q / $e:为选中的内容添加不同的括号/引号;Ctrl+s / Ctrl+x / Ctrl+p:多光标(同时选中多个相同的内容,重构的时候很有用);- 要实现这个功能,需要进行一些修改,参考这里。简单来说就是要在
~/.bashrc中加上stty -ixon。
- 要实现这个功能,需要进行一些修改,参考这里。简单来说就是要在
+ / _:在逻辑意义上扩展/收缩选中的内容(e.g., 变量,函数,类);- 要实现这个功能,需要再安装一些插件来告诉Vim怎么在逻辑意义上划分内容。以Python为例(参考这里),大概分为以下两步:
- 将vim-textobj-user和vim-textobj-python下载到
my_plugins; - 在
my_configs.vim中加上以下代码。
- 将vim-textobj-user和vim-textobj-python下载到
- 要实现这个功能,需要再安装一些插件来告诉Vim怎么在逻辑意义上划分内容。以Python为例(参考这里),大概分为以下两步:
|
|
更多插件
本节介绍如何在The ultimate Vim configuration的基础上,安装更多的插件,使Vim用起来更顺手。
- SimpylFold
- 功能:代码折叠插件,方便以不同层级去阅读代码;
- 安装:下载到
my_plugins文件夹中; - 使用:
za / zm / zr。
- YouCompleteMe
管理方案
用Vim的一个很大的motivation是通用性,也就是说在不同的机子上都能够用同一套顺手的IDE,这就对快速部署提出了要求。
下面介绍我自己的方案,大体来说分为以下步骤:
- 将The ultimate Vim configuration
fork到自己的Github上; - 通过
git submodule add xxx来安装插件;- 之所以不用
git clone是预防嵌套Git repository无法git push的问题。
- 之所以不用
- 每次更新完插件/配置后
git push到自己的Github; - 在一台新的机子上,用
git clone --recursive从自己的Github上下载配置文件--recursive表明要把submodule都下载下来
- 运行
install_awesome_vimrc.sh安装Vim配置