Meine Vim Config enthält Plugins , die versuchen , aktuelle Projekt zu handhaben , Build - Tags, etc . Dies ist sehr nützlich für meine tägliche Programmierung in Vim, aber es ist nur ärgerlich, wenn ich Vim für einige schnelle Änderungen verwende, wie zum Beispiel:
- Bearbeiten einer Git-Commit-Nachricht;
- Bearbeiten Sie einen Shell-Befehl, wenn ich Ctrl+xCtrl+ezsh oder bash eingebe.
- usw.
Ich mag das auch --noplugins
nicht, da ich immer noch einige Plugins im Schnellbearbeitungsmodus nutzen möchte, wie Surround, Easy-Motion und viele andere.
Ich möchte also einen "Lichtmodus" (oder "Schnellmodus") haben, in dem einige der Plugins umgangen werden, aber nicht alle.
Meine erste Idee war, ein spezielles Kommandozeilenargument zu haben, das ich in Vimscript analysieren würde, aber schnelles Googeln zeigt, dass es derzeit in Vimscript unmöglich ist (übrigens schrecklich traurig).
Meine zweite Idee ist, beim Ausführen von vim eine Umgebungsvariable festzulegen, wie folgt:
$ VIM_LIGHT_MODE=1 vim
Dies funktioniert in Git:
$ git config --global core.editor 'VIM_LIGHT_MODE=1 vim'
Aber wenn ich das tue EDITOR='VIM_LIGHT_MODE=1 vim'
und Ctrl+xCtrl+edie Shell eingebe, funktioniert es nicht:
edit-command-line:13: command not found: VIM_LIGHT_MODE=1
Dann habe ich Folgendes versucht:, EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
aber es schlägt auch fehl:
vim': -c: line 1: syntax error: unexpected end of file
(Um ehrlich zu sein, sieht dieser besonders komisch aus, es scheint, dass ich falsch verstehe, wie genau er $EDITOR
verwendet wird, und ich bin froh, wenn jemand erklärt, was hier vor sich geht)
Alle anderen Experimente schlugen ebenfalls fehl.
Der einzige Hack, an den ich denken kann, ist, einige zu setzen servername
, wie:
$ vim --servername VIM_LIGHTWEIGHT_MODE
Und dann checken Sie v:servername
in Vimscript ein, aber das ist ein totaler Hack: Dafür ist Servername überhaupt nicht gedacht .
Gibt es einen saubereren Weg, um das zu erreichen, was ich will?
quelle
env
:EDITOR='env VIM_LIGHT_MODE=1 vim'
.vim
als ausführenvim -u .vimrc-light
.env
überhaupt nicht bewusst , mein Shell-Fu ist immer noch zu schwach. Erwägen Sie, es als Antwort zu schreiben, damit ich es akzeptieren kann.Antworten:
Es gibt (mindestens) zwei Möglichkeiten:
Verwenden Sie
env
:Verwendung
vim
mit einer anderen Initialisierungsdatei, z. B.vimrc-light
.:quelle
Während die akzeptierte Antwort sicherlich besser ist, möchte ich diskutieren
EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
. Das Problem hierbei ist, dassEDITOR
Argumente aufgerufen werden und die übergebenen Argumentebash -c
nicht automatisch an weitergeleitet werdenvim
. Sie müssen verwenden"$@"
:Das erste Argument nach dem Befehl in
bash -c
ist$0
jedoch nicht Teil von$@
. Daher müssen Sie ein Platzhalterargument verwenden:Mit diesen Fallstricken ist es keine gute Option, aber dennoch praktikabel.
quelle
Eigentlich ist Ihre erste Idee auch auf elegante Weise möglich. Sie können einen benutzerdefinierten Befehl erstellen und dann vim mit der
+
Syntax aufrufen .Definieren Sie einfach einen benutzerdefinierten Benutzerbefehl in Ihrer
.vimrc
Datei wie folgt:Dann können Sie über die Befehlszeile vim wie folgt starten:
Ich habe dies in meinem verwendet,
.vimrc
um mir Notizen zu machen, wie folgt:Dies ermöglicht es, es damit aufzurufen
vim +Note
. Erstellen Sie dann einen Shell-Alias in Ihrer Shells-rc
Datei, um das Aufrufen noch einfacher zu machen. In meiner.bashrc
Datei alias ich die obigen vim-Befehle wie folgt:Probenlösung
In Ihrem Fall könnten Sie etwas in diese Richtung in Ihre
.vimrc
Datei schreiben :Testen Sie dann den Lichtmodus, wie Sie möchten, auf Plugin-Basis oder in Gruppen von Plugins usw., indem Sie eine
if
ähnliche vim- Anweisung in Ihrer.vimrc
Datei verwenden:Dinge zu beachten
!
Befehl after the vimcommand!
bedeutet, dass alle ähnlich definierten Befehle mit demselben Namen überschrieben werden. Dies ist vorzuziehen.CustomUserCommandName
MUSS den ersten Buchstaben groß geschrieben habeng:
Sie verwenden können,s:
oder einen Bereich, der Ihren Anforderungen entspricht, nicht verschmutzen .quelle