Vimscript Abbreviations

2018-02-24 16:02 更新

Vim有個稱為"abbreviations"的特性,與映射有點類似,但是它用于insert、replace和 command模式。這個特性靈活且強大,不過本節(jié)只會談及最常用的用法。

本書只會講述insert模式下的abbreviations。運行如下命令:

:iabbrev adn and

進(jìn)入insert模式并輸入:

One adn two.

在輸入adn之后輸入空格鍵,Vim會將其替換為and。

諸如這樣的輸入糾錯是abbreviations的一個很實用的用法。運行命令:

:iabbrev waht what
:iabbrev tehn then

再次進(jìn)入insert模式并輸入:

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

注意?兩個?abbreviations的替換時機(jī),第二個沒有輸入空格卻也替換了。

Keyword Characters

緊跟一個abbreviation輸入"non-keyword character"后Vim會替換那個abbreviation。 "non-keyword character"指那些不在iskeyword選項中的字符。運行命令:

:set iskeyword?

你將看到類似于iskeyword=@,48-57,_,192-255的結(jié)果。這個格式很復(fù)雜,但本質(zhì)上 "keyword characters"包含一下幾種:

  • 下劃線字符 (_).
  • 所有字母字符,包括大小寫。
  • ASCII值在48到57之間的字符(數(shù)字0-9)。
  • ASCII值在192到255之間的字符(一些特殊ASCII字符)。

如果你想閱讀這個選項格式的?完整?描述,你可以運行命令:help isfname,另外 閱讀之前最好準(zhǔn)備點吃的。

你只要記住輸入非字母、數(shù)字、下劃線的字符就會引發(fā)abbreviations替換。

更多關(guān)于abbreviations

Abbreviations不僅僅只能糾錯筆誤。我們可以加幾個日常編輯中常用的abbreviations。 運行如下命令:

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

隨意更換我的名字和郵箱地址為你的,然后試試這兩個abbreviations吧~

這些abbreviations將你常用的一長串字符壓縮至幾個字符,省的每次都要那么麻煩。

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


不錯,abbreviations和mappings很像,但是他們的定位不同??磦€例子:

運行命令:

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

這個?mapping?用于快速插入你的簽名。進(jìn)入insert模式并輸入ssig試試看。

看起來一切正常,但是還有個問題。進(jìn)入insert模式并輸入如下文字:

Larry Lessig wrote the book "Remix".

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

運行下面的命令刪除上面的mappings并用一個abbreviation替換它:

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

再次試試這個abbreviation。

這次Vim會注意ssig的前后字符,只會在需要的時候替換它。

Exercises

在你的~/.vimrc文件中為經(jīng)常拼寫錯誤的單詞增加abbreviations配置。一定要使用 上一章中你創(chuàng)建的mappings來重新打開讀取~/.vimrc文件。

為你的郵箱地址、博客網(wǎng)址、簽名添加abbreviations配置。

為你經(jīng)常輸入的文本添加abbreviations配置。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號