Мой вопрос прост: есть ли способ сократить два слова, разделенных пробелом , используя только команду ab в vi ... Is можно ли избежать символа пробела?

В stackoverflow я нашел только этот один, но все ответы использовали < сильная> команда подстановки . Я также пробовал:

:ab word1<space>word2 replaceWord

Но зря (сгенерировал ошибку)

2
Meninx - メネンックス 27 Дек 2014 в 01:26

2 ответа

Лучший ответ

К сожалению, это невозможно.

От :help :abbreviate:

Examples of strings that cannot be abbreviations: "a.b", "#def", "a b", "_$r"

Это потому, что существует только три типа сокращений (все еще из :help):

full-id   The "full-id" type consists entirely of keyword characters (letters
      and characters from 'iskeyword' option).  This is the most common
      abbreviation.

      Examples: "foo", "g3", "-1"

end-id    The "end-id" type ends in a keyword character, but all the other
      characters are not keyword characters.

      Examples: "#i", "..f", "$/7"

non-id    The "non-id" type ends in a non-keyword character, the other
      characters may be of any type, excluding space and tab.  {this type
      is not supported by Vi}

      Examples: "def#", "4/7$"
3
Marth 27 Дек 2014 в 02:06

На самом деле это можно подражать.

Вам нужно будет определить сокращение для word2, которое будет проверять, что ему предшествует. Я подробно описал ответ о том, что сокращение начинается с '\', это то же самое (за исключением того, что вам, возможно, придется протестировать последний слово в предыдущей строке).

3
Community 23 Май 2017 в 14:57