W tej chwili używam zbiegów do zarządzania prawie wszystkim związanymi z git, ale nie mogę znaleźć dobrego przepływu pracy, aby szybko wizualizować i przełączać się między dostępnymi gałęziami.
Mogę zrobić :Git checkout <branch-name>, problem polega na tym, że automatycznie uzupełnia zarówno nazwy plików, jak i gałęzie, i wolałbym listę gałęzi.
Kulminacją odpowiedzi tutaj są sposoby na osiągnięcie tego:
Vanilla Terminal Vim
Naciśnij CTRL- Zw trybie normalnym przeniesie Cię z powrotem do powłoki i zawiesi Vima. Po wykonaniu swój git checkout [branchname]wpisz fgpolecenie, aby powrócić do zawieszonego vim, które będą również zmusić Vima do odświeżenia.
Vanilla GUI Vim
Niektóre implementacje gvim będą miały :shellobsługę, która otworzy powłokę wewnątrz Vima za pomocą głupiego terminalu. Jednak może być łatwiej po prostu wpisać:
:!git checkout [branchname]
Spowoduje to wykonanie polecenia bez konieczności otwierania nowego polecenia powłoki. (Ta opcja jest również dostępna w terminalu Vim).
vim-uciekinier
vim-fugitive to wtyczka, która pozwala używać Gita z poziomu Vima. Poleceniem byłoby:
To fugitive, nie fugative, i to, co PO już korzysta.
muru
1
Świetna odpowiedź. vim-merginaltego szukałem.
Sergio D. Márquez,
1
Podoba mi się, ctrl-zponieważ automatycznie ładuje pliki. Współpracownicy lubią mieć okno tmux dla wiersza poleceń i jedno dla vima, ale kiedy robią kasy lub łączą się po powrocie do vima, muszą przejść do każdego otwartego pliku i za :e!każdym razem. ( :bufdo e) co jest bólem do zapamiętania. Zamiast tego łatwiej jest ctrl-zwtedy, gdy się fgzdarzy, Vim wykonuje :eauto-magię.
Powinieneś objąć swój terminal. Jeśli go użyjesz CTRL-Z, uruchomi on Vima w tle (lub dowolny proces, który aktualnie uruchomisz), a następnie możesz uruchomić dowolne polecenia, fgaby przywrócić proces na pierwszy plan:
Odpowiedź udzielona przez @ kubek2k jest tak fenomenalna. To rozwiązanie jest lepsze, niż mogłem sobie wyobrazić i zaimplementowane w mniejszej liczbie wierszy kodu, które mogłem zobrazować. Otworzyło to drzwi, aby pomóc mi zrozumieć potężne użycie „fzf” w personalizacji.
Lekko zmodyfikowałem go, aby dodatkowo zapewnić:
Korzysta ze zbiegów, aby uzyskać odwołania zamiast wiersza poleceń (lepsza obsługa systemu Windows)
Wyświetl tagi wraz z oddziałami
Oto niewielka modyfikacja:
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
, niefugative
, i to, co PO już korzysta.vim-merginal
tego szukałem.ctrl-z
ponieważ automatycznie ładuje pliki. Współpracownicy lubią mieć okno tmux dla wiersza poleceń i jedno dla vima, ale kiedy robią kasy lub łączą się po powrocie do vima, muszą przejść do każdego otwartego pliku i za:e!
każdym razem. (:bufdo e
) co jest bólem do zapamiętania. Zamiast tego łatwiej jestctrl-z
wtedy, gdy sięfg
zdarzy, Vim wykonuje:e
auto-magię.:checktime
przydaje się, aby ponownie załadować wszystkie otwarte bufory.Użyj wtyczki vim-conjinal ( rozszerzenie ulotne ). Oferuje interaktywny TUI dla:
źródło
Powinieneś objąć swój terminal. Jeśli go użyjesz CTRL-Z, uruchomi on Vima w tle (lub dowolny proces, który aktualnie uruchomisz), a następnie możesz uruchomić dowolne polecenia,
fg
aby przywrócić proces na pierwszy plan:źródło
:shell
to sposób na przejście do alternatywnego emulatora terminalu!git checkout [branchname]
Zbieg
Git checkout <branch>
ma tę wadę, że nie uzupełnia automatycznie nazwy oddziału. Za pomocą fzf.vim stworzyłem to polecenie:mam nadzieję, że okażą się przydatne
źródło
Odpowiedź udzielona przez @ kubek2k jest tak fenomenalna. To rozwiązanie jest lepsze, niż mogłem sobie wyobrazić i zaimplementowane w mniejszej liczbie wierszy kodu, które mogłem zobrazować. Otworzyło to drzwi, aby pomóc mi zrozumieć potężne użycie „fzf” w personalizacji.
Lekko zmodyfikowałem go, aby dodatkowo zapewnić:
Oto niewielka modyfikacja:
źródło