Wie kann ich vim dazu bringen, keine Kommentare mehr vor neue Zeilen zu setzen?

50

Ich bearbeite meine .vimrcDatei und füge Kommentare hinzu. Wenn ich einen Kommentar wie diesen habe:

" example comment

Und drücken Sie dann die Eingabetaste am Ende der Zeile, nachdem Sie den Kommentar beendet haben. Die nächste Zeile wird automatisch als Kommentar eingerichtet (die Anführungszeichen werden automatisch eingefügt):

" example comment
" 

Wie kann ich dieses Verhalten beenden?

Greg
quelle

Antworten:

66

Dies wird mit der formatoptionsEinstellung gesteuert ; von :help fo-table:

Mit dieser 'formatoptions'Option können Sie beeinflussen, wie Vim Text formatiert. 'formatoptions'ist eine Zeichenfolge, die einen der folgenden Buchstaben enthalten kann. Die Standardeinstellung ist tcq. Sie können die Optionsbuchstaben zur besseren Lesbarkeit durch Kommas trennen.

Beachten Sie, dass die Aussage zu den "Standardeinstellungen" etwas irreführend ist, da viele Dateitypen die Formatoptionen so ändern, dass sie dem Dateityp am besten entsprechen. zum Beispiel in /usr/share/vim/vim74/ftplugin/vim.vim:

" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql

Sie können den aktuellen Stand anzeigen formatoptionsmit:

:set fo?
  formatoptions=jcroql

Und sehen Sie, wo sie so eingestellt waren:

:verbose set fo?
  formatoptions=jcroql
      Last set from /usr/share/vim/vim74/ftplugin/vim.vim

In diesem Fall möchten Sie das rFlag entfernen , aber möglicherweise auch das Flag cund o:

r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.

Das kann so gemacht werden:

:set formatoptions-=r formatoptions-=c formatoptions-=o

Beachten Sie, dass die Verwendung :set formatoptions-=cronicht wie erwartet funktioniert (da es sich um eine Zeichenfolge handelt, wird nach der Zeichenfolge croin dieser Reihenfolge gesucht, die häufig nicht funktioniert.).

Verwenden Sie anstelle von, um die Änderungen nur für den aktuellen Puffer :setlocalfestzulegen :set. Wenn Sie diese Optionen immer haben möchten , ist es wahrscheinlich am besten, ein autocmdin Ihrem vimrc zu verwenden. zum Beispiel:

au FileType vim setlocal fo-=c fo-=r fo-=o

Dadurch werden die Optionen nur für den Dateityp "vim" festgelegt und andere Dateitypen werden nicht beeinträchtigt.

Wenn Sie es immer einstellen möchten , verwenden Sie:

au FileType * set fo-=c fo-=r fo-=o

Nur die Verwendung von set fo-=crowird nicht funktionieren, da viele Dateitypen gesetzt / erweitert sind formatoption(wie oben gezeigt). Das FileType-Autocmd wird ausgeführt, nachdem die Dateitypdateien geladen wurden.

Martin Tournoij
quelle
1
Bestätigt. Es wird auch hier beantwortet: stackoverflow.com/questions/16030639/vim-formatoptions-or
Melon
1
Hinzufügen au FileType * set fo-=ozu meiner .vimrc hat nicht funktioniert. Ich drücke oauf eine kommentierte Zeile und sie kommentiert sie auch noch.
Ixx
Das nervt mich schon lange. Standardmäßig formatoptionswurde meine txt-Datei verpackt. Ich brach meinen Kopf herum textwidthund wrapmarginaber nichts funktionierte. Ich habe sogar mein vim von 8.1 auf 8.0 heruntergestuft, weil ich dachte, dass es ein Fehler ist. Dies löste mein Problem, danke.
Anishjp
2

Fügen Sie dies in Ihr vimrc hinzu:

au BufEnter * set fo-=c fo-=r fo-=o

Verwenden FileTypefunktioniert nicht, da andere Plugins eingestellt sind formatoption.

Aura
quelle
Dies scheint die einzige Lösung für mich zu sein, auch wenn ich alle Plugins in Vundle deaktiviere. Mit neovim. Irgendeine Idee, warum das sein könnte?
Andrew Gazelka