用户输入的Vim映射

gyl*_*laz 15 vim

我想知道在Vim中是否可以创建一个映射(用于普通模式),允许用户在映射执行之前输入.

我想为我最常用的grep命令创建一个快捷方式的映射.我希望命令允许输入我正在搜索的内容然后在输入时执行.

这就是我想要的东西:

nmap F :grep! "*user input*"<CR>:cw<CR>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何暂停和接受用户输入.我是否以正确的方式思考这个问题?有没有更好的方法来做我想做的事情?

Ant*_*nko 14

有一个功能input(prompt [, text [, completion]]):

结果是一个String,它是用户在命令行上键入的内容.{prompt}参数可以是提示字符串,也可以是空字符串(无提示).可以在提示符中使用'\n'来开始新行.

(来自:help input()).

对于类似的事情:grep!,您可能必须使用字符串表达式然后构建命令:execute.

  • 像`:exec":grep!".输入("grep what?where?")` (3认同)

Pet*_*ker 8

另一种方法是创建自定义命令并使用映射来调用新命令.

command! -nargs=+ -complete=file -bar Grep grep! <args>|cw
Run Code Online (Sandbox Code Playgroud)

现在您可以创建映射:

nnoremap <f2> :Grep<space>
Run Code Online (Sandbox Code Playgroud)

您可能还希望远离映射F键,因为它是一个非常方便的映射.

有关更多帮助请参阅:

:h :command
Run Code Online (Sandbox Code Playgroud)