Wie lege ich die Vim-Einstellungen für alle Dateien im aktuellen Verzeichnis fest?
Die ideale Lösung wäre, wenn Vim vor der Suche nach ~ / .vimrc nach einer .vimrc im aktuellen Verzeichnis suchen und diese lesen und dort die Einstellungen für den gesamten Baum anwenden würde.
Ich habe ein Plugin gesehen , aber dies bedeutet, dass die angewendeten Einstellungen nicht transparent sind, da das Plugin installiert werden muss. Im Gegensatz dazu ist eine Modeline transparent, da unabhängig vom vimrc oder dem spezifischen vim-Aufruf eines Benutzers die modeline-Einstellungen für diese Datei angewendet werden.
Dinge, die ich versucht habe, sind
- Platzieren einer .vimrc im Arbeitsverzeichnis
:so vimrc
in der modeline.
Ich nehme an, beide funktionieren aus Sicherheitsgründen nicht. Ich brauche nicht die volle Kraft eines Vimrc; Es würde ausreichen, an Einstellungen gebunden zu sein, die von einer Modeline akzeptiert werden. Mein Ziel ist es, Vimmern die Übernahme von Codierungsstandards in einem Projekt zu erleichtern.
Antworten:
Ich bin ein Verfechter des Plugin-Weges . Aus verschiedenen Gründen:
Übrigens kann die Lösung von etw verwendet werden, um eine einzelne Konfigurationsdatei zu erstellen. Dies ist dem Plugin-Ansatz sehr ähnlich, außer dass .vimrc mit nicht globalen Optionen parasitiert sein muss und nicht einfach mehrere / gemeinsam genutzte Konfigurationsdateien unterstützt.
quelle
Sie können so etwas eingeben
$VIM/vimrc
quelle
Ich würde dringend empfehlen, nicht zu verwenden
set exrc
Selbst
set secure
unter * nix führt vim weiterhin Autocommands, Shell usw. aus, wenn Sie die Datei besitzen. Wenn Sie also eine Datei in diesem Tarball bearbeiten wollten, schickte ich Ihnen Folgendes.vimrc
:Sie werden wahrscheinlich weniger amüsiert sein als ich.
quelle
Diese Frage ist alt, aber es scheint eine ziemlich natürliche und anhaltende Sorge zu sein.
Meine Lösung ist ziemlich einfach. Ich lege eine
.vimrc
Datei im Stammverzeichnis meiner Projekte ab. Die erste Zeile der.vimrc
Datei enthält normalerweise Quellen~/.vimrc
und fügt dann die gewünschte Konfiguration hinzu. Ich aliastvim='vim -u .vimrc'
und verwendetvim
in meinen persönlichen Projektverzeichnissen. "tvim" für "vertrauenswürdiges vim", was bedeutet, dass ich, wenn ich es in einem Verzeichnis mit einer.vimrc
Datei ausführe und etwas schief geht, nur mich selbst beschuldigen muss, da ich ausdrücklich gesagt habe, dass ich ihm vertraue. Außerdem bewahre ich eine Gruppe davon auf, damit ich manchmal nur den gewünschten Softlink für eine bestimmte Art von Projekt erstellen kann.quelle
source $HOME/.vimrc
von meinem lokalen.vimrc
, beschwert sich Vim, dass es meine systemweit installierten Plugins nicht finden kann (in diesem Fall Pathogen; derexecute pathogen#infect()
Befehl auf meinem$HOME/.vimrc
schlägt fehl mitUnknown function ...
). Wie kann ich das beheben?Das Platzieren einer .vimrc-Datei im Arbeitsverzeichnis wird tatsächlich unterstützt und nur standardmäßig deaktiviert. Siehe
:h 'exrc'
und:h startup
für Details'exrc'
ermöglicht die Einstellung das Lesen.vimrc
aus dem aktuellen Verzeichnis.Es wird auch empfohlen,
:set secure
dies zu verwenden. Dadurch werden:autocmd
Befehle für.vimrc
das aktuelle Verzeichnis gesperrt , Shell und Schreibvorgänge ausgeführt .Eine andere Sache, die einen Blick wert sein könnte, ist das Einrichten einer Sitzung (
:h session
) mit einer Standardansicht und Einstellungen für das Projekt.Alles in allem würde ich mich wahrscheinlich für die von Luc Hermitte selbst beschriebene Plugin-Option entscheiden.
quelle
Darf ich Ihnen raten, die vorhandenen Funktionen von vim anstelle von Plugins (Portabilitätsgepäck) zu verwenden, um Sicherheitsrisiken mit JEDEN "Autorun" -Funktionen für ALLES heutzutage zu minimieren?
Z.B.
Die vimrc-Datei meines lokalen Ordners heißt "_gvimrc" (absichtlich). Dies verringert die Hoffnung für Menschen wie Phen, sich auf unsere Kosten zu amüsieren. :-)
In meine $ VIM / .vimrc-Datei habe ich Folgendes eingefügt:
Am Ende.
Ich verwende "filereadable ()" über "fileexists ()", da das letztere etwas eigenartig ist, wenn es gefoltert wird, wenn mehrere (10+) Dateien gleichzeitig geöffnet werden (nicht sicher warum).
Natürlich können Sie Ihren eigenen eindeutigen Dateinamen angeben, um potenzielle Unruhestifter weiter zu verschleiern. Wie "_mygvimrc", "_gobbledygook" usw. Sie müssen sich nur auf einen standardisierten Namen festlegen und ihn entsprechend in Ihrem $ VIM / .vimrc angeben. Wenn Sie sich dabei auf vi / vim-Interna verlassen, werden Portabilitätsprobleme ausgeschlossen. ABER nennen Sie es NICHT .vimrc (oder _vimrc), um rekursives Sourcing zu verhindern, falls Sie die Datei $ VIM / .vimrc später mit vim bearbeiten.
Ich benutze dies seit Windoze 98SE, über Windork XP Pro und jetzt Windorkier 7 (bereits ab 5 Jahren). Ich werde eine Liste von TXT-Dateien im Explorer markieren und dann "Mit mehreren Vim bearbeiten" verwenden, was dazu führt, dass mehrere Vim-Fenster gleichzeitig geöffnet werden. Für meine Arbeit mache ich das mehrmals täglich. Alle Dateien wurden mit dem behandelt, was ich in meinem lokalen _gvimrc festgelegt habe.
quelle
Angenommen, die Benutzer fügen nicht alle paar Tage Dateien hinzu, können Sie wahrscheinlich oben in jeder Datei eine Modeline hinzufügen. Wenn Ihr Versionskontrollsystem dies zulässt, können Sie wahrscheinlich eine Regel durchsetzen, die besagt, dass jede Datei beim Einchecken eine Modeline haben muss.
quelle
Ich stimme dem Plugin-Ansatz aus Sicherheitsgründen zu.
Es gibt ein sehr gutes Plugin, das noch nicht erwähnt wurde. Damit können Sie a
.lvimrc
in Ihren Projektverzeichnissen verwenden.Probieren Sie "localvimrc" aus:
http://www.vim.org/scripts/script.php?script_id=441
https://github.com/embear/vim-localvimrc
quelle
Verwenden Sie "editorconfig"
Wenn die Arten von Codierungsstandards, die Sie erzwingen möchten, mit dem Einrückungsstil, der Registerkartengröße, dem Dateiformat und dem Zeichensatz zusammenhängen, sollten Sie sich "editorconfig" ansehen , einen editorübergreifenden Standard, in dem diese Art von Einstellungen angegeben werden ein bestimmtes Projekt, und lassen Sie alle Editoren dieser Konfiguration folgen.
Mit der Spezifikation "editorconfig" können Projekte je nach Dateierweiterung oder Namen innerhalb des Projekts unterschiedliche Einstellungen anfordern. (Sie können also Makefiles mit TABs verwenden, Ihre Python-Skripte mit 4 Leerzeichen und Ihre Shell-Skripte mit 2 Leerzeichen zum Einrücken.)
Sie benötigen ein Plug-In, um "editorconfig" in Vim verwenden zu können. Die offizielle Website bietet eine, aber ich persönlich würde sgur / vim-editorconfig empfehlen , die in reinem Vimscript geschrieben ist, damit Sie sich nicht zu viele Gedanken über externe Abhängigkeiten machen müssen.
Da "editorconfig" auf eine Cross-Editor-Kompatibilität abzielt, ist die Funktionsweise ziemlich eingeschränkt. Wenn Sie also konsistente Leerzeichen, Dateiformate (DOS vs. Unix) und Codierungen (Unicode utf-8 usw.) wünschen, dann "editorconfig" " ist für Sie.
quelle
Versuchen Sie es mit vim-localrc
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
quelle
Ich habe mir die Plugins angesehen, die es gab, und habe mir keine wirklich vorgestellt, also habe ich eine einfache Funktion geschrieben, die sich auf vim-flüchtig stützt . Dies hat den Vorteil, dass das Stammverzeichnis des Projekts immer das Stammverzeichnis des Repositorys ist und ich die Datei zusätzlich hashen kann, um eine Vertrauensstellungstabelle zu führen. Fügen Sie einfach Folgendes in Ihre
.vimrc
Datei ein.Wenn die
!
Option in derviminfo
Einstellung festgelegt ist,SAFE_VIMRC
bleibt das Wörterbuch zwischen den Läufen erhalten (beachten Sie^
, dass Sie die Option voranstellen müssen, damit die Option nicht durcheinander gebracht wirdn
).quelle