Kann ich die Fortsetzung von Kommentaren in der nächsten Zeile in Vim deaktivieren?


65

Wenn ich in Vim einen Kommentar in eine EnterCodedatei eingebe und einen Treffer tippe, wird die neue Zeile automatisch auch zu einem Kommentar.

Zum Beispiel in einer Ruby-Datei:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

Im Allgemeinen ist es das, was ich will, aber nicht immer. Wie kann ich dieses automatische Kommentieren vorübergehend deaktivieren?


Möchten Sie vorübergehend einen Befehl ausführen, der nur einmal ausgeführt wird, oder eine Option festlegen, die für einige Befehle gültig ist, bis Sie sie wieder einschalten? Mögliche Cross-Site-Duplikate: stackoverflow.com/questions/4896003/…
Ciro Santilli

Antworten:


86

Ich glaube, du suchst

:set formatoptions-=cro

Von :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

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

13
Ich danke dir sehr! Dieses Verhalten hat mich gestört - ich bin von UNIX VI auf Linux VIM umgestiegen. Für Googler: Für den dauerhaften Gebrauch siehe auch stackoverflow.com/questions/6076592/… und geben Sie diese Zeile autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
Uhr

Hat nicht geholfen; Bei der Eingabe wird /**<ESC>oin der nächsten Zeile immer noch ein Stern hinzugefügt.
Qix

Funktioniert nicht z
felwithe

8

Wenn Sie die Option 'Einfügen' vorübergehend aktivieren, können Sie zwar beliebig viele andere Funktionen von Vim deaktivieren:

Verwenden Sie :set pastees einzuschalten und um :set nopastees auszuschalten. Alternativ können Sie es :set paste!mit umschalten.

Siehe auch:

:help 'paste'
:help 'pastetoggle'

(Diese Befehle werden in einfache Anführungszeichen gesetzt.)


4
:set pasteum es ein- und :set nopasteauszuschalten
User

2
Alternativ können Sie :set paste!es mit WAHR und FALSCH umschalten
Felipe Alvarez

3

Ich gebe unformatierte einfache neue Zeilen mit ein <CR>.

Wenn ich die nächste Zeile im kommentierten Block weiter tippen möchte, benutze ich einfach Owie gewohnt die Taste.

Versuche dies:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>

1
Was meinst du damit <CR>? Ein bestimmter Schlüssel?
Peter Mortensen

1
CR steht für Carriage Return. Auf den von mir verwendeten Computern wurde es der Eingabetaste zugeordnet.
Sebastian Jylanki

0

Ich habe folgendes herausgefunden:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

Es hängt eine neue Zeile an, löscht alles, was dort bereits eingefügt wurde, und lässt den Cursor im Einfügemodus in der eingerückten Spalte, ohne die Formatoptionen zu beeinträchtigen.


0

Diese Antwort gilt für Debian und einige seiner Derivate.

Auf einer Debian-Distribution sind Vim-Standardeinstellungen nicht zumutbar. Sie befinden sich in /usr/share/vim/vim80/defaults.vimund werden angewendet, nachdem (!) /etc/vim/vimrcAusgeführt wurde. Die einzige Möglichkeit, Vim anzuweisen, die Standardeinstellungen nicht zu verwenden, besteht darin, sicherzustellen ~/.vimrc, dass sie auch dann vorhanden sind, wenn sie leer sind. Vim versucht beim Start zu lesen .vimrc, aber wenn die Datei nicht gefunden wird, wendet es die Standardeinstellungen an, was eine Menge unerwünschtes Verhalten mit sich bringt, z. B. Mausintegration, Macken beim Kopieren und Einfügen, automatisches Umbrechen von Kommentaren usw.

Unter Debian können Sie ALLES beheben, indem Sie einfach ausführen touch ~/.vimrc

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.