• 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 显示时间

    然后定义了一下热键

     

    基本上 很爽的 嘿嘿 下次有人看到就知道了 

     

     


    收藏到:Del.icio.us




    评论

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