-
2008-04-20
What about VIM? gVIM - [As a ACMer]
首先说说什么是gVim
gVim==Vim for Windows==Vi IMproved for Windows
传说世界上有两种人 用Vi的 和不用Vi的
而用Vi的人中又有 用VIM新特性和坚持老VI的
像我这种VC++都没怎么用过的家伙写东西自然是在Debug稀烂的GCC+GDB里边熬过来的
坦白的说 目前用得最顺畅的IDE还是Code::Blocks 尽管要Debug就得建Project 但至少单个文件能够编译出来 而且那个cb_console_runner还能计时 自然是爽歪歪
言归正传 zzn说不让用IDE了 改用UE EP或者别的什么文本编辑器 而我对另学个文本编辑器实在是没想法 所以重新打开了gVim 现在要做的 就是多勾引几个人过来用它
VIM跟Vi的最大区别不过就是 VIM对按键的定义更多更有特征更加接近于一个普通的文本编辑器以实现各种习惯的兼容 比如Vi里面进入Insert Mode根据Vi的设计规则左手编辑指令右手控制指令这么个操作被定义到了a上 而VIM里面就a和i都可以了 so 区别不大 至少对用户而言
gVim给了个win下面的界面 菜单栏什么的都上来了 win下面的热键也出来了(诸如<C-c> <C-x> <C-v>) 更加容易用了(但是事实证明还是没有用命令来的方便)
至于为什么用这个东西写代码 第一 它真的很方便 分开普通模式和插入模式的时候写代码看代码都很方便(一个个字写/改就用插入模式 一行行看/改就用普通模式) 熟练了效率也很高 第二 它内置的indent做得很不错 自动缩进分得特别爽快 基本上写程序过程中间就不用再敲空格敲退格了 第三 也是最最重要的 它比eMacs容易学 虽说所有人都说eMacs比VIM更好 可学不会就是学不会
至于其它好处 比如配置一堆自定义命令什么的 都不难了
这里不多说怎么学用VIM了 装一个gVIM 里边就自带了个很不错的tutor 最多20分钟上手 一天就用熟悉了
贴就贴一下我的几个配置文件 首先是_vimrc
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set nu!
set ic!
set sm!
set et!
set ai!
set cin!
colorscheme slate
syntax enable
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
这个是基于自带的_vimrc改的 基本上就是显示一下行数 写程序的时候自动标记括号匹配 自动加载个我看着顺眼的配色方案之类的
然后是我自己的indent cpp.vim
" C++ indenting is built-in, thus this is very simple
setlocal cindent
set makeprg=g++\ %\ -o\ %<
command! Rt !cb_console_runner %<
command! R !%<
command! Rio !cb_console_runner "%<<input.txt>output.txt"
map <F9> :make<CR>:R<CR>
imap <F9> <Esc><F9>
map <C-F9> :make<CR>
imap <C-F9> <Esc><C-F9>
这里就定义了使用gcc的c++编译器 生成和文件名一样的exe
添加了 几个command
R 运行当前程序的编译结果
Rt 运行并且显示时间(借助cb runner 其实可以自己写一个的)
Rio 运行并重定向输入输出到input.txt output.txt 显示时间
然后定义了一下热键
基本上 很爽的 嘿嘿 下次有人看到就知道了
随机文章:
百度之星 进复赛了 2008-06-09百度之星DayI我AC的两个程序 2008-06-07乱啊乱 2008-06-04Coldwings in Hangzhou... 2008-05-11In Hangzhou... 2008-05-09
收藏到:Del.icio.us








评论
虽然看不懂 不过 依然告诉你 永远不要放弃 可以小抱怨一下 但是 不许不努力 ^_^