Deaktivieren der automatischen Kommentierung für alle Dateitypen
Frage
Ich habe mich eingeschaltet filetype plugin
für einige Rails vim-Plugins habe ich hinzugefügt, aber ein Nebeneffekt davon scheint zu sein, dass jetzt das automatische Kommentieren in allen Dateitypen aktiviert wurde (zum Beispiel, wenn ich eine Zeile mit beginne #
, die nächste Zeile, entweder durch Geben im Einfügemodus oder O, usw.um in den Einfügemodus zu gelangen, wird auch ein #
).
Ich habe eine gefunden Guide so deaktivieren Sie die automatische Kommentierung formatoptions
, und fügte folgendes zu meinem hinzu .vimrc:
au FileType * setlocal formatoptions-=cro
Ich habe jedoch immer noch Probleme - es sei denn, ich habe ausdrücklich :source .vimrc
, (oder geben Sie die setlocal ...
direkt), wird es nicht wirksam.Ich habe festgestellt, dass dies der Fall ist, weil die ftplugins von vim meine Optionen mit ihren eigenen überschreiben.
Ich habe dann eine gefunden zweiter Leitfaden was über die Verwendung eines After-ftplugin-Skripts spricht, um Änderungen vorzunehmen, nachdem die ftplugin-Skripte ausgeführt wurden. Ihre Lösung besteht jedoch darin, Symlinks für jeden einzelnen Dateityp in ~/ zu erstellen.vim / after / ftplugin in eine zentrale Datei, und das scheint mir klumpig zu sein.
Gibt es eine Möglichkeit, ein generisches After-ftplugin-Skript zu erstellen, oder gehe ich dieses Problem falsch an?Jede Hilfe wäre dankbar.
Lösung
Wie wäre es mit einem "Nachher" -Plugin?Erstellen Sie eine Datei in ~/.vim/after/plugin/
namens noAutoComments.vim
(oder was auch immer) und platziere deine autocmd darin?
Bearbeiten:
Der Grund, warum das funktioniert?Ich rate hier nur, aber ich habe das Gefühl, dass die autocmd
in der ~/.vimrc
die Datei wird von einer anderen Datei entfernt (aber bevor die "Nachher" -Dateien bezogen werden).
Am Ende habe ich meine entfernt ~/.vim
verzeichnis und ersetzte mein ~/.vimrc
mit den folgenden 3 Zeilen:
filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro
Mit nur diesen Zeilen in meinem ~/.vimrc
und nein ~/.vim/
verzeichnis, das autocmd
scheint wie erwartet zu funktionieren (Vim 7.1).
Für jede Datei, die ich bearbeite:
:verbose set formatoptions?
formatoptions=ql
Last set from ~/.vimrc
Ich muss jedoch noch feststellen, welche Datei (Plugin) dieses Problem verursacht.
Andere Tipps
Ich habe weitere Nachforschungen angestellt und es scheint, dass der Standort meines autocmd
innerhalb meiner .vimrc-Datei bestimmt, ob formatoptions
wird von vims ftplugins überschrieben oder nicht.Wobei vim --noplugin
um alle externen Plugins zu deaktivieren, habe ich die folgenden Ergebnisse gefunden:
Wenn mein vimrc so aussieht:
au FileType * setl fo-=cro
filetype plugin indent on
Das Ergebnis von :verbose set fo?
is:
formatoptions=croql
Last set from /usr/share/vim/vim72/ftplugin/ruby.vim
Wenn jedoch die Zeilen in meinem vimrc umgekehrt sind:
filetype plugin indent on
au FileType * setl fo-=cro
Das Ergebnis von :verbose set fo?
is:
formatoptions=ql
Last set from ~/.vimrc
...welches ist das gewünschte Ergebnis.Es scheint also, dass die autocmd
muss angegeben werden, nachdem Dateityp-Plugins aktiviert wurden.
Ein weiterer Grund, warum dies möglicherweise nicht wirksam wird...
Von :he :set-=
:
When the option is a list of flags, {value} must be exactly as they appear in the option. Remove flags one by one to avoid problems.
Ich habe
" Turn off auto-commenting au FileType * setlocal formatoptions-=c au FileType * setlocal formatoptions-=r au FileType * setlocal formatoptions-=o
weil ich darauf gestoßen bin.
Mit einem der verschiedenen autocmd
ereignisse zum Festlegen der Konfigurationsoption sollten funktionieren, wenn Sie die richtige finden, aber ich würde zunächst ausführen:
:verbose set formatoptions?
Dadurch erfahren Sie, wo die Option festgelegt wurde, wodurch Sie möglicherweise leichter bestimmen können, welches autocmd verwendet werden soll.Alternativ, wenn es Ihnen nichts ausmacht, ein bisschen kleineres Hacken, würde ich es wahrscheinlich nur tun, um herauszufinden, wo es im Plugin eingestellt ist, und diese Zeile auskommentieren (und notieren Sie es sich falls Sie jemals das Plugin aktualisieren).Sie können sich auch an den Autor des Plugins wenden und ihn bitten, es zu einer konfigurierbaren Option zu machen.
Für die verfügbaren autocmd
ereignisse, lesen Sie dies:
:help {event}
Ich habe von vielen vorgeschlagene Lösungen ausprobiert, aber keine davon hat bei mir funktioniert, aber ich habe eine sehr einfache Problemumgehung gefunden, nämlich in Ihrem ~/ .bash_aliases:
# vim without auto comment
alias vi="vi +'set fo-=cro'"
Ich hatte mit diesem Problem zu kämpfen und arbeite endlich mit den folgenden Zeilen:
syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro
Ich denke, der Schlüssel hier ist, dass die autocmd
ist Platz nach dem filetype plugin on
.