vim配置以及使用vundle管理vim插件

搬到linux后,需要使用装逼利器vim,奈何界面不够萌萌哒,于是上网搜索vim的配置以及插件,然后经过自己的一番折腾,找了一些不错的插件,自己弄了一个vim配置。

vimrc下载地址传送门 另外推荐一个:k-vim

先来一张预览图:
预览

安装步骤

1、git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
2、git clone https://github.com/shuimu98/domi-dotfile.git
3、cp domi-dotfile/.vimrc ~/
4、打开vim,输入命令 :PluginInstall

这里需要注意,一开始还没有安装插件,所以打开vim会报很多错误,不用管,一路enter下去,装完插件之后,重新打开vim,如果还有报错,就需要自己仔细检查下了。

vim基础配置

这部分主要包括vim的一些基础配置,例如显示行号、括号配对等,大部分的设置在我的配置里面已经有了注释,不详细说明。 另外,tagbar等插件需要ctags支持,自行安装。

一些小技巧:

  • 输入 vim –version 可以查看vim支持的特性,如果支持会有 “(+)”
  • 目前的vim版本的7.4,7.2升级到7.4尽量不要直接卸载vim,否则会出现很多蛋疼的问题,最好自己拉源码编译

一些按键注释:

  • <CR> 在vimrc配置中表示回车的意思
  • <C-w> 表示ctrl + v
  • <S-a> 表示shift + a
  • <A-w><Left> 表示 alt+w+ <--

vim默认的常用快捷键、命令

快捷键或命令备注
:vsplit分割屏幕(垂直分割)
:split分割屏幕(水平分割)
:!command运行vim外部环境命令(注意 “!”),如 :!ls -l,表示显示当前目录文件
:tabnew xxx新建名为xxx的标签,tab类的其他命令请自行百度。
:f查看vim正在编辑的文件的文件名
gt, gT可以直接在tab之间切换
gg跳到文件开头(小写的g连续按两次)
G调到文件尾部(大写G)
xxx + g调到xxx行(在一般模式下先按xxx行,再按g)
ctrl+s 和 ctlr+q这一组快捷键需要注意,其实是linux锁/解屏的快捷键,但是会导致vim僵死
Ctrl+f 和 Ctrl+b上下翻页
Ctrl+u 和 Ctrl+d上下翻半页
Ctrl+d 和 Ctrl+t插入模式下,向前和向后缩进
Ctrl+o 和 Ctrl+i正常模式下,回到上次位置和回到最后位置
/xxx在一般模式下,先按”/”,再输入要搜素的xxx,在按enter
#反向查找
*正向查找
dd删除整行
dw删除整词
yy复制整行
p粘贴
u撤销更改
ctrl+r恢复撤销
»右缩进(英文键盘模式下,按住 shift+>(连续按两次>键))
«左缩进
多行选中缩进按住shift+v,进入VISUAL LINE模式,选中多行,再 » 缩进

自定义的快捷键设置

常用快捷键,参考这里 另外我自己定义了一些我自己习惯用的快捷键。

快捷键或命令备注
F2资源管理器
F3TagbarToggle 开关
F4关闭窗口快捷键
F5C,C++编译运行
F7生成Tags文件
F8C,C++ GDB调试
F10编辑模式下,切换paste模式,解决vim复制缩进的问题
F11上一个窗口
F12vim窗口切换
Shift+lsvn log
Shift+dsvn diff
Shift+usvn update
Shift+csvn commit
Shift+rsvn revert

常用插件的快捷键

有些需要配置leader键,vim默认的leader键为 “\”(enter键上面的那个键)

插件快捷键或命令
scrooloose/nerdcommenter\cc:注释
\ci:取消注释
fatih/vim-go\dt:转到定义(新的标签页打开)
\ds:转到定义(水平分割窗口)
\dv:转到定义(垂直分割窗口)
kien/ctrlp.vimctrl+p:打开文件搜素
ctrl+d:在全路径搜索和文件名搜索间切换
ctrl+r:在字符串搜索模式和正则表达式模式之间切换

关于插件ctrlp切换搜索路径:

ctrl+p搜索是你当前路径的,如果要切换,可以在命令模式下输入cd .. or cd /path/to/youwant/ 就可以了。参考https://ruby-china.org/topics/12417以及ctrlp中文帮助文档

插件管理

使用vundle管理插件,具体安装方法不在赘述。

比较实用的插件:

  • Plugin ‘scrooloose/nerdtree’ 以树形结构浏览文件夹中的文件
  • Plugin ‘fatih/vim-go’ golang的vim插件
  • Plugin ‘fatih/molokai’ molokai主题
  • Plugin ‘Shougo/neocomplete.vim’ 实时代码补全提示,支持golang
  • Plugin ‘SirVer/ultisnips’ 代码模板,支持golang
  • Plugin ‘majutsushi/tagbar’ Tagbar 比 taglist 更现代的代码结构浏览工具
  • Plugin ‘kien/rainbow_parentheses.vim’ 括号显示增强
  • Plugin ‘scrooloose/nerdcommenter’ 快速 加减注释
  • Plugin ‘Raimondi/delimitMate’ 输入引号,括号时,自动补全
  • Plugin ‘kien/ctrlp.vim’ 文件查找
  • Plugin ‘altercation/vim-colors-solarized’ 主题配色插件
  • Plugin ‘vim-scripts/AutoComplPop’ 自动补全,与neocomplete有点冲突,推荐使用neocomplete
  • Plugin ‘vim-scripts/OmniCppComplete’ OmniCppComplete 自动补全,推荐使用
  • Plugin ‘vim-scripts/taglist.vim’ 标签导航 要装ctags
  • Plugin ‘Lokaltog/vim-powerline’ 状态栏插件
  • Plugin ‘vim-scripts/vcscommand.vim’ svn插件

出现的问题

问题一neocomplete requires Vim 7.3.885 or later with Lua support ("+lua").

出现这个提示是vim没有支持lua,输入命令

domi@ubuntu:~$ vim --version|grep lua
+dialog_con      -lua             +rightleft       +writebackup

lua前面有个“-”说明还没支持lua。

解决方法: 1、重新编译vim,添加lua支持,请参考这篇文章

编译vim和macvim带python和lua支持 首先,编译lua安装:

cd vim  
 ./configure --with-features=huge --enable-rubyinterp \    
 --enable-pythoninterp --enable-luainterp --enable-perlinterp \    
 --enable-multibyte --enable-sniff  --enable-fontset --enable-cscope \    
 --disable-gui --prefix=/usr  

相关参数:

(a) –with-features=huge:支持最大特性
(b) –enable-rubyinterp:启用Vim对ruby的支持
(c) –enable-pythoninterp:启用Vim对python的支持
(d) –enable-luainterp:启用Vim对lua的支持
(e) –enable-perlinterp:启用Vim对perl的支持
(f) –enable-multibyte:多字节支持 可以在Vim中输入中文
(g) –enable-sniff:Vim状态提示 提示Vim当前处于INSERT、NORMAL、VISUAL哪种模式
(h) –enable-cscope:Vim对cscope支持
(i) –disable-gui:不用编译生成图形界面版gvim
(j) –prefix=/usr:编译安装路径
(k) 更多参数执行./configure –help查看

然后,编译vim:

./configure –enable-cscope –enable-multibyte –enable-xim –enable-fontset –with-features=huge –enable-pythoninterp –enable-luainterp –enable-gui=gtk2 –enable-sniff –with-luajit

编译mac vim

./configure –with-features=huge –enable-pythoninterp –enable-luainterp –enable-cscope –with-lua-prefix=/usr/local

2、参考:https://github.com/Shougo/neocomplete.vim

neocomplete requires Vim 7.3.885+ compiled with if_lua. If :echo has("lua") returns 1, then you're done; otherwise, see below.

Make sure you have any of these packages:

vim-nox
vim-gtk
vim-gnome
vim-athena

问题二:当tagbar打开时,Easygrep的搜索结果窗口会跑到tagbar的窗口

原因是 easygrep默认打开quickfix 是使用 :copen,他会在最后一个窗口打开,所以他会跑到tagbar的下面。 google了一下,参考:

https://github.com/majutsushi/tagbar/issues/195
http://stackoverflow.com/questions/6726783/changing-default-position-of-quickfix-window-in-vim

解决办法: 去改掉(.vim/bundle/vim-easygrep/plugin/EasyGrep.vim)easygrep.vim里面的 copen,搜索copen 改为 bo copenbotright copen

例如: execute g:EasyGrepWindowPosition." botright copen"

然而我发现我傻逼了,还是需要仔细读帮助文档: 在.vimrc 里面直接设置 let g:EasyGrepWindowPosition = "botright" 就OK了