2013-01-17 43 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?」)' –