<C-p>
и <C-n>
разрешить завершение слов, найденных в текущем документе.
Я беру некоторые заметки и записи голоса {0,1}^n
и (E,D)
много раз. Это СЛОВА, состоящие из нескольких слов.
Есть ли способ завершить слова с помощью <C-p>
и <C-n>
(или другой связанной ins-completion
команды)?
autocompletion
Гонсалу Рибейро
источник
источник
:abbreviate
вместо этого. Например, введите:ab 01n {0,1}^n
команду. Затем каждый раз, когда вы вводите01n
как независимое слово в режиме вставки, оно будет расширяться до{0,1}^n
.ins-completion
.Ответы:
Вставить режим завершения с Ctrl-n
Я не знаю, можно ли выполнить завершение WORD вне написания собственной функции (например, omnifunc). Тем не менее, если вы не возражаете против расширения того, что слово соответствует вашим персонажам, вы можете добавить эти символы в «iskeyword»
Например, мой iskeyword по умолчанию
Затем я установил его на это плюс дополнительные символы выше
Это добавляет
{
,}
,,
,(
,)
, и^
к персонажам , которые составляют слово (в дополнение к тому , что уже сделал)После этого ввод
{
Ctrl-nзавершается{0,1}^n
(в файле, содержащем только два приведенных вами примера)Примечание: было бы лучше сделать это
: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
ограничение только для режима вставки.Затем, если у вас есть текст (где
|
представляет курсор)И затем вы нажимаете Escили Spaceили Tabили иным образом перемещаете курсоры, текст заменяется, и у вас есть (пример использования пробела)
и вы можете продолжать печатать без перерыва.
Это обычно используется для автоматического исправления общих опечаток (например, замена «teh» на «the»), но это может быть одинаково полезно для вашего случая использования, опять же, при условии, что вы не против настроить сопоставления заранее.
источник
:set iskeyword+={,},,,(,),^
работает как ожидалось.abbreviate
лучше подходить для этой работы?