Learning Vimscript The Hard Way — (8) Abbreviations/缩写

缩写

Vim 有一个功能叫做“缩写(abbreviations)”,感觉上跟映射比较类似,但不是在插入、替换、和命令模式下面使用的。它们相当灵活和强大,但是我们在这里只会谈及他们最一般的使用。

我们在这本书里面只会关心插入模式的缩写。运行下面的命令:

: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.

注意两个缩写词都被替换掉了,尽管你没有在第二个【tehn】后面按空格。

关键字符(Keyword Characters)

Vim 替换缩写词的情况是当你在一个【匹配的】缩略词之后按下任意“非关键字符”。“非关键字符”意思是任意不在 iskeyword 选项里面的字符。运行下面的命令:

:set iskeyword?

你会看到一些形如 iskeyword=@,48-57,_,192-255 的东西。这格式比较复杂,但是它的意思就是说下面的这些字符都是被认为是“关键字符”的:

  • 下划线 _;
  • 所有 ASCII 字母字符,包括大小写和其他的带有声调的版本;
  • 任意 ASCII 码在 48 到 57 之间的字符(也就是 0 到 9);
  • 任意 ASCII 码在 192 到 255 之间的字符(一些特殊的 ASCII 字符);

如果你想阅读一下这个选项格式的完整描述,你可以看一看 :help isfname,不过我敬告一下你最好在开始之前先整瓶啤酒【呵呵,自己意会】。

我们建议你可以简单的理解为:当你敲进去一个非字母、数字或者下划线的时候,缩写就会被展开。

更多的缩写

缩写功能并不仅仅用来修正拼写错误,它还有更多有用的功能。让我们再添加一点来帮助我们的日常编辑。运行下面的命令:

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

你可以随意把名字和 email 地址改成你自己的,然后在插入模式里面试一下。

这些缩写可以让一些你平时常用的大块文字压缩成简短的字符。这可以省下你很多的输入,也会减少你手指的磨损(wear and tear)【幽默】。

为什么不用映射呢

如果你在想缩写看起来为啥这么像映射,那你就对了。然而,它们是被打算用在不同的地方的。让我们来看一个例子。

运行这个命令:

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

这是一个映射,想让你快速输入你的签名。试一下进入插入模式,然后键入 ssig

这看起来工作很好,但有一个问题。试试在插入模式输入一下这些文本:

Larry Lessig wrote the book “Remix”.

你会注意到,Vim 将 Larry 名字里面的 ssig 展开了!映射不会管你在单词前后有些什么,它只会看你键入的序列映射到什么东西。

删掉这个映射,然后改成缩写,通过下面的这段命令:

:iunmap ssig :iabbrev ssig — <cr>Steve Losh<cr>steve@stevelosh.com

现在再来试试这个缩写。

这次 Vim 就会注意到你输入 ssig 的前后,然后只会在我们想要的时候展开。

练习

将一些你知道的常用的拼写错误加入到你的 ~/.vimrc 里面去。确认你要使用上一章里面的映射来打开和执行它。

为你自己的电子邮件、网站和签名添加缩写。

想一下你有哪些经常输入的文本框,然后也为它们添加缩写。


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2014/10/vimscript-hard-8.html【Learning Vimscript The Hard Way — (8) Abbreviations/缩写】

发表评论

电子邮件地址不会被公开。 必填项已用*标注