Ich arbeite in mehreren Gruppen, von denen jede ihre eigenen Tab- / Einrückungs- / Abstandsstandards in C hat.
Gibt es eine Möglichkeit, separate auswählbare VIM-Konfigurationen für jede zu haben, wenn ich eine Datei bearbeite, entweder:
- Ich mache so etwas wie
set group=1
eine Konfiguration auszuwählen - Eine lokale .vimrc, die sich im Arbeitsverzeichnis befindet, wird verwendet, um die Konfiguration automatisch festzulegen
Antworten:
Zusammenfassend
Es gibt einige Möglichkeiten, dies zu tun, von denen die meisten vorgeschlagen wurden, aber ich dachte, ich würde sie mit zwei zusätzlichen zusammenfassen:
~/project1
und Sie haben~/project1/.vim.custom
und tuncd ~ ; vim project1/file.c
, werden die benutzerdefinierten Einstellungen nicht gefunden.Nach einem Header suchen
In vielen Organisationen befindet sich oben in jeder Quelldatei ein Standardheader (mit einem Copyright-Hinweis, einem Projektnamen usw.). In diesem Fall kann Vim die ersten (z. B.) 10 Zeilen der Datei automatisch nach einem Schlüsselwort durchsuchen. Wenn es es findet, kann es Ihre Einstellungen ändern. Ich habe dies geändert, um es einfacher zu machen als das von mir verwendete Formular (das viele andere Dinge erledigt), aber erstelle ein
~/.vim/after/filetype.vim
(falls Sie noch keines haben) und füge so etwas hinzu:Immer wenn eine Datei eines beliebigen Typs geöffnet und der Dateityp festgelegt wird (die
au FileType *
Zeile), wird dieConfigureFiletypes
Funktion aufgerufen. Hiermit wird überprüft, ob der Dateityp in der Liste der Dateitypen enthalten ist, die der aktuellen Gruppe (GROUPNAME) zugeordnet sind, in diesem Fall 'c', 'cpp', 'vhdl' oder 'c.doxygen'. Wenn dies der Fall ist, wird CheckForGROUPNAMECode () aufgerufen, das die ersten 10 Zeilen der Datei liest, und wenn sie GROUPNAME enthalten, werden einige Anpassungen vorgenommen. Neben dem Festlegen von expandtabs oder was auch immer wird auch die Statusleiste geändert, um den Gruppennamen klar anzuzeigen, sodass Sie wissen, dass er auf einen Blick funktioniert.Beim Öffnen auf Konfiguration prüfen
Ähnlich wie bei JS Bangs kann es nützlich sein, eine benutzerdefinierte Konfigurationsdatei zu haben. Anstatt es in vimrc zu laden, sollten Sie Folgendes in Betracht ziehen, um zu überprüfen, wann eine .c-Datei für eine .vim.custom im selben Verzeichnis wie die .c-Datei geöffnet wird.
quelle
Ich habe das in
$HOME/.vimrc
:Auf diese Weise kann ich
.vim.custom
in jedes Verzeichnis eine Datei einfügen, um Befehle und Optionen zu laden, die für dieses Verzeichnis spezifisch sind. Wenn Sie an mehreren Projekten mit tiefen Verzeichnisstrukturen arbeiten, benötigen Sie möglicherweise etwas Anspruchsvolleres (z. B. den Verzeichnisbaum hochgehen, bis ein.vim.custom
gefunden wird), aber die gleiche Grundidee funktioniert.AKTUALISIEREN:
Ich mache jetzt so etwas, um eine
.vim
Datei aus demselben Verzeichnis wie die Datei zu lesen, die ich bearbeite, unabhängig davon, um welches aktuelle Verzeichnis es sich handelt.quelle
'exrc'
Option können Sie bereits ähnliche Aktionen ausführen. Es wird ein Laden.vimrc
/.exrc
/.gvimrc
im aktuellen Arbeitsverzeichnis.exrc
sollte die richtige Antwort sein. Alles andere scheint o hacky und kompliziert.exrc
ist nett, aber ich schätze es, die richtige Datei zu erhalten, auch wenn ich mich nicht im selben Arbeitsverzeichnis wie die Datei befinde, die ich bearbeite.Sie können auch automatische Befehle in Ihre einfügen,
.vimrc
die bestimmte Optionen pro Pfad festlegen.quelle
Plugin macht das Richtige: http://www.vim.org/scripts/script.php?script_id=441
„Dieses Plugin sucht im Dateisystembaum der aktuell geöffneten Datei nach lokalen vimrc-Dateien. Standardmäßig sucht es nach allen ".lvimrc" -Dateien vom Verzeichnis der Datei bis zum Stammverzeichnis und lädt sie in umgekehrter Reihenfolge. Der Dateiname und die Anzahl der geladenen Dateien können über globale Variablen angepasst werden. “
quelle
Vorausgesetzt, Ihre Entwicklerkollegen beschweren sich nicht darüber, können Sie jeder Datei in den Kommentaren jederzeit vim-Einstellungen hinzufügen.
quelle
Zu diesem Zweck habe ich ein Open-Source-Tool erstellt. Vergessen Sie die Header, Scans, Konfigurationen und lokalen vimrc-Dateien.
Versuchen Sie zu schwimmen.
Schwimmen
swim
ist ein schnelles Tool zum Wechseln von vimrc-Dateien und zum Erstellen praktischer Aliase. Hier ist eine kurze Verwendungsliste. Im Github-Repo finden Sie ein exemplarisches GIF und Anweisungen zum Herunterladen:Verwendung
Weiterlesen
https://github.com/dawsonbotsford/swim
quelle
Nachdem ich das im vorherigen Poster vorgeschlagene localvimrc-Plugin ausprobiert habe, mag ich es sehr, wenn die vim-Einstellungen pro Projekt nicht unübersichtlich gesteuert werden.
Vor dem Laden einer .lvimrc-Datei wird standardmäßig eine Bestätigung angefordert, es gibt jedoch eine Einstellung zum automatischen Laden von .lvimrc-Dateien. Einige sehen dies möglicherweise als Sicherheitslücke, aber es funktioniert wie angekündigt.
Ich habe mich dafür entschieden, die .lvimrc-Dateien .gitignore. Alternativ können Sie sie als gemeinsame Einstellungen einchecken (Tab / Space-Erweiterung, Tabstops, andere projektspezifische Einstellungen).
quelle
.lvimrc
Datei hinzufügen.gitignore
? Der Punkt ist, dass jeder, der vim verwendet und das Plugin installiert hat, die gleichen Einstellungen erhält.Wie von sledge erwähnt, ist die Verwendung dieses Plug- Ins die beste Option, die ich je gesehen und verwendet habe. jerseyboy kommentierte, dass das Dienstprogramm empfohlen habe, vor dem Laden um Bestätigung zu bitten (dh nach dem Öffnen jeder Datei). Um dies zu vermeiden, legen Sie einfach
.vimrc
die Liste der lokalen.lvimrc
Dateien an:let g:localvimrc_whitelist='/development/kernel/.lvimrc'
quelle
Hier ist eine Variation von Jamessan
Ich werde vi häufig ohne eine bestimmte Datei starten, zu der ich springe, damit das Laden der Konfiguration basierend auf dem aktuellen Arbeitsverzeichnis bedingt möglich ist. Nachteil ist, dass die Konfiguration nicht basierend auf der Datei angewendet wird, sondern außerhalb des Arbeitsverzeichnisses.
quelle
~/.vimrc
,/src/mobile
in mein Symfony- Projektverzeichnis/www/symfony
geändert (in meinem Fall ) und geändert,.vim.mobile
um.vim.symfony
dann eine neue .vimrc-Konfiguration in der~/.vim.symfony
DateiIch arbeite mit allen Arten von Open Source gleichzeitig. Es ist nicht praktisch, separate
.vimrc
Dateien zu erstellen und die Formatierungsstandards neu zu konfigurieren. Vor mehr als einem Jahrzehnt hatte ich es endlich satt, mich mit der Editor-Konfiguration zu beschäftigen, und schrieb ein Programm, das aufgerufen wurdeautotab
, um damit umzugehen .Wenn
autotab
die Einrichtung mit Vim vorgeschlagen wird, wird jedes Mal, wenn Sie eine Datei in Vim laden, dieseautotab
aufgerufen und die Ausgabe der Vim-Einstellungenautotab
an einen:set
Befehl übergeben.autotab
liest mehrere tausend Zeilen aus der Datei, analysiert sie und stellt fest , die Einstellungen für dieexpandtab
,tabstop
undshiftwidth
Parameter.Es wird ermittelt, ob die Datei harte Tabulatoren oder nur Leerzeichen zum Einrücken verwendet, und es wird die Einrückungsgröße ermittelt. Wenn die Datei mit Registerkarten eingerückt ist, wird die richtige Registerkartengröße ermittelt, basierend auf dem Rendern des Dateibeispiels unter Verwendung verschiedener Registerkartengrößen und der Beurteilung anhand von Heuristiken wie der zeilenweisen Ausrichtung interner Elemente.
Es funktioniert gut genug, dass ich vor Jahren aufgehört habe, den Algorithmus zu optimieren. Wenn es verwirrt wird, liegt dies fast immer daran, dass die Datei Formatierungsprobleme aufweist, z. B. die gleichzeitige Verwendung mehrerer Konventionen.
Es ist auch "Agnostiker" des Dateityps und funktioniert gut mit einer Vielzahl verschiedener Sprachen. Ich benutze es nicht nur über C, sondern auch über Shell-Skripte, Lisp, Makefiles, HTML und was haben Sie.
Beachten Sie, dass andere Formatierungsparameter, die projektspezifisch sein können, wie z. B. in C-Dateien, nicht behandelt werden, ob
case
Beschriftungen in einerswitch
Anweisung eingerückt sind oder nicht, oder ob umschlossene Funktionsargumentlisten einfach eingerückt oder an der ausgerichtet sind Klammer der Argumentliste öffnen. Vim hat Einstellungen für solche Dinge, und so könnte das Programm plausibel erweitert werden, um den Stil zu analysieren und diese Parameter auszugeben.quelle
Auf der Suche nach dem gleichen Problem habe ich auch das Sauce-Plug-In gefunden: http://www.vim.org/scripts/script.php?script_id=3992
Es behauptet:
Ich finde es besonders interessant, dass die Konfiguration in seinem Datenverzeichnis gespeichert bleibt, anstatt zu erwarten, dass der Benutzer Punktdateien über das Dateisystem streut. Dies ist jedoch oft eher eine Mischung aus persönlichem Geschmack.
Ich muss es allerdings noch testen.
quelle
Sie können mit versenkbaren für Schaltkonfiguration (keine dotfiles, nicht nur
.vimrc
)Installieren
stow
:Erstellen Sie mehrere Verzeichnisse für jede Konfiguration:
Setzen Sie verschiedene
.vimrc
in sie:Jetzt können Sie die vim-golang-Konfiguration mit diesem Befehl instanziieren (sollte im Verzeichnis dotfiles ausgeführt werden):
Jetzt ist es verbunden:
Wenn Sie die Konfiguration wechseln müssen, wiederholen
stow
Sie den Vorgang :Lesen Sie hier mehr darüber: Verwalten von Punktedateien mit GNU stow
Vorteile : ziemlich einfach, keine vim-Plugin-Abhängigkeiten, kann nicht nur zum Verwalten aller Punktedateien verwendet werden
.vimrc
.Nachteile : Konfigurationen sind unabhängig voneinander. Sie müssen sie einzeln verwalten / aktualisieren (wenn Sie die Konfigurationen nicht zu oft wechseln / aktualisieren, ist dies nicht das Problem).
quelle