2013-02-07 6 views
7

Ich benutze Bildschirm, um Code, den ich mit Vim sehe, von einem Fenster in ein anderes Fenster zu kopieren, das gerade eine Datei mit Vim bearbeitet. Beim Einfügen in das zweite Fenster bekomme ich nach jedem Zeilenumbruch immer mehr Leerzeichen links von meiner Eingabe. Wie findet dieser Leerraum seinen Weg in meinen Puffer?Warum gibt es beim Einfügen mit Screen einen zusätzlichen Leerraum nach dem Zeilenumbruch?

Ich habe versucht, die automatische Einrückung zu deaktivieren, falls Vim den zusätzlichen Leerzeichen hinzufügt, aber das Problem bleibt bestehen.

Hier sind Informationen, die relevant sein könnten:

  • OSx 10.6.8
  • Beide Dateien sind Unix-Stil.
  • Screen-Version: 4.00.03
  • Vim Version: 7.3
  • Terminaltyp Basiswert: xterm-color

Antwort

18

kopieren Sie die Maus oder eine andere nicht-vim Weise verwendet? Wenn ja, müssen Sie vor dem Einfügen :set paste und danach :set nopaste tun. Eine schnelle Zuordnung finden Sie unter :h pastetoggle.

Wenn alle Ihre vim Sitzungen lokalen und Vim unterstützt (:echo has('clipboard')<CR> sollte 1 Echo), sollten Sie Ihr System-Zwischenablage verwenden: "+y zu zerren und "+p ohne diese lästigen Einrücken einzufügen.

Oder, besser, öffnen Sie Ihre Dateien in der gleichen Vim-Sitzung.

+0

Ich verwende Vim nicht zum Kopieren oder Einfügen. Ich benutze Screen um dies zu tun. Ich kann definitiv das Problem beheben, indem ich die Dateien in derselben Vim-Sitzung öffne, aber ich finde dieses Problem interessant und möchte es auf den Grund bringen. Was meinst du genau mit local? Wie im selben Host? – Daeden

+1

Das Problem ist der Pastenmodus. Do ': set einfügen' vor dem Einfügen, und das Problem wird weg sein. –

+0

Ja, auf demselben Host. Aus der Sicht von Vim ist das Einfügen aus dem Bildschirm oder mit "Cmd + v" das Gleiche: Der Text wird char durch Zeichen und Zeile um Zeile (aber sehr schnell) eingefügt und Vim wendet Formatierung und Einrückung an. Verwenden Sie "+ y" und "+ p". – romainl

0

Das Problem kommt aus dem listchars und die eol Vim ein Zeichen am Ende der Zeile hinzu, einige Benutzer zum Beispiel hinzufügen ↲

diese zusätzliche char Sie EOP in listchars nicht festlegen müssen entfernen, zum Beispiel :

set listchars=tab:\ \ ,trail:-,extends:>,nbsp:\ ,precedes:< 

Registerkarte durch Leerzeichen ersetzt werden, nachfolgende Leerzeichen mit erscheint -, etc ...

Als EOL nicht vorhanden ist, wird es dem Display nicht, dies wird Ihr Problem beheben