Плагин 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 для определения кандидатов на завершение.