Um sicherzustellen, dass das Verhalten nicht durch meine persönliche Konfiguration beeinflusst wird, möchte ich Vim so starten, dass alle von mir installierten Konfigurationsdateien ignoriert werden, als wäre Vim gerade erst zum ersten Mal neu installiert worden und der Benutzer hätte es ausgeführt sofort.
Dies wird in den häufig gestellten Fragen ( FAQ) angesprochen, die darauf hindeuten, dass Vim mit dem folgenden Befehl gestartet werden soll:
vim -u NONE -U NONE -N -i NONE
Dies wird zwar weitestgehend erreicht, die runtimepath
Option enthält jedoch weiterhin ~/.vim
und insbesondere ~/.vim/after
(wenn ich z. B. die Dateityperkennung anschließend einschalte und den Dateityp ändere, wird Code in ~/.vim/after/syntax/the_relevant_filetype.vim
ausgeführt).
Ich kann dieses spezielle Problem umgehen, indem ich beim Start die folgenden Befehle aufrufe *:
:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after
... aber ich bin nicht sicher, ob:
- Dies ist eine robuste Lösung: Sind dies die einzigen Pfade, die bewirken können, dass die Benutzerkonfiguration wirksam wird? Gibt es noch etwas, woran ich nicht gedacht habe?
- Es gibt einen besseren Weg, um das gewünschte Ergebnis zu erzielen.
* Durch die Verwendung von --cmd
oder -u vimrc
Shell-Argumenten oder einfach durch die manuelle Eingabe.
EDIT : Hier ist ein konkretes Beispiel für ein Problem, das ich zu beheben versuche. (Obwohl ich möchte, dass die Lösung andere mögliche Probleme behebt, auf die ich möglicherweise noch nicht gestoßen bin.):
Erstellen Sie eine Datei ~ / .vim / after / ftplugin / c.vim mit folgendem Inhalt:
noremap i :echom "This is not default behaviour"<CR>
Jetzt haben wir eine vom Benutzer installierte Konfiguration, die wir ignorieren möchten. Lassen Sie uns die in den FAQ vorgeschlagene Lösung testen.
Führen Sie Vim mit folgendem Befehl aus:
vim -u NONE -U NONE -N -i NONE
Geben Sie die Befehle ein:
:filetype plugin on :set ft=c i
Gewünschtes Verhalten : Vim sollte in den Einfügemodus wechseln. Dies ist, was es tun würde, wenn keine Benutzerkonfiguration existiert.
Beobachtetes Verhalten : Vim gibt "Dies ist kein Standardverhalten" aus.
HOME=/dev/null vim -u NONE
:?:cd ~
aber auch den Standardspeicherort derviminfo
Datei in $ HOME, was E138 verursachen kann. Ich denke, ein neues, leeres Verzeichnis zu erstellen und dieses für $ HOME zu verwenden, könnte die beste Lösung sein.-u NONE
?/tmp
wäre es vielleicht besser, aber dann habe ich / dev / null als schwarzes Loch gewählt. ... oder so ähnlichHOME=$(mktemp -d) vim ...
.-u NONE
? Kommt darauf an, welches Verhalten du brauchst, nehme ich an.Antworten:
Ab Vim 8.0.1554 (leider noch nicht Neovim) können Sie verwenden
vim --clean
. Diese Methode wird von empfohlen:help bugs
.:help --clean
docs:quelle
$HOME
Variablen herumzuspielen . Goodjob Vim Entwickler. Und danke für die Antwort!--clean
Funktioniertneovim
jetzt auch mit on master ( github.com/neovim/neovim/commit/… , wird in 0.4.0 aufgenommen), schließt jedoch das Ausgangsverzeichnis nicht aus.Eine Möglichkeit, benutzerspezifische Dateien zu entfernen, besteht darin, einen anderen Wert von zu verwenden
$HOME
. Um zuzulassen, dass nichts gelesen oder in etwas geschrieben wird (z. B. viminfo), können Sie Folgendes verwenden/dev/null
:Dies führt zu Fehlern
viminfo
in Bezug auf. Stattdessen können Sie einen temporären Ordner erstellen oder einen vorhandenen Ordner verwenden (z. B./tmp
):Mit einem solchen
$HOME
,-u NONE
möglicherweise nicht erforderlich, je nachdem, was Ihr Administrator auf das systemweite hinzugefügt hatvimrc
. Zum Beispiel, bei den Laborsystemen ich verwalten, fügte ich eine/etc/vim/vimrc.local
(bezogen von dem verpackten Vims Standard/etc/vim/vimrc
) , die hatnocompatible
,syntax
usw., Set, undfiletype on
außerdem.quelle
Ich kann nicht viel davon beantworten, aber einen Punkt, den ich nicht erwähnt sehe, und eine Interpretation dessen, was im Titel steht, beantworten
einige haben vorgeschlagen
vim -u NONE
odervim -u NORC
Das ist in gewisser Hinsicht ein bisschen mehr Barebones als nur keine vimrc-Datei. Wenn ich 'i' eingebe, heißt das nicht 'Einfügen'. Möglicherweise möchten Sie, dass weiterhin "Einfügen" angezeigt wird. Wenn Sie vim mit einer leeren vimrc-Datei gestartet haben, wird Einfügen angezeigt
Das liegt daran, dass vim zuerst eine Standardkonfiguration lädt.
Sie können vim auf diese Standarddatei verweisen, damit Ihre vimrc-Datei leer bleibt. Vergewissern Sie sich
/etc/vim/vimrc
, dass Sievim -u /etc/vim/vimrc
die Standarddatei haben und dies unter OSX tun können/usr/share/vim/vicmrc
quelle
vim --clean
wird geladendefaults.vim
. Diese Antwort bezieht sich auf das System vimrc (siehe:help system-vimrc
.), Von dem ich denke, dass es nicht geladen wirdvim --clean
.:help defaults.vim
), vielleicht besser der Benennung zu ändern ,default config
umsystem vimrc
in dieser Antwort. Oder noch besser, diskutieren Sie beide in der Antwort!Aus Vim-FAQ 2.5 :
quelle
ensure that none of the behaviour I'm seeing is caused by user config
- Dann versuchen Sie anscheinend genau das zu tun , was in dieser FAQ erklärt wird. Ich habe Ihre Frage erneut gelesen und verstehe immer noch nicht, aus welchen Gründen Sie sie genannt haben.runtimepath
Einstellung nicht.runtimepath
? Dies scheint die Standardeinstellung für diese Option zu sein, wie in erläutert:help rtp
. Wie wirkt sich dieser Wert auf Ihren Test aus?