曾经很长一段时间都是在用Quanta Plus/Kwrite来写代码,Quanta Plus好在自动补充和标签页,而Kwrite好在轻便而有功能齐全。后来因为要对代码做批处理,于是慢慢转移到vim这款*nix下最强大的编辑器下来了,以至于现在几乎100%的时间都是用vim来写代码,包括在blogbus里给blogbus hack写日志。总结了一些我在用g?Vim过程中的tips:

自动识别各种中文编码

.vimrc文件里加入这句,基本上所有中文编码都没问题了,包括繁体中文

set fileencodings=ucs-bom,utf8,GB18030,Big5,latin1

粘贴文本格式乱了?

写代码时经常要从网页上或其他地方粘贴点代码过来用,但是一贴进vim里格式就乱了怎么办?.vimrc里加入这两句:

set nopaste 
set pastetoggle=<F10>

以上代码的作用是当你需要粘贴代码时先按下F10进入切换到paste,这时再粘贴进去就不会有问题了。为什么不直接设置set paste呢? 因为set paste在gVIM下可能会导致工具栏里的粘贴键失效。

推荐在gVIM下使用desert主题

desert是gVIM下一个非常candy的代码高亮主题,也是我目前看过的最舒服的高亮显示环境了。Gentoo里的vim默认就附带了这个主题,启用它只需要设置:

colorscheme desert

就行了,如果没有这款主题的话,在下载后将其放到~/.vim/colors目录下再启用就是了。

gVIM

看起来不是一般的舒服啊 :D

映射常有按键

习惯了Ctrl+V, Ctrl+S的文本编辑模式? 习惯了Ctrl+T, Ctrl+Tab…的Firefox标签工作模式? 将以下代码贴如你的.vimrc中就是了!

" 映射Ctrl+V键粘贴内容 
nmap   :set paste"*p:set nopaste 

" Ctrl+S实现保存,如果未命名文件名会提示你选择保存路径和文件名
if has("gui_running")
  :map   :if expand("%") == "":browse confirm w:else:confirm w:endif
endif

" Ctrl+A实现全选
map  ggVG

" Map the hotkeys working like firefox!
if has("gui_running")
  :map  : tabnew " Ctrl+T新建标签页
  :map  : tabnext "Ctrl+Tab切换标签页
  :map  : close "Ctrl+W关闭当前标签页
endif

自动创建模板

用过Gentoo的都知道,如果输入vim package.ebuild,系统会根据文件后缀名自动创建一个最基本的ebuild文件模板,以节省编写时间。同样,可以把这招扩展到任意格式的文件下来,以html格式为例,先创建一个名为skeleton.html(Whatever you like)的基础模板:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<meta name="description" content="" />
	<meta name="keywords" content="" />
	<title></title>
	<style type="text/css">
		body {font: 12px Verdana,'Lucida Grande',Sans-Serif;}
	</style>
</head>
<body>

</body>
</html>

然后把文件放到~/.vim/skeleton/下,在.vimrc中加入这句:

au BufNewFile *.html 0r ~/.vim/skeleton/skeleton.html|norm 13G

以后用vim创建以html为后缀的任意文件时都会直接套用该模板并将光标直接跳到<body> (13G)内。

好用的插件

SuperTab 根据你已输入过的内容,按Tab键时实现自动补充

NERD Commenter 强悍的注释插件,支持N种格式的注释(真的是NNN种啊!)

3 Reponses So Far ↓

  1. 及时雨啊,哥们也要大量写代码了

  2. alice:

    对中文的支持很及时!多谢!

  3. druggo:

    CXXFLAGS=”${CFLAGS} -fvisibility-inlines-hidden” 多么经典的flag啊,可惜现在没几个人这么用了。

Leave a Reply ↓