把VIM打造成一个真正的IDE(1)

这里所说的IDE主要是指C/C++开发,但是由于笔者之前也搞java和c#开发,所以对这两种语言也会有所兼顾。

这个话题可能要分好几篇文章来写了,今天主要讲一下最简单的,包括vimrc里面的基本配置,让vim能够完美支持各种源码文件;

vimrc配置如下(为简单起见,采取注释的方式直接说明):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
if(has("win32") || has("win95") || has("win64") || has("win16")) "判定当前操作系统类型
    let g:iswindows=1
else
    let g:iswindows=0
endif
set nocompatible "不要vim模仿vi模式,建议设置,否则会有很多不兼容的问题
syntax on"打开高亮
if has("autocmd")
    filetype plugin indent on "根据文件进行缩进
    augroup vimrcEx
        au!
        autocmd FileType text setlocal textwidth=78
        autocmd BufReadPost *
                    \ if line("'\"") > 1 && line("'\"") <= line("$") |
                    \ exe "normal! g`\"" |
                    \ endif
    augroup END
else
    "智能缩进,相应的有cindent,官方说autoindent可以支持各种文件的缩进,但是效果会比只支持C/C++的cindent效果会差一点,但笔者并没有看出来
    set autoindent " always set autoindenting on 
endif " has("autocmd")
set tabstop=4 "让一个tab等于4个空格
set vb t_vb=
set nowrap "不自动换行
set hlsearch "高亮显示结果
set incsearch "在输入要搜索的文字时,vim会实时匹配
set backspace=indent,eol,start whichwrap+=<,>,[,] "允许退格键的使用
if(g:iswindows==1) "允许鼠标的使用
    "防止linux终端下无法拷贝
    if has('mouse')
        set mouse=a
    endif
    au GUIEnter * simalt ~x
endif
"字体的设置
set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI "记住空格用下划线代替哦
set gfw=幼圆:h10:cGB2312

OK,有了上面的基本设置,一个好用的vim就配置好了,但是如果想让它完美支持各种源代码文件,想让它方便的注释,方便的进行代码提示,方便的添加用户信息,那还差的很远哦,就请期待下一篇吧-----把VIM打造成一个真正的IDE(2)

版权所有,转载请注明出处。www.vimer.cn





原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]

本文链接地址: http://www.vimer.cn/?p=91

25 个评论 在 “把VIM打造成一个真正的IDE(1)”

  1. isunbo 说:

    你好!
    augroup vimrcEx{
    “实现打开同一文件时,vim能够自动记住上一次的位置
    }augroup END的效果看到了,但是代码没明白,以后慢慢看吧.
    还有就是关于鼠标使用的那段,au GUIEnter * simalt ~x,应该是在打开gVim后使窗口最大化的,但是为什么呢?

    [回复]

    Dante 回复:

    呵呵,vim内部定义了很多自动执行的命令,并且定义了自动执行的实际,比如GUIEnter 就是说在进入gui界面之后,BufNewFile就是新建文件之后,详细可以看官方的这篇文章:
    http://man.chinaunix.net/newsoft/vi/doc/autocmd.html 或者 在vim中输入:h autocmd

    [回复]

  2. zww 说:

    什么叫vimrc?

    [回复]

    Dante 回复:

    ……呃,呵呵……

    [回复]

  3. npr 说:

    您好,在中文字体设置的时候,我按您的文章输入:set gfw=幼圆:h10:cGB2312
    保存重新启动gvim后,没有报错,但是中文无法切换到 幼圆字体(字体系统中有)
    在网上搜索页没有类似问题,还请指点,谢谢!

    [回复]

    Dante 回复:

    额,这个问题是有朋友跟我反馈过了,需要在vimrc里面加入
    set enc=utf-8

    [回复]

    npr 回复:

    非常感谢楼主的答复,
    set enc=utf-8 后,还是没有效果,呵呵。
    看完了博主关于vim的帖子,有个疑惑还得向你请教一下(可能较弱智):
    用vim编写好C/C++代码后,如何编译运行?
    gvim菜单栏上的C/C++ 的run(也可以是ctrl+F9)后,提示:file ‘D:\src\cpp\****.exe’ does not exist or is not executable or object/source older then executable.

    [回复]

    npr 回复:

    google 搜索到用vimgdb 和clewn ,但鲜见详细关于二者在windows下配置和使用的文章,还请博主指点一下,谢谢!~

    [回复]

    Dante 回复:

    呵呵,其实本博第一篇文章就是介绍C++编译运行和VIM结合的,可以看一下~还是有疑问的话,随时提出~
    http://www.vimer.cn/2009/10/11.html

    [回复]

    Dante 回复:

    呃,很奇怪……那vimrc文件的编码是cp936吗?

    [回复]

    npr 回复:

    谢谢博主的及时答复!
    我是在安装中文帮助文档后运行gvim菜单栏为乱码,当时的解决办法为:到vim安装路径下C:\Program Files\Vim进入vimfiles的plugin打开vimdoc.vim 将set encoding设为set encoding=gbk ,
    所以没有使用cp936编码吧。。。

    [回复]

    Dante 回复:

    呵呵,我的意思是你的vimrc文件的编码哦,你打开vimrc文件,然后执行set fenc看看结果是什么

    [回复]

  4. lyndonjiang 说:

    博主,以前我跟你说过,参照你的配置文件我的vim记不住上次打开的文件的位置,今天我知道为什么了,你那句注释
    “实现打开同一文件时,vim能够自动记住上一次的位置
    不能加在autocmd BufReadPost *底下那几行后面,要加在autocmd BufReadPost *上一行才可以。
    我也不懂是为什么,但是我反复试验确实是如此。。。

    [回复]

    ideepblue 回复:

    问题+1
    这个注释确实影响了 挪上去就行了

    [回复]

    依云 回复:

    看来是 \ 续行时把下面的语句接到上面后,注释后的语句都成了注释了。

    [回复]

    ideepblue 回复:

    这个解释有道理!没想到,受教了

    [回复]

    Dante 回复:

    呵呵,是我在粘贴代码的时候没注意,自己加了注释……

    [回复]

  5. wei 说:

    请问有没有什么插件能加亮同名的变量?
    就是当我把光标移到某个变量上时,上下文中跟它同名的变量都会高亮显示。

    谢谢!

    [回复]

    aristotle9 回复:

    :set hlsearch
    打开搜索高亮后
    光标移动到一个单词上
    *
    或者
    #
    ====
    Vim Tips

    “…Can you imagine how many keystrokes could have been saved, if I only had known the “*” command in time?” – Juergen Salk, 1/19/2001

    [回复]

    wei 回复:

    谢谢!

    [回复]

  6. iam070 说:

    求教一个格式化排版的问题。。 我看网上的介绍,用gg v SHIFT+V = 能重新排版c源代码。我想问下,如果设置,能改变源代码中的{}对齐方式,比如
    有的是
    example() {
    ____foo();
    }
    我想把它变成
    example()
    {
    ____foo();
    }
    这个该如何实现?

    还有如果禁止对注释进行格式化?

    [回复]

    Dante 回复:

    其实是调用了vim中的 cindent,只是缩进,并不会重新排版。。。

    如果要进制对注释进行格式化,那就需要写一个c.vim的缩进文件,放到vimfiles/indent目录下,不过具体怎么写就没研究过了,可以参考一下vim.org上的一些缩进文件。

    [回复]

  7. [...] 把VIM打造成一个真正的IDE(1) [...]

  8. wdhappy 说:

    好好学习…

    [回复]

  9. [...] “把VIM打造成一个真正的IDE”系列贴,感觉不错:分为篇1、篇2、篇3 [...]

我要评论

*

*