本文主要介绍我自己的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配置