Chciałbym otworzyć plik z innej gałęzi w bieżącym repozytorium git. Widziałem to SO pytanie , ale sugestie dotyczące połączenia go z Vimem są kłopotliwe (ręcznie potokuj do Vima, otwórz standardowe wejście, ustaw typ pliku itp.). Czy istnieje prostszy sposób, który zachowuje wyróżnianie składni, ustawienia rodzaju pliku itp.?
Jeśli to pomaga:
- Mam zbiegłego wtyczki zainstalowanej (chociaż rzadko używany).
- Nie muszę go modyfikować.
Plik może być plikiem dla aktualnie otwartego bufora lub innym.
[RO]
w wierszu stanu).fugitive
potrzebuje ścieżki z katalogu głównego repozytorium. Odpowiedź już to obejmuje, ale błędnie założyłem, że zbieg mógł zrozumieć, kiedy znajdujemy się w określonym podkatalogu repozytorium.Jest to nieco szersze niż to, o co poprosił OP, ale dla osób, które nie chcą używać wtyczek i być może innych systemów kontroli wersji, ten mały fragment kodu działa dość dobrze:
Tworzy nowe okno i pokazuje tam plik, wczytując dane wyjściowe polecenia do nowego bufora. Działa to oczywiście z każdym zewnętrznym poleceniem, nie tylko z git.
Przykład dla bzr (gdzie w składni REV można określić gałąź):
Przykład dla hg (nie jestem pewien co do gałęzi w hg; nie używaj go wystarczająco)
Przykład dla svn (
Prawdopodobnie nadal chciałbyś ustawić typ pliku, aby uzyskać podświetlanie składni, tak jak w postach SO, ale przynajmniej nie musisz bałagać się pipingiem.
Po otwarciu możesz zapisać go pod nową nazwą za pomocą
:w filename
lub:saveas filename
, ponieważ Vim nie będzie miał jeszcze nazwy pliku. Jeśli nie chcesz móc go edytować, możesz także wrzucić a:setlocal readonly
i / lub:setlocal nomodifiable
.-Edycja: automatyczny typ pliku
To trochę więcej pracy, ale możesz poprosić Vima, aby odgadł typ pliku
Ale ponieważ Vim nie ma jeszcze nazwy, nie zawsze działa to dobrze (na przykład ściągnąłem kod C i zgadłem
filtype=conf
.Możemy nadać mu nazwę poprzez zapisanie, ale nie chcemy nadpisywać istniejącego pliku. Możemy również ustawić nazwę pliku (dzięki @PeterRincker!), Ale znowu nie chcemy ryzykować kolizji. Ponieważ istnieje małe prawdopodobieństwo, że istnieje plik, który jest jednocześnie nazwą gałęzi i nazwą pliku, połączymy je dowolnym separatorem
Gdzie
"file"
jest zastąpione rzeczywistą nazwą pliku i"branch"
nazwą oddziałuOczywiście w tym momencie prawie piszemy wtyczkę ;-)
Zrzucając to wszystko razem, tutaj jest to funkcja specyficzna dla git, którą możesz zostawić w vimrc:
które można zawinąć bezpośrednio w polecenie lub np
call GitFile("whateverBranch","myfile.c")
. Otrzymasz nowe okno z buforem o nazwiewhateverBranch-myfile.c
źródło
:file
nazwy pliku zamiast pliku tymczasowego. Zobacz:h :file