it-swarm.com.de

Wie lösche ich beim Kopieren die Zeilennummer in Vim?

Ich kopiere etwas Code von einem Teil einer Datei in einen anderen Teil in vim. Ich finde, es gibt Zeilennummern in jeder Zeile und das Format ist weg.

so was:

            40         root /opt/release/current/public;
 67             41         passenger_enabled on;
 68              42 
50
why

Wenn Sie Zeilennummern haben, bin ich mir ziemlich sicher, dass Sie nicht die Yank/Put-Operationen von Vim verwenden (diese werden nie die Linenumbers, Foldcolumns, Icons usw. kopieren), da sie im Hinblick auf den Bearbeitungspuffer nicht funktionieren gibt es nicht.

Ich vermute, Sie arbeiten in einem Terminal-Emulator und kopieren mit der Maus Inhalte in die Zwischenablage, die möglicherweise den "fremden" Raum des Bildschirms auswählt (einschließlich virtueller Leerzeichen am Ende, Zeilennummern, Falzmarkierungen usw.).

Möglicherweise haben Sie Glück Einstellung

:se mouse+=a

um das Verhalten der Maus so zu erhalten, wie Sie es erwarten. Ansonsten machen Sie die Auswahl mit V<movement>...y (y für yank, was 'copy' entspricht)

Dann am Zielort einsetzen p (am Cursor platzieren) oder P (vor den Cursor stellen)

Lassen Sie mich wissen, ob das geholfen hat oder Sie weitere Informationen benötigen

76
sehe

Geben Sie im normalen Modus :se nonu ein.

Dies ist der einfachste Weg, um die Zeilennummern zu entfernen, und Sie können den Text ohne Zeilennummern kopieren.

32
Sandeep Singh

Falls jemand einen schnelleren Weg (unter Linux) will, habe ich festgestellt, dass Sie in vim die Strg-Taste gedrückt halten und über die zu kopierende Region ziehen können. Sie vermeiden die Zeilennummern und wählen den gewünschten Teil aus.

Schritte :

  1. strg und Fläche ziehen
  2. freigabe Strg
  3. kopieren (entweder Tastenkombination oder Rechtsklick)
17
sij_a

Eine dauerhafte Lösung hierfür ist das Hinzufügen des unten stehenden Codes am Ende Ihrer .vimrc-Datei in Ihrem Home-Verzeichnis.

se mouse+=a

Wenn Sie dies hinzufügen, können Sie nur Text und nicht die Zeilennummern auswählen, wie in der Abbildung unten gezeigt:

 enter image description here


Wenn Sie Ihre .vimrc-Datei nicht in Ihrem Home-Verzeichnis erhalten (dieses Problem ist aufgetreten), geben Sie den Befehl :scriptnames im vi-Editor ein. Der Speicherort der .vimrc-Datei wird angezeigt. Referenz

9
Sandeep

Alle zuvor eingegebenen Lösungen sind sehr gut. Manchmal verwenden Sie jedoch vim auf einem Remote-Server (sodass Sie nicht mit "+y in Ihre Zwischenablage kopieren können). Häufig unterstützen Terminals das Kopieren und Einfügen.

Ich verwende vim, um eine visuelle Auswahl in einer neuen Shell auszugeben, in der ich Text mithilfe der Terminalfunktion kopieren kann:

:'<,'>w ! bash -c cat

Dann kann ich die Ausgabe einfach kopieren.

Gleiches Muster zum Einfügen in vim:

:r ! bash -c cat

Dann füge ich EOF ein und sende es an cat using Ctrl+d. Bei dieser Methode wird auch vermieden, dass der eingefügte Text erneut eingezogen wird (Hinweis: Sie können die automatische Einrückung mit :set pi! deaktivieren).

5
Lynch

Schauen Sie sich die Pastetoggle-Option an, die manchmal auf F11 eingestellt ist.

Alternativ können Sie den Abschnitt, den Sie kopieren möchten, immer in eine temporäre Datei schreiben (ma, gehe zu Ende Zeile, dann :'a,.w tempfile) und dann in die zweite Datei einlesen.

Für weitere Untersuchungen sollten Sie sich die Autoindent-Option ansehen.

4
ColWhi

Unter Windows VIM GUI: :set nu und dann gedrückt halten Ctrl-Shift während Sie den gewünschten Text mit der Maus markieren. Dadurch werden die Zeilennummern in den Puffer verschoben.

1
Gaurav

Auf Mac: Ich habe herausgefunden, dass Sie den gewünschten Bereich mit Wahltaste + Befehl auswählen und kopieren und in einen anderen Editor einfügen können.

Ich habe den folgenden Befehl einer Taste zugeordnet.
Es entfernt den Leerraum um die kopierten Zeilennummern.
Es ignoriert den Zeilentext und alle leeren Zeilen dahinter.

:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>
0
bilyboy65

Sie können auch erwägen, sed und pbcopy zu verwenden, um die Zeilen in eine Zwischenablage zu kopieren, wo Sie sie in ein anderes Terminal oder Apps außerhalb von vim einfügen können.

sed -n <line start #>,<line end #>p <file name> | pbcopy

0
Steven Tsao