emacs断断续续用了好几年了,却还是觉得不熟练,主要是自动补全和自动提示,感觉在emacs里弄起来太复杂了。今天准备用vim来试试,看能不能方便点。
不管在win下还是在linux下,安装好gvim后,把taglist,minibuffer,omnicppcomplete三个插件拷贝到 vim的插件目录下(linux下可以放在用户目录的.vim下,windows的话可以放在vim安装目录的vimfiles下),然后重启gvim插 件自动就生效了。
minibuffer:当同一个vim打开多个buffer的时候,minibuffer自动在顶头处打开一个小buffer,挨个显示每个buffer,直接在buffer处双击就可以切换。
taglist和omnicppcomplete都需要ctags的支持,linux上可以用apt安装,或者下载源代码自己编译安装,windows可以下载官方编译好的版本放在vim安装目录下。
taglist:只要vim能在path路径中找到ctags命令,taglist就可以成功运行,方法是执行命令:Tlist,再次执行可以关 闭。taglist启动后,打开一个源代码文件会自动在左侧的taglist buffer显示文件的tag列表,可以通过鼠标或键盘在tag间跳转。
omnicomplete是vim自带的一个插件,用来实现代码自动提示的(可以实现c但不能实现c++自动提示),先要为工程生成ctags文 件,用命令ctags -R命令生成ctags文件,然后在vim中用命令:set tags+=/path/to/ctags把生成的ctags文件加入到ctags列表中,这时在结构体的.或->后按C-X,C-O就会弹出提示 列表了。另外还有C-X,C-I等选项,具体的看文档。默认的自动提示会用一个小buffer显示详细信息,可以用set completeopt=longest,menu让它只显示一个详细菜单,以节约屏幕空间。
omnicppcomplete:自带的omnicomplete不能实现c++的自动提示,c++还需要另外一个插件 omnicppcomplete的帮助,安装好omnicppcomplete后重启vim,omnicppcomplete会自动注册c++语言的自动 提示。不过用ctags -R生成的ctags文件信息对于c++来说还嫌不够,需要用ctags —c++-kinds=+p —fields=+iaS —extra=+q来生成ctags文件,它会加入c++一些特有的信息,这时omnicppcomplete就可以为c++实现自动提示了。并且 omnicppcomplete会在c++中打入.或者->时自动弹出提示,不需要按C-X,C-O了,这样就更方便了。当然,要在没有.或 ->的地方需要提示仍然可以按C-X,C-O。
自动跳转:有了ctags文件之后,还可以在vim中实现自动跳转,方法是在把光标移动到要跳转的变量上,按CTRL-],会根据ctags文件的内容自动跳转到相应的定义去,再按CTRL-T会跳会原先的位置。
btw:vim中实现buffer中自动补齐的按键是CTRL-N,类似于emacs中M-/的功能。