So kopieren Sie Text aus weniger

12

Wie kann man den gesamten Puffer kopieren, der von weniger angezeigt wird?
Sie müssen keinen bestimmten Text auswählen, ich möchte alles.
Das Kopieren in die Zwischenablage ist vorzuziehen, aber wenn wir es in eine Datei ausgeben können, die auch funktioniert.

Ich habe versucht, generische vimBefehle wie: w und die hier aufgeführten zu verwenden , aber solche lessBefehle scheinen nicht zu akzeptieren.

BEARBEITEN
Ich muss dies von innen heraus tun können less. Nehmen wir an, das lessstammt pipevon einem Alias, ich habe keine Kontrolle darüber, wie lesses tatsächlich aufgerufen wird. Mir wird nur das Ergebnis präsentiert.
Ich habe eine Möglichkeit gefunden, den Puffer zu speichern (siehe meine Antwort unten). Jetzt muss ich nur noch prüfen, ob es eine Möglichkeit zum Auswählen und Kopieren gibt. Angesichts der Einschränkungen gibt es wahrscheinlich keine.

Hashbrown
quelle

Antworten:

1

Speichern Sie den lessPuffer xselwie folgt in der Zwischenablage :

  1. Datei öffnen $ less file.txt

  2. In der lessPresse |(Rohr) dann$

  3. Schreiben Sie xsel -iund drücken Sie die Eingabetaste

less Pufferinhalt sollte kopiert werden.

Petr Javorik
quelle
Dies muss das gewesen sein, was @Neil mir zu sagen versuchte
Hashbrown
1
für andere Leute, wie @ahilsend feststellte, xsel -i ist gut für den mittleren Klickpuffer , aber verwenden xsel -ibSie, wenn Sie stattdessen den
Einfügepuffer
5

Geben Sie den Befehl :svon innen ein less, um den Puffer in eine 'Protokoll'-Datei zu schreiben.

Quelle : The "s" command is equivalent to specifying -o from within less

Hashbrown
quelle
5
save to clipboard
Ich
Es scheint möglich zu sein, ein Zwischenablage- :s /dev/clipboard~/.dev/clipboard
Dateigerät
3
  1. xselzuerst installieren
  2. Mit xsel in die Zwischenablage kopieren: less filename.txt | xsel -i
  3. füge es ein: xsel -o
rwxrwxrwx
quelle
1
Fügen Sie möglicherweise die -bOption hinzu, um die Auswahl der Zwischenablage zu verwenden.
Ahilsend
Danke @ahilsend, du hast recht. Übrigens verwende ich Clipit, um Zwischenablagen zu synchronisieren, und es funktioniert gut.
rwxrwxrwx
Ich sollte genauer sein, ich starte den lessBefehl nicht. Die lessAnsicht ist aktiv und Sie müssen den Inhalt dann kopieren. Ich denke also, dass es notwendig ist, eine eingebaute Funktionalität zu verwenden. Rohrleitungen können nicht verwendet werden
Hashbrown
3

Sie können den 'v'-Befehl von less dafür wiederverwenden.

Schauen Sie sich die Manpage für weniger an, speziell über LESSEDIT. Sie können den Vorschlag von @ rwxrwxrwx verwenden, wenn Sie vorab eine kleine Einrichtung vornehmen (möglicherweise in Ihrer .bashrc):

bash$ export LESSEDIT="%E < %f"
bash$ export EDITOR="xsel -ib"

Wenn weniger ausgeführt wird, drücken Sie 'v', um die aktuelle Datei im $ EDITOR zu öffnen. In diesem Fall öffnen Sie es mit xsel -ib < {the file's name}.

Mit wird xsel -ibdie Daten in die Zwischenablage verschoben, sodass Sie mit Strg-V die Daten an der gewünschten Stelle einfügen können.

Neil
quelle
Soweit ich weiß, können Sie nicht verwenden, :vwenn die Eingabe von kommt std-in, was in meinem Fall der Fall ist. Wird diese Methode dies irgendwie vermitteln?
Hashbrown
3
Sie können den Inhalt eines beliebigen Puffers mit in die Zwischenablage leiten g|$xsel -ib.
Neil
Sie können Ihren PFAD auch so ändern, dass er lessdurch etwas ersetzt wird, das zu vim umleitet.
Neil
Das würde eigentlich funktionieren. Sehr aufdringlich, wird aber funktionieren, @Neil
Hashbrown
Wenn ich es versuche, bekomme ich weniger /etc/php.ini | xsel -ib xsel: Anzeige kann nicht geöffnet werden: (null) Was mache ich falsch?
vfbsilva