`
lantian_123
  • 浏览: 1360326 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

每日一Vim(21)又谈abbreviation

vim 
阅读更多

 

每日一Vim(21)又谈abbreviation

Vim有一句哲学是这样说的:“if you write a thing once,it it okay,However,if you're writing it twice or more times,then you should find a better way to do it"。这句话估计也是引用软件开发里面的DRP(Don't Repeat Yourself)原则。如果你老是需要重复的写一些相同的东西,此时你就应该使用**abbreviation(缩写)**.

 :abbreviate 作用于所有模式   (ab) 
 :iabbrev    仅作用于插入模式 (iab)
 :cabbrev    仅作用于命令行模式(cab)

abbreviation可以用在很多有意思的地方,比如:

  1. 纠正错误的拼写::iabbr teh the
  2. 程序中你能想到的模版语句::iabbr forx for(x=0;x<100;x++){<cr><cr>}
  3. 简化命令的输入:cabbr cse colorscheme evening
  4. 如果你是Java程序员,如下命令毫不逊色于Eclipse

abbr psvm public static void main(String[] args){<CR>}<esc>O
 abbr sysout System.out.println("");<esc>2hi
 abbr sop System.out.println("");<esc>2hi
 abbr syserr System.err.println("");<esc>2hi
 abbr sep System.err.println("");<esc>2hi

 abbr forl for (int i = 0; i < ; i++) {<esc>7hi
 abbr tryb try {<CR>} catch (Exception ex) {<CR> ex.printStackTrace();<CR>}<esc>hx3ko
 abbr const public static final int

 abbr ctm System.currentTimeMillis()
 abbr slept try {<CR> Thread.sleep();<CR>}<esc>hxA catch(Exception ex) {<CR> ex.printStackTrace();<CR>}<esc>hx3k$hi

 

可以说只有你想不到了,没有做不到的。

写程序追求的高内聚,低耦合,同样,毫无疑问,Vim也遵循同样的原则,如果我们有上十条百条这样的缩写命令,如果都挤在vimrc配置文件中,这样过显得很难管理,因此我们可以把专门用于缩写的命令放置在单独的文件中,然后在vimrc文件中引用就ok,:source $VIM/abbreviation.vim

你有没有想过一个问题,如果把forx设置成了缩写格式,那么有时候我本意是输入'forx'呢?

  • 方法一:就是把它的映射取消掉una forx,这样有个缺点是下次我又需要这个缩写了,这时又不得不重新捡回来。
  • 方法二:写一个函数,在每次输入'forx'的时候询问是作为普通字符串还是作为缩写呢?函数如下:

    function! s:forxAsk(abbr,expansion)
      let answer = confirm("使用缩写'" . a:abbr ."'?",
                             "&Yes\n&No",1)
      return answer ==1 ? a:expansion : a:abbr
    endfunction
    
    iabbrev <expr> forx <SID>forxAsk('forx','for(x=0;x<100;x++)')
    

    函数中abbr是缩写,expansion就是全写,这样一来,每次输入forx时,就会弹出一对话框询问你是使用缩写还写不使用。当然这种方式显得比较笨拙,另外一个目的也是告诉大家如果写函数。

  • 方法三:使出杀手锏,输入forx完成后,按Ctrl-v(windows系统按Ctrl-q)就能避免尴尬了。

更多参考:

转载请注明出处,谢谢合作!作者---zhijun

4
4
分享到:
评论
4 楼 lantian_123 2013-04-08  
isensen 写道
...是WINDOW环境变量原来..我还以为是VIM的,还以为要在哪个文件设置.
第3个问题.我是说如何编写函数或配置,才能实现第3条所说.因为上面的设置是输入forx后立刻就替换成所设置的代码段吧

不需要任何设置,输入forx后,只有你输入非字母字符的时候才会替换的。所以输入forx后再按<Ctrl>+v(windows是按<Ctrl>+q)就行了。
3 楼 isensen 2013-04-08  
...是WINDOW环境变量原来..我还以为是VIM的,还以为要在哪个文件设置.
第3个问题.我是说如何编写函数或配置,才能实现第3条所说.因为上面的设置是输入forx后立刻就替换成所设置的代码段吧
2 楼 lantian_123 2013-04-07  
1.Windows:单击“我的电脑→属性→高级”标签的“环境变量”按钮设置,参看:cmd命令行中输入:VIM,  Linux:~/.profile文件下设置,可参考:http://liuzhijun.iteye.com/blog/1744465
查看:echo $VIM

2.函数可以写在VIMRC文件中,语法以后可以详细讲

3.就是在insert模式下输入forx后,再按ctrl+q(windows平台),此时输入的就是原字符串“forx”了
1 楼 isensen 2013-04-07  
1.$VIM 还有上一篇的$VIMRUNTIME 知道是什么.设置环境的.但是不知道 在哪设置和查看这个东西
2.这函数在哪编写?在VIMRC里? 这函数语法什么的在哪能系统的看一下
3.方法三怎么实现

相关推荐

    Vim实用技巧电子书

    同时,学习和熟练使用vim又有一定的难度。 《vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的vim技巧的必由之路。全书共21章,包括121个技巧。每一章都是关于某一相关主题的技巧集合。每...

    Vim用户手册中文版7.3.pdf.zip_vim 7

    使用 Vim 更多的是一种技能而 不是一种知识,Vim 的学习更需要的不是头脑而是双手,经常按书中的指示 进行示例性的操作,在学习 Vim 众多精致的技巧时,不要贪图一下子全都 掌握,最好是看一条技巧后,马上在编辑器...

    VIM快捷键 VIM插件

    VIM快捷键 VIM快捷键 VIM插件 VIM快捷键 VIM插件

    vim中文手册 vim中文手册 vim中文手册

    vim中文手册 vim中文手册 vim中文手册 vim中文手册 vim中文手册 vim中文手册 vim中文手册vim中文手册vim中文手册

    vim plugin vim changes to ide update

    add wintagexplorer.vim , echofunc.vim , vimrc

    vim配置 molokai.vim

    cp molokai.vim /usr/share/vim/vim73/colors cp /etc/vim/vimrc /etc/vim/vimrc.bak cp vimrc /etc/vim/vimrc

    vim 配置 vim 配置

    vim配置 vim 配置 整理出来大家一起学习

    Vim编辑器 VIM

    Vim编辑器

    vim设置20130906, 适合编程爱好者

    "vimshell.vim, vim中使用shell, 最好一款 source ~/.vim/bundle/vimshell/conf.vim "omnicppcomplete.vim source ~/.vim/bundle/omnicppcomplete/conf.vim "code_complete.vim source ~/.vim/bundle/code_...

    VIM命令VIM命令VIM命令

    VIM工具命令的使用。VIM工具命令的使用。VIM工具命令的使用。

    Vim实用技巧.pdf_vim实用_vim_

    讲述 vim 编辑器的几十个实用上手技巧

    Vim实用技巧.mobi

    同时,学习和熟练使用Vim又有一定的难度。 《Vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的Vim技巧的必由之路。全书共21章,包括121个技巧。每一章都是关于某一相关主题的技巧集合。每...

    vimconfig-vim配置脚本

    vim自动提示等多种功能 先安装ctags 然后进入./vim文件中执行 sh vim_config_ctags-v2.0.sh 再进入./vimconfig中执行 解压缩压缩报 tar jxvf vimconfig.tar.bz2 然后执行 ./config.sh 脚本会自动更新 用户根目录下...

    vim实用技巧

    同时,学习和熟练使用vim又有一定的难度。, 《vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的vim技巧的必由之路。全书共21章,包括121个技巧。每一章都是关于某一相关主题的技巧集合。每...

    VIM命令总结VIM命令总结

    VIM命令总结VIM命令总结VIM命令总结VIM命令总结VIM命令总结VIM命令总结VIM命令总结VIM命令总结

    vim配置文件vim配置文件vim配置文件

    vim配置文件vim配置文件vim配置文件

    vim常用命令vim常用命令vim常用命令

    vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令vim常用命令

    开发工具vim73

    vim

    vim教程 vim tutor

    good tutor for learning vim.keep it.

    vim的vimwiki入门

    vim的vimwiki入门,自己写wiki网页

Global site tag (gtag.js) - Google Analytics