Существует тип завершения, которого нет в файлах справки vim (в частности: insert.txt), но который я инстинктивно ощущаю в необходимости довольно часто. Допустим, в моем файле есть слова «Awesome» и «SuperCrazyAwesome». Я нахожу экземпляр Awesome, который действительно должен быть SuperCrazyAwesome, поэтому я прыгаю в начало слова, перехожу в режим вставки и затем должен набрать «SuperCrazy».
Я чувствую, что должен быть в состоянии набрать "S", создать "SCrazy", а затем просто нажать горячую клавишу завершения или две, чтобы он нашел то, что находится слева от курсора ("S"), что справа («Сумасшедший»), повторно сопоставьте его со всеми словами в файле («/ S \ w * Crazy /») и предоставьте мне всплывающее меню выбора завершения, или просто сделайте замену, если есть только одно совпадение.
Я бы хотел использовать для этого систему фактического завершения. Существует «определенное пользователем» завершение, которое использует функцию и имеет хороший пример в подсказках для замены из заданного списка. Тем не менее, я не могу отследить многие детали, которые мне понадобятся, чтобы это произошло, включая:
- Как получить список всех слов в файле из функции vim?
- Могу ли я перечислить слова из всех буферов (с именами файлов), как это делается в vim?
- Как в режиме вставки получить текст в слове до / после курсора?
- Может ли завершение заменить все слово, а не только до курсора?
Я занимаюсь этим уже пару часов. Я продолжаю заглядывать в тупики, например , этот , который ввел меня в \% # для соответствия с позицией курсора, что, похоже, не работает для меня. Например, поиск \ w * \% # возвращает только первый символ слова, на котором я нахожусь, независимо от того, где я нахожусь. \% #, Кажется, не привязывается.