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 shortcut for my most used grep command. I want the command to allow to to enter what I'm searching for then execute on enter.
This is sort of what I want:
nmap F :grep! "*user input*"<CR>:cw<CR>
I can't figure out how to pause and take user input. Am I even thinking about this the right way? Are there better ways to do what I'm trying to?
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With