Vim setzt automatisch einen Kommentar fort, wenn ich im Einfügemodus die Eingabetaste drücke, was ich hilfreich finde.
Ich möchte jedoch nicht, dass der Kommentar fortgesetzt wird, nachdem im normalen Modus 'o' gedrückt wurde, um eine neue Zeile unter dem Ende des Kommentars einzufügen.
Ich habe gelesen, dass ich die Option o
aus meiner entfernen muss formatoptions
, also setze ich diese Zeile direkt am Ende meiner vimrc-Datei:
set formatoptions-=o
Aber es hat nichts geändert, und wenn ich :set formatoptions
von iside of vim ausführe , zeigt es mir, dass meine Formatoptionen sind croql
.
Wie werde ich das 'o' los?
Bearbeiten:
Ich habe einige Schritte befolgt, auf die in den Kommentaren von Sato Katsura hingewiesen wurde:
Die Lösung beginnt mit der Ausführung
:verb set fo
, um festzustellen, wo die Formatoptionen zuletzt geändert wurden.
Hier ist die Ausgabe an verb set fo
:
formatoptions=croql
Last set from /usr/share/vim/vim73/ftplugin/vim.vim
quelle
.vimrc
, sodass wir erst dann helfen können, wenn Sie es veröffentlichen. Ich vermute, ein Plugin ändert es oder es ist nicht die richtige Quelle.set formatoptions-=o
in meinem vimrc nicht?", Dass dies Kommentare deaktiviert, wenn das Drückeno
zufällig ist :-)Antworten:
Beim
vim
Start wird ausgeführt,$VIMRUNTIME/ftdetect.vim
um herauszufinden, welchen Dateityp Sie bearbeiten. Wenn Sie dann'ftplugin'
festgelegt haben, werden$VIMRUNTIME/ftplugin.vim
die Quellen ermittelt$VIMRUNTIME/ftplugin/&filetype.vim
(siehe:help startup
weitere Einzelheiten).Sie können ändern oder außer Kraft setzen
$VIMRUNTIME/ftplugin.vim
oder$VIMRUNTIME/ftplugin/&filetype.vim
. Erstellen Sie einen Ordner und einen Unterordner in Ihrem Home-Verzeichnis mit dem Namen.vim/after
.Wenn Sie Formatoptionen für alle Dateityp-Plugins überschreiben möchten, bearbeiten Sie sie, bearbeiten Sie sie
$HOME/.vim/after/ftplugin.vim
anderweitig$HOME/.vim/after/ftplugin/lua.vim
(oder ersetzen Sie sielua
durch eine beliebige Sprache - in Ihrem Fallvim
). Eine genaue Erklärung der Funktionsweise finden Sie unter:help 'runtimepath'
(und:help :runtime
).Fügen Sie den folgenden Inhalt in die Datei ein:
Sie können sehen, ob es funktioniert, indem Sie laufen
:scriptnames
. Sie sollten eine Liste wie die folgende erhalten:Beachten Sie die Zeilen 11 und 12. Ihre Dateipfade sehen etwas anders aus.
quelle
formatoptions
, aber meine werden.vim/after
nach diesen Plugins bezogen ...:scriptnames
.formatoptions
in der~/.vim/after/ftplugins.vim
Arbeit nicht - dann begegnete ich dieses Argument , die Art-of erklärt , warum.Ich fand heraus, dass ich mit einem Autobefehl eine provisorische Lösung bereitstellen kann.
Die folgende Zeile in Ihrer
.vimrc
Datei sollte die neuen Formatoptionen überall anwenden:Dies löst das Problem jedoch nicht wirklich. Ich verstehe immer noch nicht, warum ein einfaches
set
nicht genug war, und wie in den Kommentaren ausgeführt wurde, ist diese Lösung nicht ideal.quelle
formatoptions
(z. B. Perl, Ruby und mehrere andere). Dies scheint eine akzeptable Lösung zu sein?o
Benutzer ziehen es möglicherweise vor, bei der Verwendung unabhängig vom Dateityp niemals ein Kommentarzeichen hinzuzufügen. In diesem Fall erscheint dies angemessen.Ich hatte eine ähnliche Erfahrung wie OP.
Ich stellte fest, dass
t
dies zu meinem hinzugefügt wurde,formatoptions
obwohl ich absichtlich versucht hatte, es zu deaktivieren.Nachdem
:verbose set fo
ich sichergestellt hatte, dass es von .vimrc stammt, bemerkte ich, dass das Verhalten davon abzuhängen schien, wo ich die Formatoptionen in meine .vimrc-Datei eingefügt hatte. Ich stellte fest, dass dies geschah, weil ich esset nocompatible
in meiner Datei abgelegt hatte:Es stellt sich heraus, dass dies ausdrücklich erwähnt wird in
:help nocompatible
:Nachdem ich diesen guten Rat befolgt hatte, wurden meine
formatoptions
wie gewünscht erhalten. Ich weiß nicht, ob OP genau auf dieses Problem gestoßen ist oder ob es sich um eine andere Interaktion handelt, aber ich war froh herauszufinden, was es verursacht hat. Hoffentlich hilft dies jemand anderem herauszufinden, was (anfangs unerklärlich) seine Einstellungen ändert.Ich mag auch das Autocmd von theonlygusti - es gibt einige Optionen, die ich einfach nie einstellen möchte, unabhängig vom Dateityp. Ich sehe dich an
t
.quelle
Da viele von uns Vim-Benutzern darunter leiden, habe ich mich eingehender mit diesem Thema befasst.
Meine Lösung besteht darin, das
$HOME/.vim/after/ftplugin.vim
von @ abcq2 vorgeschlagene zu erstellen, nur um zu erkennen, dass es nichts ändert. Angesichts der Liste von:scriptnames
ist diese Datei viel zu früh als Quelle. Der zweite Vorschlag, eine$HOME/.vim/after/ftplugin/lua.vim
für LUA-Dateien zu erstellen, hilft jedoch.Durch
strace
ing habe ich gelernt, dass generische Nach-Plugins vom Dateityp bezogen werden, bevor der Dateityp und datentypspezifische Nach-Plugins nach dem Dateityp bezogen werden. Nicht sehr intuitiv, aber so funktioniert es.In meinem Blog gibt es mehr Informationen dazu.
quelle
after/ftplugin
helfen würde. Der bessere Weg ist vielmehr, datentypspezifische Überschreibungen zu verwenden (entweder mit einem FileType-Autobefehl oder einer bestimmtenafter/<filetype>.vim
Datei). Siehe auch die Hilfe bei:h ftplugin-overrule
after/<filetype>.vim
in meiner Antwort.Ich habe nachgesehen, welche Dateien / Pfade
vim
beim Laden versucht habenstrace
(wie hier beschrieben ), dann ein~/.vim/after/plugin/
Verzeichnis erstellt (es war der letzte Konfigurationsspeicherort, dervim
versucht hat zu laden) und dann meine~/.vimrc
mit diesem Speicherort verknüpft :Was ich gemacht habe mit
strace
:Grundsätzlich lief ich:
... dann sofort beenden
vim
(:q!
). Als nächstes lud ich~/vim_strace
($ vim ~/vim_strace
) und ging zum Ende (:$
). Dann fing ich an, von unten nach Zeilen zu lesen, die mit beginnenopenat(AT_FDCWD, "/home/karl/.....
.Das erste was ich sehe ist:
Aber hier möchte ich meine Konfigurationsoptionen nicht. Die nächste Zeile direkt über der
.viminfo
Zeile war:... "Keine solche Datei oder kein solches Verzeichnis", oder? Scheint wie ein Gewinner. Also, das ist der, den ich gewählt habe.
Funktioniert jetzt perfekt.
Hoffe das hilft jemandem irgendwo.
quelle
vim
die Optionen in der.vimrc
Datei berücksichtigt. Bitte lesen Sie die Frage und meine Antwort noch einmal durch und stellen Sie sicher, dass Sie sie verstehen.~/.vim/after/plugin/formatoptions.vim
mitset fo-=o
ist schmackhafter ... Aber das funktioniert immer noch nicht, wenn ein Dateityp-Plug-In dies überschreibt. Öffnen Sie beispielsweise Vim (ohne Datei oder eine nicht verwandte Datei) und:e
öffnen oder erstellen Sie dann eine*.vim
Datei. Sie werden sehen, dass Formatoptioneno
wieder enthalten sind, da dies für diesen Puffer von festgelegt wirdftplugin/vim.vim
und Ihreafter/plugin
Datei ihn nicht überschreiben kann.:set rtp?
Sie werden sehen , dass~/.vim/after
ist letzte. Aber wie bereits erwähnt, funktioniert dies nicht wirklich, dafo
es durch ft-Plugins zurückgesetzt wird und das ist hier wirklich das Problem.~/.vimrc
nachdem die anderen Plugins geladen wurden, wodurch ich~/.vimrc
die Standardeinstellungen wie beabsichtigt überschreiben konnte.