Wie füge ich mit vim ein, ohne dass Code kommentiert wird?

74

Jedes Mal, wenn ich in vim einfüge, wird jede Zeile auskommentiert.

Gibt es einen Weg, dies zu umgehen?

Ausflug
quelle

Antworten:

162

Geben Sie dies vor dem Einfügen im normalen Modus ein:

:set paste

Rufen Sie dann den Einfügemodus auf. Sie sehen die Statusleiste sagen insert (paste). Fügen Sie Ihren Code ein. Drücken Sie ESC, um zum normalen Modus zurückzukehren, und:

:set nopaste

Sie befinden sich nicht mehr im Einfügemodus.

pkaeding
quelle
11
Zur Verdeutlichung werden im Einfügemodus viele Funktionen zur automatischen Formatierung und Einrückung gleichzeitig deaktiviert, sodass große Textblöcke sicher eingefügt werden können, ohne dass der Inhalt mungiert wird.
Ether
3
Vergessen Sie nicht, 'pastetoggle' zu lesen, was es einfacher macht, diese Schritte auszuführen. Zum Beispiel habe ich: set pastetoggle = <Einfügen> Auf diese Weise drücke ich einfach die Taste <Einfügen>, bevor ich Text einfüge. Wenn ich fertig bin, drücke ich erneut. Dies ist sehr praktisch, da ich Text mit Shift- <Einfügen>
Neg_EV
Fügen Sie das pastetoggle=<F2>zu Ihrem hinzu, .vimrcdamit Sie es nicht jedes Mal einstellen müssen. Wie bereits erwähnt, können Sie dies einem anderen Schlüssel zuordnen, wenn Sie möchten. <Insert>ist möglicherweise ideal, da standardmäßig der Ersetzungsmodus umgeschaltet wird. Welche IMO ist Müll.
Tyler Christian
1
Fast 9 Jahre nach der Beantwortung und das hat mir nur geholfen. Vielen Dank!
Digitalformula
43

Oder zu vermeiden , drehen pasteund ausgeschaltet, so stellen Sie den Text. Anstatt in den Einfügemodus zu wechseln und einzufügen, geben Sie im Befehlsmodus Folgendes ein:

"+p

Der +Puffer entspricht der Systemzwischenablage.

Wenn Sie darauf bestehen paste, etwas zu verwenden , würde ich vorschlagen, etwas zuzuordnen, um es umzuschalten. Zum Beispiel :set pastetoggle=<F2>(wow, wusste nicht, dass es dafür eine spezielle Option gibt)

Cascabel
quelle
@rampion: Ja, das habe ich ursprünglich erwähnt, aber zugunsten von herausgenommen pastetoggle.
Cascabel
'pastetoggle' existiert b / c Sie können keine Einfügemodus-Map verwenden, um 'Einfügen' wieder auszuschalten - wenn 'Einfügen' aktiviert ist, werden Einfügungen im Einfügemodus deaktiviert.
Graywh
2
das hat bei mir nicht funktioniert? Gibt es eine Überschreibung dafür, dass dies nicht funktioniert?
Serup
Es ist auch wichtig, Sicherheitsprobleme beim Hacken in der Zwischenablage zu vermeiden: thejh.net/misc/website-terminal-copy-paste in meinem Fall:inoremap <C-R>+ <C-R><C-R>+
SergioAraujo
1
Wenn ich "+ p"
starte