Im Moment verwalte ich fast alles, was mit Git zu tun hat, mit Fugitive, aber ich kann keinen guten Workflow finden, um die verfügbaren Zweige schnell zu visualisieren und zwischen ihnen zu wechseln.
Ich kann tun :Git checkout <branch-name>, das Problem ist, dass es sowohl Dateinamen als auch Zweige automatisch vervollständigt, und ich würde eine Zweigliste bevorzugen.
Die Antworten hier sind die Wege, um dies zu erreichen:
Vanilla Terminal Vim
Drücken Sie CTRL- Zim normalen Modus werden Sie zurück in die Schale fallen und suspendieren Vim. Nachdem Sie Ihren git checkout [branchname]Typ ausgeführt haben, geben Sie den fgBefehl ein, zu dem angehaltenen Vim zurückzukehren, wodurch auch Vim zum Aktualisieren gezwungen wird.
Vanilla GUI Vim
Einige gvim-Implementierungen werden :shellUnterstützung haben , die eine Shell innerhalb von Vim mithilfe eines dummen Terminals öffnen. Es kann jedoch einfacher sein, einfach Folgendes einzugeben:
:!git checkout [branchname]
Dadurch wird der Befehl ausgeführt, ohne dass eine neue Shell-Eingabeaufforderung geöffnet werden muss. (Diese Option ist auch im Terminal Vim verwendbar).
Flüchtling
vim-fugitive ist ein Plugin, mit dem Sie Git in Vim verwenden können. Der Befehl wäre:
Es ist fugitive, nicht fugative, und das ist , was OP bereits verwendet wird .
muru
1
Geniale Antwort. vim-merginalist, wonach ich gesucht habe.
Sergio D. Márquez
1
Ich mag das, ctrl-zweil es die Dateien automatisch lädt. Mitarbeiter möchten ein tmux-Fenster für die Befehlszeile und ein tmux-Fenster für vim haben, aber wenn sie beim Zurückkehren zu vim auschecken oder zusammenführen, müssen sie zu jeder geöffneten Datei und zu :e!jedem Zeitpunkt wechseln . ( :bufdo e) das ist ein Schmerz, an den man sich erinnert. Stattdessen ist es einfacher, ctrl-zwenn dann fgpassiert, dass Vim das :eAuto-Magisch durchführt.
Sie sollten Ihr Terminal umarmen. Wenn Sie verwenden CTRL-Z, wird Vim (oder welcher Prozess auch immer Sie gerade ausführen) im Hintergrund ausgeführt. Sie können dann beliebige Befehle ausführen, fgum den Prozess wieder in den Vordergrund zu bringen:
:shellist der Weg zu Ihrem anderen bevorzugten Terminal-Emulator
65-e9-7e-17
2
Ich mag immer!git checkout [branchname]
bronzehedwick
5
Der Flüchtling Git checkout <branch>hat den Nachteil, dass der Filialname nicht automatisch vervollständigt wird. Mit fzf.vim habe ich folgenden Befehl erstellt:
Die Antwort von @ kubek2k ist so phänomenal. Diese Lösung ist besser, als ich es mir hätte vorstellen und in weniger Codezeilen implementieren können, die ich mir hätte vorstellen können. Es öffnete mir die Tür, um den mächtigen Personalisierungsgebrauch von 'fzf' zu verstehen.
Ich habe es leicht modifiziert, um zusätzlich bereitzustellen:
Verwendet fugitive, um die refs anstelle der Befehlszeile abzurufen (bessere Unterstützung für Windows)
Listen Sie Tags zusammen mit Zweigen auf
Hier ist die leichte Modifikation:
function! s:gitCheckoutRef(ref)
execute('Git checkout ' . a:ref)
" call feedkeys("i")
endfunction
function! s:gitListRefs()
let l:refs = execute("Git for-each-ref --format='\\%(refname:short)'")
return split(l:refs,'\r\n*')[1:] "jump past the first line which is the git command
endfunction
command! -bang Gbranch call fzf#run({ 'source': s:gitListRefs(), 'sink': function('s:gitCheckoutRef'), 'dir':expand('%:p:h') })
fugitive
, nichtfugative
, und das ist , was OP bereits verwendet wird .vim-merginal
ist, wonach ich gesucht habe.ctrl-z
weil es die Dateien automatisch lädt. Mitarbeiter möchten ein tmux-Fenster für die Befehlszeile und ein tmux-Fenster für vim haben, aber wenn sie beim Zurückkehren zu vim auschecken oder zusammenführen, müssen sie zu jeder geöffneten Datei und zu:e!
jedem Zeitpunkt wechseln . (:bufdo e
) das ist ein Schmerz, an den man sich erinnert. Stattdessen ist es einfacher,ctrl-z
wenn dannfg
passiert, dass Vim das:e
Auto-Magisch durchführt.:checktime
es hilfreich sein, alle geöffneten Puffer neu zu laden.Verwenden Sie das vim-merginal- Plugin ( flüchtige Erweiterung). Es bietet interaktive TUI für:
quelle
Sie sollten Ihr Terminal umarmen. Wenn Sie verwenden CTRL-Z, wird Vim (oder welcher Prozess auch immer Sie gerade ausführen) im Hintergrund ausgeführt. Sie können dann beliebige Befehle ausführen,
fg
um den Prozess wieder in den Vordergrund zu bringen:quelle
:shell
ist der Weg zu Ihrem anderen bevorzugten Terminal-Emulator!git checkout [branchname]
Der Flüchtling
Git checkout <branch>
hat den Nachteil, dass der Filialname nicht automatisch vervollständigt wird. Mit fzf.vim habe ich folgenden Befehl erstellt:Ich hoffe, Sie finden es nützlich
quelle
Die Antwort von @ kubek2k ist so phänomenal. Diese Lösung ist besser, als ich es mir hätte vorstellen und in weniger Codezeilen implementieren können, die ich mir hätte vorstellen können. Es öffnete mir die Tür, um den mächtigen Personalisierungsgebrauch von 'fzf' zu verstehen.
Ich habe es leicht modifiziert, um zusätzlich bereitzustellen:
Hier ist die leichte Modifikation:
quelle