2009-01-22 12 views
13

Ich denke, andere Redakteure sind schlau genug, um dieses Zeug zum Einfügen deaktivieren, aber wenn Vim in einem Terminal verwendet, kann es nicht zwischen einfügen und unterscheiden tatsächliche Eingabe.Smart Einzug in Vim (normalerweise groß) ist ein Desaster beim Einfügen in ein Stück Code

Welche Lösungen oder Workarounds haben Sie dafür?

Hinzugefügt: Es gibt auch eine Einstellung, die bewirkt, dass Kommentare in der nächsten Zeile automatisch fortgesetzt werden. Die Einrückung ändert zumindest nicht die Semantik des Codes, aber die automatische Kommentarfortsetzung vermasselt wirklich alles. Wenn ich darüber nachdenke, sollte ich das einfach abstellen - weiß jemand, wie diese Option heißt?

Antwort

21

: set Paste ist die Art und Weise, zu gehen, aber wenn Sie vergessen, wie ich es oft tun, dann, wenn Sie eine Sprache mit {} als Öffnen/Schließen von Blöcken verwenden, dann tun a =% auf der ersten {oder letzten} wird die Einrückung erneut anwenden.

+1

Schöner Trick mit dem =%. Ich habe vergessen = arbeitet an Bereichen. – strager

+0

Dies funktioniert tatsächlich mit jedem Sprach-Plugin, das Blöcke richtig definiert - Ruby zum Beispiel kann dies vom "Ende" aus tun. –

15

: set Paste

+1

: Nopaste setzen - um die Einrückung wieder einzuschalten –

+0

oh ho, danke. Sie müssen also daran denken, es vor und nach dem Einfügen zu setzen und zu löschen? Ich denke, ohne eine programmatische Unterscheidung von Einfügen und Tippen ist nichts mehr automatisch möglich. – dreeves

+0

Sie können die Tastenzuordnung verwenden, um sie an eine Reihe von Tasten zu binden. Aber ich habe das noch nie versucht. http://www.shlomifish.org/lecture/Vim/beginners/slides/slide30.html –

7

fügen Sie diese zu Ihrer .vimrc und verwenden Sie es mit der F2-Taste, bevor Paste-Status zu wechseln und nachdem Sie in Stücke von Code hinzufügen:

+0

Sie haben vergessen, Code in '\' 'einzufügen. – ZyX

+0

Das ist jetzt behoben;) – kguest

1

Ein anderer Weg, dies zu tun, vorausgesetzt, Sie Ihre Zwischenablage haben eingerichtet ist richtig

"*p 

Dies wird einfügen aus der Zwischenablage zu tun.

Überprüfen Sie Ihre vim --version. Unter OS X benötigen Sie +clipboard und Linux +xterm_clipboard, glaube ich.

Wenn Sie auf OS X sind, können Sie immer brew install macvim und mvim -v anstelle des gebündelten Vim verwenden (es wurde nicht mit +clipboard kompiliert).

+0

Das scheint nicht für mich in einem Xterm unter Mac OSX zu funktionieren. – dreeves

+0

überprüfen Sie Ihre vim --Version. Suchen Sie nach + xterm_clipboard oder + Zwischenablage. Ich benutze mvim -v. Ich habe -xterm_clipboard aber + Zwischenablage und es funktioniert gut. –