`
lantian_123
  • 浏览: 1368511 次
  • 性别: 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 plugin vim changes to ide update

    【vim plugin vim changes to ide update】这一主题表明我们将探讨如何使用Vim插件来提升其作为集成开发环境(IDE)的功能。在这个过程中,我们将重点分析新增的三个插件:wintagexplorer.vim、echofunc.vim以及vimrc...

    vim-configure.tar.gz_vim_vim_configure

    Vim(Vi IMproved)是一款强大的文本编辑器,深受程序员和系统管理员的喜爱。"vim-configure.tar.gz_vim_vim_configure" 是一个包含了 Vim 配置文件的压缩包,旨在帮助用户优化 Vim 的使用体验,提供自动提示、补全...

    Vim实用技巧电子书

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

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

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

    vim.zip vim安装包 解压可用

    Vim(Vi IMproved)是一款强大的文本编辑器,深受程序员和系统管理员的喜爱。它在Linux、Unix、Mac OS X以及Windows等操作系统上广泛使用。Vim的安装过程相对简单,尤其是当你手头有一个名为"vim.zip"的压缩包时,...

    Linux中vim安装包

    Vim(Vi Improved)是一款强大的文本编辑器,在Linux系统中广泛使用。它基于早期的Vi编辑器,并进行了大量的增强和改进,提供了丰富的特性集,适用于程序员、系统管理员以及普通用户。Vim在命令模式下工作,通过键盘...

    Vim特别好看的主题全部

    Vim是一款极其强大的文本...对于喜欢Vim的用户来说,这是一个宝贵的资源库,他们可以通过定制主题和插件来打造一个既美观又高效的个人开发空间。而在Linux环境中,这些调整和优化往往能带来更为流畅和愉快的编程体验。

    vim的c.vim和cpp.vim文件

    Vim是一款强大的文本编辑器,深受程序员喜爱,尤其在Linux和Unix环境中广泛使用。它具有高度可配置性和扩展性,用户可以通过安装不同的插件和配置文件来增强其功能。在这个场景中,我们关注的是`c.vim`和`cpp.vim`...

    开源项目-vim-vim.zip

    Vim,全称Vi IMproved,是一款强大的文本编辑器,由Bram Moolenaar基于老版的Vi编辑器开发。作为开源项目,Vim在全世界的开发者社区中享有极高的声誉,其设计理念是提供一个高效、可配置且功能丰富的文本操作环境。...

    centos7离线安装vim

    在Linux系统中,Vim(Vi Improved)是一款强大的文本编辑器,被广泛用于代码编辑、配置文件修改等任务。在没有网络连接的情况下,为CentOS 7安装Vim需要通过手动下载所需软件包并使用本地安装方法。以下是离线安装...

    vim go 语法高亮

    Vim是一款非常强大的文本编辑器,它以其高度可配置性和高效编辑能力深受程序员喜爱。在Go语言的开发环境中,Vim可以通过安装特定的插件来增强对Go语言的支持,其中包括语法高亮功能。"vim go 语法高亮"这个主题正是...

    vim_rpm.zip

    【标题】"vim_rpm.zip" 提供的是一个包含了 Vim 编辑器的 RPM 包,主要用于在 CentOS 7 的环境中进行离线安装。RPM(Red Hat Package Manager)是基于Linux系统的软件包管理器,它能够方便地安装、升级、查询和删除...

    vim-plugin插件

    Vim 是一款强大的文本编辑器,它以其高度可配置性和高效的工作流而闻名。Vim 插件系统是其灵活性的核心,允许用户通过安装各种插件来扩展编辑器的功能,以适应不同工作场景的需求。"vim-plugin插件" 涵盖了多种提升 ...

    VIM FOR PHP配置

    VIM(Vi IMproved)是一款强大的文本编辑器,尤其在编程领域中被广泛使用,因为它提供了丰富的自定义功能和高效的操作方式。对于PHP开发者来说,配置一个适合自己的VIM环境可以显著提高编码效率。以下是对"VIM FOR ...

    ubuntu离线安装vim

    在Ubuntu系统中,Vim(Vi IMproved)是一款强大的文本编辑器,被广泛用于编程和其他文本操作。离线安装Vim对于没有网络连接或者网络不稳定的情况尤为重要。以下是如何在Ubuntu上离线安装Vim的详细步骤,以及相关知识...

    Vim的.vim文件夹和.vimrc配置文件

    Vim是一款强大的文本编辑器,深受程序员和系统管理员的喜爱,其可高度自定义的特性使得用户可以根据个人喜好和工作需求定制自己的编辑环境。在Vim中,`.vim`文件夹和`.vimrc`配置文件是两个至关重要的元素,它们帮助...

    vim 配置 vim 配置

    Vim是一款强大的文本编辑器,其高度可定制性使得用户能够根据个人喜好和需求进行配置。在本文中,我们将深入探讨如何配置Vim,特别是关于字符编码的设置,以确保在处理不同编码的文件时避免乱码问题。 首先,我们要...

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

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

    Python-Vimapt是一个vim包管理器

    在 Vim 编辑器领域,Vimapt 是一个非常实用的包管理工具,它借鉴了 Ubuntu 的 APT 包管理系统的思想,为 Vim 用户提供了便捷的插件管理和更新功能。本文将深入探讨 Vimapt 的核心特性、安装过程以及如何利用它来优化...

    vim离线安装rpm包

    Vim(Vi Improved)则是一款强大的文本编辑器,是Linux系统中不可或缺的工具之一,特别适合程序员进行代码编写和编辑。 离线安装vim的步骤如下: 1. **获取rpm包**:首先,你需要从网络上下载vim及其所有依赖的rpm...

Global site tag (gtag.js) - Google Analytics