Wiem, że wiele osób przechowuje swoje .vimrc na GitHub, aby ułatwić sobie rozpoczęcie pracy na nowych komputerach, co ma dla mnie pełny sens. Dołączanie wtyczek jest jednak problematyczne, ponieważ wtyczki, których używam, są już repozytoriami git. Jak stworzyć repozytorium, które będzie śledzić zarówno ich .vimrc, jak i wszelkie wtyczki, które mogą być zainstalowane?
vimrc
plugin-system
Tomek
źródło
źródło
Odpowiedzi:
Jak radzić sobie z repozytoriami w ramach repozytoriów było stałym pytaniem w git. GIT za Submoduły są jednym ze sposobów rozwiązania tej sytuacji, kosztem dodając trochę więcej złożoność śledzić. Witryna git zawiera wprowadzenie do podmodułów .
Podstawową ideą jest zachowanie odniesienia do innego repozytorium git powiązanego ze ścieżką w repozytorium. Odnośniki te są przechowywane w pliku
.gitmodules
w katalogu głównym repozytorium (którym zarządza git, więc zostaw je w spokoju). Część złożoności pojawia się podczas klonowania repozytorium, które zawiera submoduły: musisz jawniegit submodule init
utworzyć.gitmodules
plik, a następniegit submodule update
sklonować submoduły.Oto przewodnik, w jaki sposób dodam nową wtyczkę vim do mojego repozytorium dotfiles (
~/.vim/
alias do tego repozytorium.vim/
) za pomocą submodułu:Po
submodule add
, agit status
pokaże, że zmodyfikowałeś (lub utworzyłeś).gitmodules
plik za pomocą czegoś takiego:Powinien również zostać pokazany
.vim/bundle/vim-elixir
jako nowy plik. Git traktuje teraz tę ścieżkę specjalnie: jest to normalny katalog w systemie plików (więc vim ładuje go normalnie), alegit diff
traktuje go jako specyficzne zatwierdzenie z repozytorium. Kiedy patrzysz na diffs lub logi dla tej ścieżki (np.git log -1 -u .vim/bundle/vim-elixir
), Git pokaże ją jako ciąg jednowierszowy taki jak ten:Aktualizacja do najnowszej wersji wtyczki odpowiada wchodząc do repozytorium modułem i sprawdzeniu nowego popełnienia, a następnie popełnienia że do repozytorium:
źródło
Nie musisz przechowywać wtyczek w swoim VCS; możesz także użyć menedżera pakietów Vima. Od wczoraj używam wtyczki vim :
Możesz zdefiniować wtyczki w swoim vimrc w następujący sposób:
Następnie uruchom ponownie Vima, a następnie zainstaluj wtyczki za pomocą:
Lub możesz dodać ten fragment z FAQ do pliku vimrc przed
plug#begin()
wywołaniem:Spowoduje to wstawienie wtyczek
~/.vim/plugged
. Nie musisz przechowywać tego pliku w swoim VCS . Jeśli chcesz użyć tego vimrc na innym komputerze, po prostu zadzwoń:PlugInstall
na ten komputer.aby usunąć wtyczkę, usuń ją z pliku vimrc i uruchom:
Zauważ, że vim-plug nie obsługuje instalowania skryptów ze strony skryptów Vima, ale te skrypty są dublowane w GitHub , więc nie musisz tego robić.
Istnieją również dodatkowe korzyści, takie jak łatwiejsza aktualizacja wtyczki i ładowanie na żądanie w celu uzyskania lepszej wydajności. Nie ryzykujesz również naruszeniem warunków licencji wtyczek, które dystrybuujesz wraz z plikami vimrc.
Zobacz też:
źródło
Przechowuję moje vimrc w github i wtyczkach jako podmoduły mojego repozytorium.
W pliku readme.md umieszczam jeden linijkę, która wyciąga repozytorium, a następnie uruchamia skrypt instalacyjny, w ten sposób mogę skopiować jedną linię do edytora i wszystko konfiguruje. Robi coś więcej niż tylko vim (ale niewiele).
https://github.com/Loki-Astari/UnixConfig
Aby go użyć:
PS. Chętnie skorzystam z jakiejkolwiek rady (tak jak robiłem to przed wiekami i odtąd jej nie dotykałem).
Uwaga: Moją ulubioną częścią jest to, że konfiguruje także git i ustawia go tak, aby używał vima jako narzędzia do porównywania git. Vimdiff to najlepsze narzędzie do porównywania.
źródło
Jeśli chcesz pozostać przy Patogen, jednym ze sposobów może być użycie podmodułów Git . Kiedy dodajesz submoduł, git rozpoznaje go jako z innego repozytorium i pozostawia jego zawartość w spokoju (chyba że został zmieniony, w takim przypadku pokaże się jako posiadający nieśledzoną zawartość
git status
). Jeśli wszystkie twoje wtyczki oparte na Github są włączonebundle/
, to dodawanie ich jako submodułów jest dość prostym zadaniem z dobrą powłoką:Możesz zobaczyć, jak podmoduły pojawiają się na moim repozytorium vimrc .
Jeśli dodasz plik do podmodułu lub wprowadzisz jakieś zmiany, które nie wpływają na repozytorium,
git status
nadal będziesz narzekać na to, że w podmodule wprowadzono nieprzyjęte zmiany lub nieśledzone pliki. Możesz sprawić, aby git ignorował takie zmiany, dodającignore = dirty
do konfiguracji submodułu w.gitmodules
pliku. Na przykład:Jedną z zalet podmodułów jest to, że wersja podmodułu jest dodawana do repozytorium git, dzięki czemu
git init
automatycznie zajmuje się sprawdzaniem tej konkretnej wersji. Możesz to wyrzucić i powiedzieć gitowi, aby zignorował submoduły po ich dodaniu, dodając jeignore = all
do konfiguracji w.gitmodules
pliku. Na przykład:Na koniec jedno polecenie, aby je wszystkie zaktualizować!
Słowo ostrzeżenia: Jestem nowy w submodułach. Nie jestem do końca pewien, jak się zachowują.
źródło
Możesz po prostu dodać ten wiersz do swojego,
.gitignore
aby zignorować wszystkie wtyczki i nie zatwierdzać ich:Powiedziałeś też, że problematyczne jest, aby zawierał kod wtyczki, ponieważ są już repozytoriami github. Wydaje mi się, że masz na myśli, że nie chcesz powielać kodu, ale słyszałem, że powiedz, że powinieneś iść dalej i powielać kod, który jest zależnością, aby zawsze móc wrócić do określonego punktu w kodzie i wiedzieć, że to będzie działać. Oto kilka artykułów Jamesa Shore'a na ten temat: http://www.letscodejavascript.com/v3/blog/2014/12/the_reliable_build , http://www.letscodejavascript.com/v3/blog/2014/03/ the_npm_debacle . Mówi o programowaniu kodu i npm (w przeciwieństwie do vima), ale myślę, że argument nadal ma zastosowanie, potrzebujesz niezawodnego środowiska do kodowania lub pisania.
źródło