Вставить режим завершения с Ctrl-n
Я не знаю, можно ли выполнить завершение WORD вне написания собственной функции (например, omnifunc). Тем не менее, если вы не возражаете против расширения того, что слово соответствует вашим персонажам, вы можете добавить эти символы в «iskeyword»
Например, мой iskeyword по умолчанию
iskeyword=@,48-57,_,192-255
Затем я установил его на это плюс дополнительные символы выше
:set iskeyword=@,48-57,_,192-255,{,},,,(,),^
Это добавляет {
, }
, ,
, (
, )
, и ^
к персонажам , которые составляют слово (в дополнение к тому , что уже сделал)
После этого ввод {
Ctrl-nзавершается {0,1}^n
(в файле, содержащем только два приведенных вами примера)
Примечание: было бы лучше сделать это :set iskeyword+=
только с дополнительным материалом, как показано ниже:
:set iskeyword+={,},,,(,),^
Таким образом, вы оставляете все остальное, составляющее ключевое слово, уже добавляя новые символы к существующей настройке.
Расширение с аббревиатурами
Хотя это и не является частью исходного вопроса, другой похожей функциональностью (ish) является использование функциональности сокращений nvi или Vim. В отличие от завершения ключевого слова, сокращения не должны выглядеть как окончательный текст. Также в отличие от завершения ключевого слова, сокращения расширяются автоматически, а не только когда вы их запрашиваете. В зависимости от вашей цели и использования, это может сэкономить много печатать, и позволит вам печатать много текста без прерывания запроса на завершение.
Сокращения хороши для небольшого набора ключевых слов и когда вы можете определить их заранее (они не обнаруживаются из вашего текста, как завершение слова).
Основная идея аббревиатур заключается в том, что вы связываете WORD с каким-то другим текстом, и каждый раз, когда редактор обнаруживает, что вы ввели это WORD (то есть набранный вами текст окружен пробелом, где действие завершения добавляет пробел после ключевое слово или выход из режима вставки), оно заменяется другим текстом.
Допустим, ваш файл содержит {0,1}^n
много, а других вариантов нет. Ввод текста немного растягивается, так что, возможно, вы захотите просто набрать 01n
или myvalue
сделать так, чтобы он расширялся {0,1}^n
, но только когда 01n
или myvalue
является словом само по себе (то есть, если оно появляется в другом слове, не Измени это).
В nvi вы можете сделать :abbrev 01n {0,1}^n
. Вы можете сделать то же самое в Vim, но я рекомендую использовать :iabbrev 01n {0,1}^n
ограничение только для режима вставки.
Затем, если у вас есть текст (где |
представляет курсор)
We find that the value 01n|
И затем вы нажимаете Escили Spaceили Tabили иным образом перемещаете курсоры, текст заменяется, и у вас есть (пример использования пробела)
We find that the value {0,1}^n |
и вы можете продолжать печатать без перерыва.
Это обычно используется для автоматического исправления общих опечаток (например, замена «teh» на «the»), но это может быть одинаково полезно для вашего случая использования, опять же, при условии, что вы не против настроить сопоставления заранее.
:abbreviate
вместо этого. Например, введите:ab 01n {0,1}^n
команду. Затем каждый раз, когда вы вводите01n
как независимое слово в режиме вставки, оно будет расширяться до{0,1}^n
.