Ich weiß, dass viele Leute ihre .vimrc auf GitHub speichern, um die Arbeit an neuen Maschinen zu vereinfachen, und das ist für mich absolut sinnvoll. Das Einbinden von Plugins ist jedoch problematisch, da die von mir verwendeten Plugins bereits Git-Repositories sind. Wie erstellt man ein Repo, das sowohl die .vimrc-Datei als auch eventuell installierte Plugins verfolgt?
vimrc
plugin-system
Tom
quelle
quelle
Antworten:
Wie man mit Repositories innerhalb von Repositories umgeht, war eine ständige Frage bei git. Gits Submodule sind eine Möglichkeit, die Situation zu bewältigen, auf Kosten von ein wenig mehr Komplexität, um den Überblick zu behalten. Die Git-Site enthält eine Einführung in Submodule .
Die Grundidee ist, einen Verweis auf ein anderes Git-Repository zu behalten, das einem Pfad in Ihrem Repository zugeordnet ist. Diese Referenzen werden in einer Datei
.gitmodules
im Stammverzeichnis Ihres Repositorys gespeichert (das von git verwaltet wird, lassen Sie es also in Ruhe). Ein Teil der Komplexität spielt beim Klonen eines Repos mit Submodulen eine Rolle: Sie müssengit submodule init
die.gitmodules
Datei explizit erstellen und anschließendgit submodule update
die Submodule klonen.Hier ist eine exemplarische Vorgehensweise, wie ich meinem Dotfiles-Repository mithilfe eines Submoduls ein neues VIM-Plugin hinzufüge (ich habe
~/.vim/
mich auf dieses Repository verlagert.vim/
):Nachdem der
submodule add
einegit status
würde zeigen , dass Sie (oder erstellt) die geändert haben.gitmodules
Datei, mit so etwas wie folgt aus :Es sollte auch
.vim/bundle/vim-elixir
als neue Datei angezeigt werden. Git behandelt diesen Pfad jetzt speziell: Es ist ein normales Verzeichnis in Ihrem Dateisystem (also lädt vim es normal),git diff
behandelt es aber als ein bestimmtes Commit aus seinem Repository. Wenn Sie sich Diffs oder Logs für diesen Pfad ansehen (zBgit log -1 -u .vim/bundle/vim-elixir
), zeigt git dies als einzeilige Zeichenkette an:Ein Update auf die neueste Version des Plug - Ins entspricht in das Submodul Repository zu gehen und eine neue begehen Check - out, und dann zu begehen , dass an Ihrem Repository:
quelle
Sie müssen keine Plugins in Ihrem VCS speichern. Sie können auch einen Vim-Paketmanager verwenden. Seit gestern benutze ich vim-plug :
Sie können Plugins in Ihrem vimrc folgendermaßen definieren:
Dann starte Vim neu und installiere die Plugins mit:
Oder Sie können dieses Snippet aus den FAQ vor dem
plug#begin()
Aufruf zu Ihrer vimrc-Datei hinzufügen :Dadurch werden die Plugins eingefügt
~/.vim/plugged
. Sie müssen diese Datei nicht in Ihrem VCS behalten . Wenn Sie diesen vimrc auf einem anderen Computer verwenden möchten, rufen Sie einfach diesen Computer an:PlugInstall
.Um ein Plugin zu entfernen, entfernen Sie es aus der vimrc-Datei und führen Sie Folgendes aus:
Beachten Sie, dass vim-plug die Installation von Skripten von der Vim-Skripten-Website nicht unterstützt. Diese Skripten werden jedoch auf GitHub gespiegelt , sodass dies nicht erforderlich ist.
Dies hat auch einige zusätzliche Vorteile, wie das einfachere Aktualisieren des Plugins und das Laden bei Bedarf, um eine bessere Leistung zu erzielen. Sie laufen auch nicht Gefahr, die Lizenzbestimmungen der Plugins zu verletzen, die Sie mit Ihren vimrc-Dateien verteilen.
Siehe auch:
quelle
Ich speichere mein vimrc in github und die Plugins als Submodule meines Repositorys.
In die Datei readme.md habe ich einen Einzeiler eingefügt, der das Repository abruft. Anschließend wird das Setup-Skript ausgeführt. Auf diese Weise kann ich eine Zeile in einen Editor kopieren und alles einrichten. Es macht ein bisschen mehr als nur vim (aber nicht viel).
https://github.com/Loki-Astari/UnixConfig
Um es zu benutzen:
PS. Bereit, Ratschläge anzunehmen (wie ich es vor langer Zeit getan habe und seitdem nicht mehr berührt habe).
Hinweis: Mein Lieblingsteil ist, dass es auch Git einrichtet und es so einrichtet, dass vim als Diff-Tool für Git verwendet wird. Vimdiff ist das beste Diff-Tool.
quelle
Wenn Sie bei Pathogen bleiben möchten, können Sie Git-Submodule verwenden . Wenn Sie ein Submodul hinzufügen, wird es von git als aus einem anderen Repository erkannt und der Inhalt bleibt unverändert (es sei denn, es wurde geändert. In diesem Fall wird angezeigt, dass der Inhalt bei Ihnen nicht verfolgt wurde
git status
). Wenn Sie alle Ihre Github-basierten Plugins installiert habenbundle/
, ist das Hinzufügen als Submodul eine relativ einfache Aufgabe mit einer guten Shell:Sie können sich ansehen, wie Submodule in meinem VIMRC-Repo angezeigt werden .
Wenn Sie einem Submodul eine Datei hinzufügen oder Änderungen vornehmen, die sich nicht auf das Repository auswirken,
git status
wird weiterhin darüber geklagt, dass das Submodul nicht festgeschriebene Änderungen oder nicht überwachte Dateien enthält. Sie können festlegen, dass Git solche Änderungen ignoriert, indem Sieignore = dirty
der Submodulkonfiguration in der.gitmodules
Datei hinzufügen . Beispielsweise:Ein Vorteil von Submodulen ist, dass die Revision des Submoduls zum Git-Repository hinzugefügt wird, so dass sich a
git init
automatisch um das Auschecken dieser bestimmten Revision kümmert. Sie können das wegwerfen und git anweisen, Submodule zu ignorieren, sobald Sie sie hinzugefügt haben, indem Sie sieignore = all
zu ihrer Konfiguration in der.gitmodules
Datei hinzufügen . Beispielsweise:Zuletzt ein Befehl, um alle zu aktualisieren!
Achtung: Ich bin neu in Submodulen. Ich bin mir nicht sicher, wie sie sich verhalten.
quelle
Sie können diese Zeile einfach zu Ihrer hinzufügen
.gitignore
, um alle Ihre Plugins zu ignorieren und sie nicht festzuschreiben:Sie sagten auch, dass es problematisch sei, den Plug-in-Code einzuschließen, da es sich bereits um Github-Repos handelt. Ich denke , Sie bedeuten , dass Sie nicht wollen , um den Code zu duplizieren, aber ich habe gehört , sagte es , dass Sie weitermachen sollen und doppelte Code , dass eine Abhängigkeit ist , so dass Sie immer in Ihrem Code zu einem bestimmten Punkt zurückgehen können und wissen , dass es wird klappen. Hier sind einige Artikel von James Shore, die darüber sprechen: http://www.letscodejavascript.com/v3/blog/2014/12/the_reliable_build , http://www.letscodejavascript.com/v3/blog/2014/03/ the_npm_debacle . Er spricht über Programmcode und npm (im Gegensatz zu vim), aber ich denke, das Argument gilt immer noch, Sie möchten eine zuverlässige Umgebung, in der Sie programmieren oder schreiben können.
quelle