FreeBSD下VIM开发环境配置
以前没正正经经的用过VIM,只会几个简单的命令,这次整整在VIM下工作了两天,才发现很多地方用着不顺手。大概归为以下几点:
1. 调试
我的VIM只有一个语法高亮功能,其它什么插件也没装。用VIM写了一个简单的C++测试程序,光调试就花了一个晚上。有变量大小写输入错误的问题;也有C/C++函数参数错误设置问题,这样效率太慢了。了解到GDB调试工具很强大,但找了下资料,没发现在详细的教程,暂时还不会用。
2. 函数调用
不管是调用库函数还是自定义函数,在VIM下都没一点儿提示,这很让人头痛。在写测试程序时,就因为函数调用的问题调试了半天。
3. 多文件切换
其实我不要求在Linux/Unix下有着VS那样复杂的IDE界面,有一个TC那样的IDE也不错呀。VIM也是可以实现多文件切换的,使用“vim 1.c 2.c 3.c”来打开多个文件,然后用:wnext/:next和:wprev/:prev来进行文件跳转,不过效率太低。
最终问题其实只有一个,就是开发效率低。其实我是很喜欢CUI的,以前学电脑就是因为喜欢打字时键盘发出的那种有节奏的声音,而且接触的第一个操作系统是DOS。但在VIM写代码我才发现,敲命令的时间大于自己思考的时间。当然,效率低的原因只是我自己不熟悉VIM而已。
VIM提供了接口功能,可以通过插件来实现更多的功能,以满足开发者的需求。那就搜寻插件,来配置自己的开发环境吧!
参考教程 http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
1. minibufexpl.vim
下载地址:
功能:多文件切换
minibufexpl插件只有一个.vim文件,下载解压后将其复制到VIM安装目录的plugin目录下即可。VIM的默认安装路径为/usr/local/share/vim/vim72
重启VIM,如果打开了两个以前的文件,就可以看到minibufexpl的界面了(如图1)。
在如图1中,共有三个缓冲窗口,上方显示的是打开的文件列表,下面两个窗口显示的是两个文件中的内容,这样就可以很方便的在多个文件中切换了。
2. A.vim
下载地址:
功能:源文件之间的跳转
快捷键:
:A 在新Buffer中切换到c\h文件
:AS 横向分割窗口并打开c\h文件
:AV 纵向分割窗口并打开c\h文件
:AT 新建一个标签页并打开c\h文件
3. QuickFix
功能:这个插件是VIM自带的,可以查看编译错误信息
快捷键:
:cw 显示QuickFix窗口
:cn 切换到下一个结果
:cp 切换到上一个结果
4. ctags
在FreeBSD下系统自带的ctags不是网上教程中所说的ctags,因为教程作者的系统多是Linux,而Linux中的ctags在FreeBSD下其实为exctags。
下载地址:
可以直接用ports安装
# cd /usr/ports/devel/ctags/
# make install
安装程序会把生成的ctags执行文件覆盖FreeBSD原有的ctags程序,但是好像不会复制成功。安装完成后再执行“ctags --help”,发现没有help参数,那就说明没有覆盖掉原有的ctags。那么就手动来覆盖吧。
FreeBSD自带的ctags路径:/usr/bin/ctags
exctags的安装路径:/usr/local/bin/exctags
所以将/usr/bin/ctags删除,并把/usr/local/bin/ctags复制到/usr/bin下即可。
这时再执行“ctags --help”命令就可以看到exctags的命令参数了。
接着在项目根目录下执行“ctags -R”生成tags文件。
然后修改.vimrc,增加如下内容:
function UpdateCtags()
let curdir=getcwd()
while !filereadable("./tags")
cd ..
if getcwd() == "/"
break
endif
endwhile
if filewritable("./tags")
!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
"!ctags -R –c++-types=+px –excmd=pattern –exclude=Makefile –exclude=.
endif
execute ":cd " . curdir
endfunction
nmap :call UpdateCtags()
这样在VIM中,只要按F2键就可以自动更新tags了。
快捷键:
Ctrl+] 查看函数定义
Ctrl+t 返回
5. omnicppcomplete(代码自动补全)
1) 安装unzip
cd /usr/ports/archivers/unzip
make install clean
2) 安装omnicppcomplete
fetch -o omnicppcomplete-0.41.zip ""
unzip omnicppcomplete-0.41.zip -d ~/.vim
cd /usr/include
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
cd /usr/local/include
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
最后编辑.vimrc,添加如下内容:
set tags+=/usr/include/tags
set tags+=/usr/local/include/tags
set tags+=./tags
"-- omnicppcomplete setting --
set completeopt=menu,menuone
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DisplayMode=1
let OmniCpp_DefaultNamespaces=["std"]
set nocp
filetype plugin on
hi PmenuSel ctermfg=7 ctermbg=4 "改变选中菜单颜色
"hi Pmenu ctermfg=7 ctermbg=4 "改变菜单颜色
======VIM常用快捷键========
Ctrl+W n
新建窗口
Ctrl+W q|:q
关闭窗口(不关闭文件)
:bd
关闭窗口关关闭文件
Ctrl+W 方向键
按下Ctrl+W键后,就可以使用方向键来在各个缓冲窗口中进行切换了。如果切换到文件列表缓冲窗口中,可以使用Tab键来定位文件,然后按Enter键即可在下面的缓冲窗口中显示文件内容。
:vsplit filename|:split filename
新建一个窗口打开文件
:e filename
当前窗口打开文件
调整窗口大小
http://www.cnblogs.com/xuechao/archive/2011/03/29/1999292.html
:sh
进入shell。这样就不用每次编译时都退出VIM了。
Ctrl+D
退出shell
Shift + 6
行首非空
gg
文件首
G
文件尾
数字键 方向键
将光标按指定方向移动指定行数,例2 ↑,即向上移动2行
v 方向键
从当前位置开始选择,可按ESC取消选择
V
选中当前行
d
删除选中的内容
+y
复制
+x
剪切
p
粘贴
ggVG
全选
:write|:w
保存文件
K
查看库函数定义
Ctrl+n|Ctrl+p
自动补全函数名,比如要输入sub_str这个函数,那么可以在只输入了sub之后按Ctrl+n来显示所有以sub开头的函数,然后用Ctrl+n或Ctrl+p来移动菜单项,也可以直接用方向键来移动菜单项。
阅读(1099) | 评论(0) | 转发(0) |