Плагин Vim - пользовательское автоматическое заполнение параметров в командном режиме

Я пишу свой первый плагин vim (viml + python). Одна из команд, которую имеет плагин, это "GetStepCommand()", и он в основном выбирает данные из удаленного источника данных, я немного массирую данные и копирую их в буфер, чтобы пользователь мог начать редактировать их. Существует параметр, который пользователь должен предоставить в "GetStepsCommand", и это путь поиска, где находятся данные, например: /projects/protocol /step

Теперь этот путь может быть длинным, и его легко что-то упустить. Поэтому я хотел реализовать свое собственное завершение табуляции для части параметров. Vim уже позаботится об автозаполнении команды с помощью табуляции, но, конечно, он не может знать, как завершить параметр (что я решу сам).

Но сначала мне нужно знать: - если / как я могу перехватить нажатие клавиши в командном режиме - извлечь / получить командную строку, которую в данный момент пишет пользователь - проверить, находится ли она в командном режиме или в режиме вставки / просмотра - и наконец, верните обновленную командную строку (табуляция завершена), о которой пользователь может продолжить писать в ":" после нажатия клавиши.

Любые указатели, советы, статьи, учебники... т.е. информация очень ценится

1 ответ

Решение

Когда аргумент вашей пользовательской команды является путем к файловой системе, это просто вопрос добавления -complete=file на ваш :command определение, как это:

:command -nargs=1 -complete=file MyCommand echomsg <q-args>

Вам не нужно перехватывать нажатия клавиш в режиме командной строки (и вы не должны этого делать, поскольку это может привести к плохому взаимодействию с другими плагинами!) Vim предлагает другие дополнения по умолчанию (ср. :help :command-complete), даже пользовательский, где вызывается функция Vimscript для определения кандидатов на завершение.

Другие вопросы по тегам