2013-07-24 3 views
1

Я начал с отображением из this vim tip использовать lvimgrep для поиска в файлах для текущего слова под курсором:vimscript: Сформировать редактируемую команду из vimscript/отображения

map <F4> :execute "lvimgrep /" . expand("<cword>") . "/j **" <Bar> lw<CR> 

я понял, что я хотел бы изменить путь к файловому глобусу или шаблон поиска до фактического выполнения команды. для ex: когда курсор находится в переменной javascript в html-файле, нажатие F4 просто ищет переменные в файлах html. Было бы лучше, если бы он сформировал команду и позвольте мне отредактировать ее до ее выполнения. Удаление замыкающего <CR> распечатывает код как есть - командное окно показывает:

:execute "lvimgrep /" . expand("<cword>") . "/j **" <Bar> lw 

, но это трудно изменить. Я бы на самом деле, как отображение, чтобы показать:

:lvimgrep /theword/j *.js //---- cursor waiting here 

Я пробовал все, что я мог бы, но не уверен, как идти об этом - и vimscript не совсем легко.

PS: возможно контратип Editable vimgrep string in command line

PPS: окончательного отображения (я использовал <leader>*):

nnoremap <expr> <leader>* ":lvimgrep /" . expand("<cword>") . "/j **/*." . expand("%:e") . "\|lopen" 

ответ

2

Вы можете сделать это с :help map-expr вместо :execute. Это вычисляет выражение , а затем использует результат в качестве правой части отображения:

:nnoremap <expr> <F4> ":lvimgrep /" . expand("<cword>") . "/j **" 

В качестве альтернативы, вы можете вставить текущее слово <C-r><C-w>:

:nnoremap <F4> :lvimgrep /<C-r><C-w>/j ** 

Дополнительный совет: You should use :noremap ; он делает отображение неустойчивым к переназначению и рекурсии.

+0

perfect - '' отображение работало красиво – Raghu

Смежные вопросы