缩写

Vim 有一个特性叫做“缩写”,它感觉和映射很相似,但是是为了在插入、替换、和命令模式下使用的。 他们非常的有用并且强大,但是在这里我们只会涉及到最普通的用法。

在本书中,我们只会考虑插入模式中的缩写。运行以下命令:

:iabbrev adn and

现在进入插入模式,然后键入:

One adn two.

在键入了 adn 后,你一敲击空格键,Vim 就会用 and 替换它。

像这样纠正拼写错误是缩写的一大用处。运行命令:

:iabbrev waht what
:iabbrev tehn then

现在再次进入插入模式,然后键入:

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

注意这两个缩写是如何被替换的,虽然并没有在第二个后面键入空格键。

关键字符

当你在一个缩写之后键入了任何“非关键字符”时,Vim 就会把缩写替换掉。 “非关键字符”是指任何不在 iskeyword 选项中的字符。运行命令:

:set iskeyword?

你会看到类似 [email protected],48-57,_,192-255 这样的。 这个格式非常复杂,但大体上,它意味着以下所有的都被认为是“关键字符”:

如果你想阅读这个选项的格式的完整描述,可以查看 :help isfname, 但我可要提醒你最好是准备好一瓶啤酒。

我们的目的仅仅是要你记住缩写会在键入了任何不是字母、数字、或者下划线的字符时被展开。

更多缩写

缩写是很有用的,不仅仅是用于纠正拼写错误。 让我们再多添加一些在日常文本编辑中有用的缩写。 运行以下命令:

:iabbrev @@    [email protected]com
:iabbrev ccopy Copyright 2013 Steve Losh, all rights reserved.

可以用你自己的姓名和邮箱地址来替换我的,然后进入插入模式,试试看。

这些缩写把你经常使用的大块本文压缩成少量的字符。 随着时间的推移,不仅可以节省大量的键入,而且可以避免手指的磨损和撕裂。

为什么不用映射?

如果你认为缩写看上去就和映射差不多,那就对了。但是,他们的目的是用来做些不同的事。 让我们看看这个例子。

运行命令:

:inoremap ssig -- <cr>Steve Losh<cr>[email protected]com

这是一个可以让你快速地插入署名的映射。 试试看,进入插入模式,并且键入 ssig

看上去工作的很棒,但是这里有个问题。试试进入插入模式,并且键入这个文本:

Larry Lessig wrote the book "Remix".

你会发现 Vim 把 Larry 名字中的 ssig 展开了! 映射不会考虑前后出现了什么字符 —— 他们只会着眼于过去映射过的特殊的序列。

运行以下命令来删除这个映射并替换成缩写:

:iunmap ssig
:iabbrev ssig -- <cr>Steve Losh<cr>[email protected]com

现在再次试试这个缩写。

这一次,Vim 会注意在 ssig 前后出现的字符,并且只在我们想要的时候展开它。

练习

~/.vimrc 文件中添加一些缩写,来处理你个人平时会出现的拼写错误。 务必要用在上一章节中创建的映射来打开并且载入执行这文件。

为你自己的邮箱地址、网站、以及署名添加缩写。

想一些你经常键入的文本,并且为他们添加缩写。

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/08.html