I\'m wondering if it\'s possible in Vim to create a mapping (for normal mode) that allows user input before the mapping executes.
I want to create a mapping for a shortc
An alternative would be create a custom command and use a mapping to call the new command.
command! -nargs=+ -complete=file -bar Grep grep! <args>|cw
Now you can create your mapping:
nnoremap <f2> :Grep<space>
You probably also want to stay away from mapping the F
key as it a pretty handy mapping.
For more help see:
:h :command
see also this answer on vi.stackexchange by @EvergreenTree
in short: map an expression to make use of input()
:
nnoremap <expr> ;n "<ESC>Go<CR>" . input("Input your text here: ", "Prepend this string to my input by default -") . " <<- that was your input.<ESC>"
There is a function input(prompt [, text [, completion]])
:
The result is a String, which is whatever the user typed on the command-line. The {prompt} argument is either a prompt string, or a blank string (for no prompt). A '\n' can be used in the prompt to start a new line.
(from :help input()
).
For things like :grep!
, you'll probably have to build the command using a string expression and then :execute
it.