记录vim @ ubuntu环境配置
工作中会零零星星用到vim, 主要是处理linux上的一些编辑问题,但很少直接在工作中用vim写程序。当然,有些公司是用vim写程序的,主要是那些经常使用脚本(比如python
和php
)的公司。不使用键盘真的可以极大的提高编辑效率和避免思路被打断,所以我一直试图使用vim
来编写程序。这几天有空,在移动硬盘上安装了ubuntu, 尝试来配置一个好用的vim环境,以后有需要就可以直接启动到我移动硬盘上的ubuntu系统(虽然用虚拟机vmware或virtualbox也可以,但是感觉有点卡)来使用。不得不说,`ubuntu linux做的还是相当漂亮的!
1. 安装dot-vimrc
虽然直接自己配置vim配置文件也是可以的,我之前配置过,但是由于没有深究,总的来说不是很满意,也不是很美观。我发现github上有很多可用的配置,比如用这个dot-vimrc, 按着说明一步步来:
$ sudo apt-get install vim
$ sudo apt-get install vim-gtk
$ sudo apt-get install ack-grep ctags
$ git clone git://github.com/humiaozuzu/dot-vimrc.git ~/.vim #.vim这个目录都是从github下载的
$ ln -s ~/.vim/vimrc ~/.vimrc
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle # 安装vbundle
$ vi
# then in vim :BundleInstall
使用之前可以到vim_tutorial先复习一下vim的小知识。
真的很方便,现在使用下vim编辑下python吧。
看github作者的描述,应该可以自动补全的呀?是哪里没有配置对吗?对本文件中出现的符号可以补全,但是对库中的没有提示。由于对vim的具体插件原理不太了解,不知道咋解决。本想着使用github的配置可以不用具体研究这部分内容的,看来要真正的让vim为自己解决问题,还是要下功夫了解下vim的插件配置方法,这样才能借鉴别人的配置。
2. 了解vim的配置文件
好吧,那我们先来研究一下vim的基本配置吧。
有个神奇的命令 vim --version
,里面有vim的功能列表,和vim的编译命令行,还有配置文件的信息:
系统 vimrc 文件: "$VIM/vimrc"
用户 vimrc 文件: "$HOME/.vimrc" # 这个就是我们关心的用户使用的配置文件!就在用户目录~
进去用户目录看看有哪些vi相关配置:
$ ls ~ -al | grep vi
drwxr-xr-x 5 szw szw 4096 10月 3 22:04 .vim #目录
-rw------- 1 szw szw 12819 10月 7 12:29 .viminfo
lrwxrwxrwx 1 szw szw 20 10月 3 20:48 .vimrc -> /home/szw/.vim/vimrc #配置文件
$ vi .vimrc #打开配置文件
可以看到这个文件实际上已经被ln -s ~/.vim/vimrc ~/.vimrc
链接到了~/.vim/vimrc
, 而且内容是刚从github下载下来的。
vimrc实际上是用vim script写的配置脚本。这种脚本语言的语法可以参考learnvimscriptthehardway。
那么viminfo是干嘛的呢,还是打开看一下vi ~/.vim/vimrc
:
这是vim自己产生的文件,包含命令历史记录子类的运行信息。看来不用我操心了。那看下.vim
下面都有些啥吧:
:~/.vim$ ls -al # 这个是从github目录克隆下来的
drwxr-xr-x 43 szw szw 4096 10月 7 12:15 bundle # bundle插件管理(关心
-rw-r--r-- 1 szw szw 2535 10月 3 20:48 bundles.vim # bundle插件管理 (关心)
drwxr-xr-x 8 szw szw 4096 10月 3 20:48 .git # git 使用
-rw-r--r-- 1 szw szw 318 10月 3 20:48 .gitignore # git 使用
-rw-r--r-- 1 szw szw 9472 10月 3 20:48 README.md # 说明文件
drwxr-xr-x 2 szw szw 4096 10月 3 20:48 screenshots #截图
-rw-r--r-- 1 szw szw 8391 10月 3 20:48 vimrc # vim配置文件 (关心)
有三个我们关心的文件和目录。其中,vimrc
是刚才看过的配置文件,bundles*
具体是些什么呢?
3. 了解vundle插件管理
如上图,在vimrc
的第一行source ~/.vim/bundles.vim
实际是载入了bundles.vim
的配置,也就是说bundles.vim
其实就是vimrc
文件的一部分啦。那我们看看这个文件里面都有啥,在这之前先了解下vbundle
:
下面是vundle的安装命令:
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim #安装vundle.和之前的命令有差距哦? 浏览器中试了一下https://github.com/gmarik/vundle.git 其实会重定向到 https://github.com/VundleVim/Vundle.vim.git,可能是改了url了?
vbundle 是 vim bundle的简写,是一个 Vim 插件管理器. 详见 Vundle.vim
注意看3 Configure Plugins: Put this at the top of your .vimrc to use Vundle.
这部分其
实说明了bundles.vim的内容
打开bundles.vim,里面比较关键的一行:
set rtp+=~/.vim/bundle/vundle/ # set the runtime path to include Vundle 这个目录就是vundle安装的位置
call vundle#rc() # initialize
Bundle 'Shougo/neocomplcache' ## 配置的插件,见https://github.com/Shougo/neocomplcache.vim
...
看看这个目录:
~/.vim/bundle/vundle$ git remote -v #远程库地址
origin https://github.com/gmarik/vundle.git (fetch)
origin https://github.com/gmarik/vundle.git (push)
~/.vim/bundle/vundle$ ls # 和github上一样
autoload changelog.md CONTRIBUTING.md doc ftplugin LICENSE-MIT.txt README_KR.md README.md README_ZH_CN.md README_ZH_TW.md syntax test
4. 自动补全问题
好了,基本的配置文件已经搞清楚了,现在看看不能自动补全的问题, 下面分析下相关插件配置:
- 关键字补全
Bundle ‘Shougo/neocomplcache’ - html标签补全
Bundle ‘mattn/emmet-vim’ - 补全引号、括号等
Bundle ‘Raimondi/delimitMate’ - 插入时使用tab键补全
Bundle ‘ervandew/supertab’
看来neocomplcache才是和python补全相关的。
检查dot-vimrc文档,在Code Completions -> Dependencies中,需要Compile Vim with –enable-pythoninterp。vim --version
检查没有。好吧,那就重新编译吧。记得在重新编译前要把当前安装的vim删除。
$ sudo apt remove vim vim-runtime vim-tiny vim-common vim-gui-common
$ sudo apt install python3.6-dev
$ git clone https://github.com/vim/vim.git
$ sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \
libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \
libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \
python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git
$ ./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-pythoninterp=yes \
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 --enable-cscope --prefix=/usr
$ make VIMRUNTIMEDIR=/usr/share/vim/vim80
$ sudo make install
再编辑python可以正常提示了, 好吧,终于解决了问题:
5. 主题 color scheme
在命令行模式下输入:color
可以看到当前的主题是solaried
, 这个主题有点看不太清楚。在vimrc
文件中可以设置:
"--------
" Vim UI
"--------
" color scheme
set background=dark
color solarized ## 这里可以修改主题,这个默认solarized主题确实很漂亮,但貌似有点看不清楚