这里所说的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)。
isunbo on #
你好!
augroup vimrcEx{
“实现打开同一文件时,vim能够自动记住上一次的位置
}augroup END的效果看到了,但是代码没明白,以后慢慢看吧.
还有就是关于鼠标使用的那段,au GUIEnter * simalt ~x,应该是在打开gVim后使窗口最大化的,但是为什么呢?
Reply
Dante on #
呵呵,vim内部定义了很多自动执行的命令,并且定义了自动执行的实际,比如GUIEnter 就是说在进入gui界面之后,BufNewFile就是新建文件之后,详细可以看官方的这篇文章:
http://man.chinaunix.net/newsoft/vi/doc/autocmd.html 或者 在vim中输入:h autocmd
Reply
zww on #
什么叫vimrc?
Reply
Dante on #
……呃,呵呵……
Reply
npr on #
您好,在中文字体设置的时候,我按您的文章输入:set gfw=幼圆:h10:cGB2312
保存重新启动gvim后,没有报错,但是中文无法切换到 幼圆字体(字体系统中有)
在网上搜索页没有类似问题,还请指点,谢谢!
Reply
Dante on #
额,这个问题是有朋友跟我反馈过了,需要在vimrc里面加入
set enc=utf-8
Reply
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
npr on #
google 搜索到用vimgdb 和clewn ,但鲜见详细关于二者在windows下配置和使用的文章,还请博主指点一下,谢谢!~
Reply
Dante on #
呵呵,其实本博第一篇文章就是介绍C++编译运行和VIM结合的,可以看一下~还是有疑问的话,随时提出~
http://www.vimer.cn/2009/10/11.html
Reply
Dante on #
呃,很奇怪……那vimrc文件的编码是cp936吗?
Reply
npr on #
谢谢博主的及时答复!
我是在安装中文帮助文档后运行gvim菜单栏为乱码,当时的解决办法为:到vim安装路径下C:\Program Files\Vim进入vimfiles的plugin打开vimdoc.vim 将set encoding设为set encoding=gbk ,
所以没有使用cp936编码吧。。。
Reply
Dante on #
呵呵,我的意思是你的vimrc文件的编码哦,你打开vimrc文件,然后执行set fenc看看结果是什么
Reply
lyndonjiang on #
博主,以前我跟你说过,参照你的配置文件我的vim记不住上次打开的文件的位置,今天我知道为什么了,你那句注释
"实现打开同一文件时,vim能够自动记住上一次的位置
不能加在autocmd BufReadPost *底下那几行后面,要加在autocmd BufReadPost *上一行才可以。
我也不懂是为什么,但是我反复试验确实是如此。。。
Reply
ideepblue on #
问题+1
这个注释确实影响了 挪上去就行了
Reply
依云 on #
看来是 \ 续行时把下面的语句接到上面后,注释后的语句都成了注释了。
Reply
ideepblue on #
这个解释有道理!没想到,受教了
Reply
Dante on #
呵呵,是我在粘贴代码的时候没注意,自己加了注释……
Reply
wei on #
请问有没有什么插件能加亮同名的变量?
就是当我把光标移到某个变量上时,上下文中跟它同名的变量都会高亮显示。
谢谢!
Reply
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
wei on #
谢谢!
Reply
iam070 on #
求教一个格式化排版的问题。。 我看网上的介绍,用gg v SHIFT+V = 能重新排版c源代码。我想问下,如果设置,能改变源代码中的{}对齐方式,比如
有的是
example() {
____foo();
}
我想把它变成
example()
{
____foo();
}
这个该如何实现?
还有如果禁止对注释进行格式化?
Reply
Dante on #
其实是调用了vim中的 cindent,只是缩进,并不会重新排版。。。
如果要进制对注释进行格式化,那就需要写一个c.vim的缩进文件,放到vimfiles/indent目录下,不过具体怎么写就没研究过了,可以参考一下vim.org上的一些缩进文件。
Reply
wdhappy on #
好好学习...
Reply
haoaina521 on #
if(g:iswindows==1) "允许鼠标的使用
"防止linux终端下无法拷贝
if has('mouse')
set mouse=a
endif
au GUIEnter * simalt ~x
endif
这里所说的无法拷贝是说右键没有拷贝?
Reply
zechen11 on #
请问
autocmd FileType text setlocal textwidth=78
中的 text FileType是你自己定义的文件类型吗?为什么要这样做?
Reply
小行 on #
博主,回车换行后自动缩进长度为8,怎么样才能改成4?多谢~
Reply
_cs_cm on #
可参考:http://zhidao.baidu.com/question/487958321.html
Reply
小行 on #
多谢。
Reply
爱奇趣分享网 on #
路过,留个脚印,网站很棒!
Reply