Для этого можно использовать следующую функцию Vim-script.
function! FeedVisualCmd(cmdpat)
let [qr, qt] = [getreg('"'), getregtype('"')]
silent norm! gvy
let cmd = printf(a:cmdpat, shellescape(@"))
call setreg('"', qr, qt)
echo system(cmd)
if v:shell_error
echohl ErrorMsg | echom 'Failed to run ' . cmd | echohl NONE
endif
endfunction
Копирует текущий выбранный текст в безымянный регистр (см. :help ""
),
запускает данный шаблон команды через функцию printf
, а затем
выполняет результирующую команду, повторяя ее вывод.
Если единственная часть команды, которая изменяет это шаблон, удобно
определить отображение,
vnoremap <leader>g :<c-u>call FeedVisualCmd('"C:\Programme\WinGrep\grep32.exe" %s *.sql D:\MyProject\build')<cr>