Jak skopiować tekst wielostronicowy z terminala do schowka?

13

Byłem przeglądania człowiek aktualizacja oprogramowania na moim komputerze i musiałem skopiować i wkleić część tego tekstu, ale tekst był o wiele więcej niż jedną stronę. Wiem, że mogę skierować dane wyjściowe do pliku i użyć oprogramowania opartego na interfejsie użytkownika, takiego jak gedit, aby skopiować potrzebny mi tekst. Ale czy można to zrobić z terminala?

Joseph zasugerował metodę wiersza poleceń (trochę skomplikowane, nie jestem jeszcze dobry w wyrażeniach regularnych w Linuksie). Zastanawiam się jednak, czy istnieje sposób, aby to zrobić, gdy jestem jeszcze na terminalu za pomocą myszy .

Mam nadzieję, że otrzymam ogólną odpowiedź, jednak używam Ubuntu.

Muhammad Gelbana
źródło

Odpowiedzi:

9

Mam kilka niedoskonałych, ale może przydatnych pomysłów.

Metoda 1 - myszka.

Użyj paska przewijania terminala.

Szczegóły (przy założeniu xterm; korekty będą wymagane w przypadku innych terminali).

  1. Włącz pasek przewijania, jeśli jeszcze nie jest. (W xterm, to jest w menu, które dostajesz za pomocą Ctrl + Button2.)
  2. Upewnij się, że lessnie działa z tą -copcją (mam tę opcję włączoną w mojej LESSzmiennej środowiskowej, ale to przeszkadza w tym, co zamierzamy zrobić, więc muszę wpisać, -caby ją wyłączyć).
  3. Używając dowolnych lesspoleceń, przewiń w górę lub w dół, aby pierwszy wiersz, który chcesz skopiować, był widoczny na ekranie.
  4. triple-Button1 wybrana linia początkowa, aby ją wybrać.
  5. Przewiń w dół, aż ostatni wiersz, który chcesz skopiować, będzie widoczny na ekranie. Musisz używać tylko spacji lub innych prostych klawiszy przewijania, a nie /wyszukiwania - chodzi o to, lessaby wysłać wszystkie linie do terminala, aby można je było skopiować.
  6. Przycisk 3 na wybranej linii końcowej, aby rozszerzyć wybór.

Możliwa trudność: bufor przewijania może nie być wystarczająco duży. Można to zmienić za xtermpomocą opcji saveLineszasobu lub -slwiersza poleceń, ale nie wiem, jak to zmienić w xtermie, który już działa.

Metoda 2 - nie myszy.

Użyj polecenia |(potok) w, lessaby wysłać tekst do xclip.

Detale:

  1. Używając dowolnych lesspoleceń, przewiń w górę lub w dół, aby ustawić ostatni wiersz, który chcesz skopiować, u góry ekranu. Możesz pominąć ten krok i następny krok, jeśli chcesz skopiować do samego końca.
  2. Użyj polecenia m(znak), aby ustawić znak w wybranej pozycji końcowej. Znaki są same w sobie przydatną funkcją i powinieneś je już znać vi, ale na wszelki wypadek: mxustawia znak, w którym xmoże być dowolną literą, i 'xwraca tam później.
  3. Teraz przewiń w górę, aby pierwszy wiersz, który chcesz skopiować, znajdował się u góry ekranu.
  4. Użyj polecenia potoku: |xpojawi się monit o wprowadzenie polecenia zewnętrznego. xPowinny być tego samego znaku nas użyty w mkomendzie, albo $dla „aż do końca”. Wpisz xcliptam.

Prosty przypadek skopiowania całej strony podręcznika sprowadza się do g|$xclipEnter.

Ostrzeżenie (tj . Okropna rzecz, która mi się właśnie przydarzyła ): xclipbędzie częściowo działało w tle, działając jako część lessgrupy procesów. Jeśli spróbujesz zawiesić less, rozpocznij inne zadanie na tym samym terminalu i wklej do niego, to nie zadziała. Potem, gdy później wybierzesz man/ lessjob, nagle wkroczy. Myślę, że należy to uznać za xclipbłąd ...


źródło
2
Użytkownicy komputerów Mac mogą używać pbcopy, jeśli nie mają zainstalowanego xclipa.
Mike Hedman
3

Multiplekser terminali taki jak tmuxlub screenzwykle ma taką funkcjonalność (tj. Zapisanie części bufora przewijania do pliku lub potokowanie go do jakiejś komendy), a używanie ich jest zwykle dobrym pomysłem, więc możesz rzucić okiem na jeden z nich .

Peter
źródło
2

Jak opisano w Nixcraft :

  1. Uzyskaj xclip:

    sudo apt-get install xclip 
    

    lub

    yum install xclip
    

    w systemie opartym na RPM.

  2. man man | your_magic_here | xclip -selection clipboard
  3. Ctrl+ Vdo zadowolenia twojego serca. Zamiast tego możesz usunąć, -selection clipboardaby wkleić, klikając środkowym przyciskiem myszy (nazywanym zaznaczeniem podstawowym).

Zauważ, że your_magic_herejest to symbol zastępczy dla filtru tekstowego ( sed/ awk/ perl/ ...), który wybiera żądaną część strony podręcznika zgodnie z konkretnym przypadkiem użycia, którego nie opisałeś, więc obawiam się, że nie mogę być konkretny z przykładem.

Joseph R.
źródło
Oprócz xcliptego jest też xsel(i inne). Możesz także zajrzeć do tej dyskusji schowka .
peterph
Czy można to zrobić za pomocą myszy? Gdy mysz osiągnie koniec strony, strona będzie przewijana.
Muhammad Gelbana
0

Zależy to od twojego programu terminalowego, ale większość programów terminalowych nie ma funkcji zapisywania zaznaczonego tekstu.

Wydaje się, że w LXTerminal, uxterm, Konsole i GNOME Terminal brakuje tej „funkcji”, ale mogą istnieć inni, którzy ją mają. Spójrz na strukturę menu programu terminalowego, a może być coś w rodzaju „Zapisz wybrane”

Timo
źródło
0

Zakładając, że używasz gnome-terminali lessjako pager manmożesz:

  • Prowadzony lessprzez manz -Xkluczem, aby wyłączyć alternatywnego ekranu, na przykład:LESS=-X man less

Umożliwi to dołączenie wyjścia mando bufora historii emulatora terminala. Zobacz tę odpowiedź, aby uzyskać więcej informacji /unix//a/38638/87918 .

  • Przewiń do ostatniej strony tekstu, który chcesz skopiować. (Cały przewijany tekst zostanie zapisany w buforze historii podczas przewijania)
  • Zaznacz tekst za pomocą myszy na gnome-terminalpoczątku od ostatniej strony do pierwszej, przeciągając myszą do górnej krawędzi okna. Szczegółowy proces wyboru tekstu opisano tutaj :

To nie działa w Gnome Terminal. Zamiast tego rozpocznij zaznaczenie lewym przyciskiem myszy i podczas jego przeciągania przeciągnij kursor myszy do krawędzi okna (lub poza okno). GT będzie przewijać rzeczy za ciebie, rozszerzając wybór w tym procesie. Przewijanie GT jest na tyle szybkie, że jest to dość wygodny i intuicyjny proces, prawdopodobnie lepszy niż xterm.

  • Teraz masz zaznaczony tekst (dowolne strony), który możesz skopiować i wkleić w dowolnym miejscu.
ks1322
źródło
0

Użyj | polecenie (potok) w mniejszej ilości znaków, na co odpowiedział Wumpus Q. Wumbley w swojej drugiej opcji , ale przekierowanie za pomocą tee, aby dołączyć do istniejącego pliku już tam w tym celu:

|tee >> ~/helpaggregator.txt

Sugeruję istniejący plik, ponieważ zwykle trzeba się konsultować podczas uczenia się nowych poleceń i lubi się je skonsolidować. Ponadto przydatne jest uzupełnianie tabulatorów.

taatparya
źródło