我在想Vim是否可以創建一個允許用戶在映射執行之前輸入的映射(對於普通模式)。用戶輸入的Vim映射
我想爲我最常用的grep命令的快捷方式創建一個映射。我希望命令允許輸入我正在搜索的內容,然後在輸入時執行。
這是那種我想要的東西:
nmap F :grep! "*user input*"<CR>:cw<CR>
我無法弄清楚如何暫停,並採取用戶輸入。我甚至想過這是正確的方式?有沒有更好的方法來做我想要的?
我在想Vim是否可以創建一個允許用戶在映射執行之前輸入的映射(對於普通模式)。用戶輸入的Vim映射
我想爲我最常用的grep命令的快捷方式創建一個映射。我希望命令允許輸入我正在搜索的內容,然後在輸入時執行。
這是那種我想要的東西:
nmap F :grep! "*user input*"<CR>:cw<CR>
我無法弄清楚如何暫停,並採取用戶輸入。我甚至想過這是正確的方式?有沒有更好的方法來做我想要的?
另一種方法是創建自定義命令並使用映射來調用新命令。現在
command! -nargs=+ -complete=file -bar Grep grep! <args>|cw
,您可以創建映射:
nnoremap <f2> :Grep<space>
你可能也想從映射F
關鍵,因爲它一個很方便的映射望而卻步。
如需更多幫助,請參見:
:h :command
有一個功能input(prompt [, text [, completion]])
:
結果是一個字符串,它是用戶的任何輸入上 命令行。 {提示符}參數可以是提示字符串,也可以是空白字符串(無提示)。可以在提示中使用'\ n'來 開始一個新行。
(來自:help input()
)。
對於像:grep!
這樣的東西,您可能必須使用字符串表達式構建命令,然後使用:execute
它。
你能指出我的你的意思是什麼一個例子「建設使用字符串表達式的命令」?謝謝! – gylaz
類似':exec「:grep!」.input(「grep what?where?」)' –
好的答案。我會將它映射爲'nnoremap:Grep ',以便更容易知道vimrc中存在的空間。 –
好的。我已經更新了我的答案。 –