最后更新于 .

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

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

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

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)

Pingbacks

  1. 学习vim | 学编程 on #

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

  2. gvim安装和配置 | Xeno Joshua on #

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

  3. VIM常用命令整理、打造为IDE | zhazha的blog on #

    [...] &#8212; 续1 在Fedora下成功将Vim打造成适用于C/C++的IDE 把VIM打造成一个真正的IDE(1) [...]

  4. 小丫头 &raquo; VIM配置(持续更新中) on #

    [...] 2。把vim打造成IDE环境可以查考把VIM打造成一个真的IDE与vi/vim使用进阶。(仅供参考) [...]

  5. vim配置攻略-打造自己的IDE | Cherrot on #

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

  6. 用VIM打造属于自己的IDE | fumin&#039;s blog on #

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

  7. 用VIM打造属于自己的IDE | TO-DO on #

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

  8. Linux下有没有比较好用的IDE? - Linux/Unix - 开发者第1833236个问答 on #

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

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. isunbo

    isunbo on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  2. zww

    zww on #

    什么叫vimrc?

    Reply

    1. Dante

      Dante on #

      ……呃,呵呵……

      Reply

  3. npr

    npr on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

      1. npr

        npr on #

        非常感谢楼主的答复,
        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.

        Reply

        1. npr

          npr on #

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

          Reply

          1. Dante

            Dante on #

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

            Reply

        2. Dante

          Dante on #

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

          Reply

          1. npr

            npr on #

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

            Reply

            1. Dante

              Dante on #

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

              Reply

  4. lyndonjiang

    lyndonjiang on #

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

    Reply

    1. ideepblue

      ideepblue on #

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

      Reply

    2. 依云

      依云 on #

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

      Reply

      1. ideepblue

        ideepblue on #

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

        Reply

        1. Dante

          Dante on #

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

          Reply

  5. wei

    wei on #

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

    谢谢!

    Reply

    1. aristotle9

      aristotle9 on #

      :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

      Reply

      1. wei

        wei on #

        谢谢!

        Reply

  6. iam070

    iam070 on #

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

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

    Reply

    1. Dante

      Dante on #

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

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

      Reply

  7. wdhappy

    wdhappy on #

    好好学习...

    Reply

  8. haoaina521

    haoaina521 on #

    if(g:iswindows==1) "允许鼠标的使用
    "防止linux终端下无法拷贝
    if has('mouse')
    set mouse=a
    endif
    au GUIEnter * simalt ~x
    endif
    这里所说的无法拷贝是说右键没有拷贝?

    Reply

  9. zechen11

    zechen11 on #

    请问
    autocmd FileType text setlocal textwidth=78
    中的 text FileType是你自己定义的文件类型吗?为什么要这样做?

    Reply

  10. 小行

    小行 on #

    博主,回车换行后自动缩进长度为8,怎么样才能改成4?多谢~

    Reply

    1. _cs_cm

      _cs_cm on #

      可参考:http://zhidao.baidu.com/question/487958321.html

      Reply

      1. 小行

        小行 on #

        多谢。

        Reply

  11. 爱奇趣分享网

    爱奇趣分享网 on #

    路过,留个脚印,网站很棒!

    Reply

发表评论