2014-02-21 11 views
7

Fugitive.vim ermöglicht es mir, git grep Befehle auszuführen; Leider werden die Ergebnisse nicht in einer Quickfix-Liste gespeichert, daher muss ich :cw nach einem :Ggrep ausführen, um eine leicht analysierbare Ergebnisliste zu haben.Get 'git grep', um effektiv in vim zu arbeiten

Ich möchte :Ggr "def my_function" statt geben:

:Ggrep "def my_function" 
:cw 

Wie kann ich diesen :Ggr Befehl in meiner .vimrc Datei definieren?

EDIT

Sobald der :Ggr Befehl definiert ist, kann ich git grep auf das Wort unter dem Cursor Karte, die wirklich genial ist: können

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

möglich Duplikat [VIM - mehrere Befehle in derselben Zeile] (http://stackoverflow.com/questions/3249275/vim-multiple-commands-on-same- line) – Nit

+1

Beachten Sie, dass ich das Argument von: Ggr an: Ggrep übergeben muss ... Es ist also nicht so einfach, zwei Befehle nacheinander auszuführen. –

+5

': Ggrep' füllt die' quickfix' Liste aber das Fenster wird nicht automatisch geöffnet. Vielleicht möchtest du das 'quickfix'-Fenster nach jedem grep-Aufruf öffnen,' autocmd QuickFixCmdPost * grep * cwindow ', wie es im [vim-flüchtige FAQ-Bereich] vorgeschlagen wird (https://github.com/tpope/vim-fugitive#). FAQ). –

Antwort

9

Dies funktioniert für mich:

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

Fantastisch! Das ist wirklich eine Verbesserung gegenüber der vorherigen Antwort. –

+1

Sie könnten das als Kommentar zu meiner Antwort hinzugefügt haben, da es nur eine kleine Änderung ist. Viele würden überlegen, was du schlecht gemacht hast. Dokumentieren Sie zumindest die Änderungen und warum sie notwendig sind. –

9

Sie die Argumente einfügen <args> Symbol verwenden gegeben zu Ihrem benutzerdefinierten Befehl:

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

Hinweis: Da der :Ggrep Befehl nicht über das -bar Argument, es kann nicht verkettet werden, so :execute muss verwendet werden.

+0

Das ist fast perfekt: Der Befehl Ggrep öffnet ein Fenster, das geschlossen werden muss, bevor der Befehl cw ausgeführt wird, also muss ich drücken, um es zu schließen. Irgendeine Idee, wie man das verbessert? –

+0

Sie können diesen Tastendruck über '... | emulieren Führen Sie "normal \ " | aus cw', oder (vielleicht einfacher) probier '... | schließen | cw'. –

+0

Das scheint nicht zu funktionieren, ich habe immer noch die Meldung "Drücken Sie die EINGABETASTE des Typs, um fortzufahren", die nach dem Befehl: Ggrep angezeigt wird. –