2013-01-17 39 views
13

我在想Vim是否可以创建一个允许用户在映射执行之前输入的映射(对于普通模式)。用户输入的Vim映射

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

这是那种我想要的东西:

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

我无法弄清楚如何暂停,并采取用户输入。我甚至想过这是正确的方式?有没有更好的方法来做我想要的?

回答

7

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

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

,您可以创建映射:

nnoremap <f2> :Grep<space> 

你可能也想从映射F关键,因为它一个很方便的映射望而却步。

如需更多帮助,请参见:

:h :command 
+0

好的答案。我会将它映射为'nnoremap :Grep ',以便更容易知道vimrc中存在的空间。 –

+0

好的。我已经更新了我的答案。 –

11

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

结果是一个字符串,它是用户的任何输入上 命令行。 {提示符}参数可以是提示字符串,也可以是空白字符串(无提示)。可以在提示中使用'\ n'来 开始一个新行。

(来自:help input())。

对于像:grep!这样的东西,您可能必须使用字符串表达式构建命令,然后使用:execute它。

+1

你能指出我的你的意思是什么一个例子“建设使用字符串表达式的命令”?谢谢! – gylaz

+2

类似':exec“:grep!”.input(“grep what?where?”)' –