免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3907 | 回复: 4
打印 上一主题 下一主题

[FreeBSD] FreeBSD下VIM开发环境配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-04 14:15 |只看该作者 |倒序浏览
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

下载地址: http://www.vim.org/scripts/script.php?script_id=159

功能:多文件切换


minibufexpl插件只有一个.vim文件,下载解压后将其复制到VIM安装目录的plugin目录下即可。VIM的默认安装路径为/usr/local/share/vim/vim72

重启VIM,如果打开了两个以前的文件,就可以看到minibufexpl的界面了(如图1)。



在如图1中,共有三个缓冲窗口,上方显示的是打开的文件列表,下面两个窗口显示的是两个文件中的内容,这样就可以很方便的在多个文件中切换了。

2. A.vim

下载地址:http://www.vim.org/scripts/script.php?script_id=31

功能:源文件之间的跳转

快捷键:

: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。

下载地址: http://ctags.sourceforge.net/

可以直接用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 <F12> :call UpdateCtags()<CR>

这样在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 "http://www.vim.org/scripts/download_script.php?src_id=7722"
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来移动菜单项,也可以直接用方向键来移动菜单项。

原文出处:http://www.zzt123.com/html/2012/0731/1343721420.html

评分

参与人数 2可用积分 +6 收起 理由
ulovko + 2 很给力!
gvim + 4 赞一个!

查看全部评分

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
2 [报告]
发表于 2012-08-04 14:16 |只看该作者
感谢分享 ^_^

论坛徽章:
0
3 [报告]
发表于 2012-08-05 09:26 |只看该作者
写的不错,BSD系统里的ctags还是早期的,并不是后来从elvis的ctags发展而来的exctags.  有个小建议,还是不要直接删除基本系统里的ctags,可以在配置文件里指明使用exctags,比如使用全路径. 而且ctags实在基本系统中(/usr/bin),exctags在ports中(/usr/local/bin/),是不会覆盖的

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
4 [报告]
发表于 2012-08-05 13:50 |只看该作者
回复 3# wolf_london

基本系统里面的ctag是删除不掉的,除非手工rm。

论坛徽章:
0
5 [报告]
发表于 2012-08-17 11:09 |只看该作者
fender0107401 发表于 2012-08-05 13:50
回复 3# wolf_london

基本系统里面的ctag是删除不掉的,除非手工rm。

哦哦 是这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP