Chinaunix首页 | 论坛 | 博客
  • 博客访问: 415629
  • 博文数量: 54
  • 博客积分: 1186
  • 博客等级: 少尉
  • 技术积分: 668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-11 04:57
文章分类

全部博文(54)

文章存档

2013年(1)

2012年(6)

2011年(47)

我的朋友

分类: BSD

2011-05-06 07:01:22

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来移动菜单项,也可以直接用方向键来移动菜单项。
阅读(4634) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~