Подтвердить что ты не робот

Отображение Vim с пользовательским вводом

Мне интересно, возможно ли в Vim создать сопоставление (для нормального режима), которое позволяет вводить данные пользователя до того, как выполняется сопоставление.

Я хочу создать сопоставление для ярлыка для самой используемой команды grep. Я хочу, чтобы команда позволяла вводить то, что я ищу, затем выполняю при вводе.

Это то, что я хочу:

nmap F :grep! "*user input*"<CR>:cw<CR>

Я не могу понять, как сделать паузу и принять пользовательский ввод. Я даже думаю об этом правильно? Есть ли лучшие способы сделать то, что я пытаюсь сделать?

4b9b3361

Ответ 1

Альтернативой может быть создание пользовательской команды и использование сопоставления для вызова новой команды.

command! -nargs=+ -complete=file -bar Grep grep! <args>|cw

Теперь вы можете создать свое сопоставление:

nnoremap <f2> :Grep<space>

Вы, вероятно, также хотите избегать сопоставления клавиши F, поскольку это довольно удобное отображение.

Для получения дополнительной справки см.:

:h :command

Ответ 2

Существует функция input(prompt [, text [, completion]]):

Результатом является String, который является тем, что пользователь набрал на командная строка. Аргумент {подсказка} является либо строкой запроса, либо пустая строка (без приглашения). A '\n' может использоваться в приглашении запустите новую строку.

(из :help input()).

Для таких вещей, как :grep!, вам, вероятно, придется создать команду, используя строковое выражение, а затем :execute it.