2014-02-21 1 views
7

Fugitive.vim позволяет запускать команды git grep; к сожалению, результаты не сохраняются в quickfix-list, поэтому мне нужно запустить :cw после :Ggrep, чтобы иметь легко анализируемый список результатов.Получение «git grep» для эффективной работы в vim

Я хотел бы ввести :Ggr "def my_function" вместо:

:Ggrep "def my_function" 
:cw 

Как я могу определить эту :Ggr команду в моем файле .vimrc?

EDIT

Как только команда :Ggr определена, я могу сопоставить git grep на слово под курсором, который является действительно удивительным:

nnoremap <C-F> :Ggr <cword><CR> 
+0

возможно дубликат [VIM - несколько команд на одной линии] (http://stackoverflow.com/questions/3249275/vim-multiple-commands-on-same- line) – Nit

+1

Обратите внимание, что мне нужно передать аргумент: Ggr: Ggrep ... Так что это не так просто, как запуск двух команд подряд. –

+5

': Ggrep' заполняет список' quickfix', однако окно не открывается автоматически. Возможно, вы хотите, чтобы окно 'quickfix' открывалось после любого вызова grep,' autocmd QuickFixCmdPost * grep * cwindow', как предлагается в разделе [vim-fugitive FAQ] (https://github.com/tpope/vim-fugitive# Вопросы-Ответы). –

ответ

9

Это работает для меня:

:command -nargs=+ Ggr execute 'silent Ggrep!' <q-args> | cw | redraw! 
+0

Фантастический! Это действительно улучшает предыдущий ответ. –

+1

Вы могли бы добавить это как комментарий к моему ответу, так как это всего лишь небольшая настройка. Многие рассмотрят, что вы делали плохую форму. По крайней мере, документируйте изменения и почему они необходимы. –

9

Вы можете использовать <args> символ, чтобы вставить аргументы дано пользовательской команды:

:command -nargs=+ Ggr execute 'Ggrep' <q-args> | cw 

Примечание: Поскольку команда :Ggrep не имеет аргумент -bar, он не может быть прикован цепью, поэтому должен использоваться :execute.

+0

Это почти идеально: команда Ggrep открывает окно, которое должно быть закрыто до выполнения команды cw, поэтому я должен нажать , чтобы закрыть его. Есть идеи, как улучшить это? –

+0

Вы можете эмулировать это нажатие клавиши через '... | выполнить "normal \ " | cw', или (возможно, проще) попробуйте '... | закрыть | cw'. –

+0

Это не работает, у меня все еще есть сообщение «Нажмите ENTER для команды типа для продолжения», которое отображается после команды: Ggrep. –