课程表

vim 命令手册

Vimscript 编程参考

工具箱
速查手册

Vimscript Abbreviations

当前位置:免费教程 » 软件/图像 » Vim

Vim有个称为"abbreviations"的特性,与映射有点类似,但是它用于insert、replace和 command模式。这个特性灵活且强大,不过本节只会谈及最常用的用法。

本书只会讲述insert模式下的abbreviations。运行如下命令:

  1. :iabbrev adn and

进入insert模式并输入:

  1. One adn two.

在输入adn之后输入空格键,Vim会将其替换为and

诸如这样的输入纠错是abbreviations的一个很实用的用法。运行命令:

  1. :iabbrev waht what
  2. :iabbrev tehn then

再次进入insert模式并输入:

  1. Well, I don't know waht we should do tehn.

注意 两个 abbreviations的替换时机,第二个没有输入空格却也替换了。

Keyword Characters

紧跟一个abbreviation输入"non-keyword character"后Vim会替换那个abbreviation。 "non-keyword character"指那些不在iskeyword选项中的字符。运行命令:

  1. :set iskeyword?

你将看到类似于iskeyword=@,48-57,_,192-255的结果。这个格式很复杂,但本质上 "keyword characters"包含一下几种:

  • 下划线字符 (_).
  • 所有字母字符,包括大小写。
  • ASCII值在48到57之间的字符(数字0-9)。
  • ASCII值在192到255之间的字符(一些特殊ASCII字符)。

如果你想阅读这个选项格式的 完整 描述,你可以运行命令:help isfname,另外 阅读之前最好准备点吃的。

你只要记住输入非字母、数字、下划线的字符就会引发abbreviations替换。

更多关于abbreviations

Abbreviations不仅仅只能纠错笔误。我们可以加几个日常编辑中常用的abbreviations。 运行如下命令:

  1. :iabbrev @@ steve@stevelosh.com
  2. :iabbrev ccopy Copyright 2013 Steve Losh, all rights reserved.

随意更换我的名字和邮箱地址为你的,然后试试这两个abbreviations吧~

这些abbreviations将你常用的一长串字符压缩至几个字符,省的每次都要那么麻烦。

Why Not Use Mappings? 为什么不用Mappings?


不错,abbreviations和mappings很像,但是他们的定位不同。看个例子:

运行命令:

  1. :inoremap ssig -- <cr>Steve Losh<cr>steve@stevelosh.com

这个 mapping 用于快速插入你的签名。进入insert模式并输入ssig试试看。

看起来一切正常,但是还有个问题。进入insert模式并输入如下文字:

  1. Larry Lessig wrote the book "Remix".

注意到Vim将Larry名字中的ssig也替换了!mappings不管被映射字符串的前后字符是什么-- 它只在文本中查找指定的字符串并替换他们。

运行下面的命令删除上面的mappings并用一个abbreviation替换它:

  1. :iunmap ssig
  2. :iabbrev ssig -- <cr>Steve Losh<cr>steve@stevelosh.com

再次试试这个abbreviation。

这次Vim会注意ssig的前后字符,只会在需要的时候替换它。

Exercises

在你的~/.vimrc文件中为经常拼写错误的单词增加abbreviations配置。一定要使用 上一章中你创建的mappings来重新打开读取~/.vimrc文件。

为你的邮箱地址、博客网址、签名添加abbreviations配置。

为你经常输入的文本添加abbreviations配置。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号