Jest kilka sposobów. Niektóre ze wspomnianych sposobów obejmują (myślę) tmux, screen, vim, emacs i powłokę. Nie znam emacsa ani ekranu, więc przejrzę pozostałe trzy.
Tmux
Chociaż nie jest wyborem X, tmux ma tryb kopiowania dostępny za pośrednictwem prefix-[
( domyślnie prefix
jest Ctrl+ B). Bufor używany w tym trybie jest osobny i wyłączny dla tmux, co otwiera całkiem sporo możliwości i czyni go bardziej uniwersalnym niż selekcje X we właściwych sytuacjach.
Aby wyjść z tego trybu, naciśnij q; do nawigacji, użyj swojego vim
lub emacs
bindowania (domyślnie = vim), więc hjkl
do ruchu, v/V/C-v
do wyboru postaci / linii / bloku itp. Kiedy masz wybór, naciśnijEnter aby skopiować i wyjść z trybu.
Aby wkleić z tego bufora, użyj prefix-]
.
Muszla
Wszelkie instalacja X11
wydaje się pochodzić z dwóch programów domyślnie: xclip
i xsel
(trochę jak jak to jest również wyposażony zarówno startx
a xinit
). Większość innych odpowiedzi wspomina xclip
i naprawdę lubię to xsel
za zwięzłość, więc zamierzam to omówić xsel
.
Z Xsel (1x) :
Opcje wprowadzania
-a, --append
dołącz standardowe wejście do zaznaczenia. Implikuje -i .
-f, - śledź
dołącz do wyboru, gdy rośnie standardowe wejście. Implikuje -i .
-i, --input
przeczytaj standardowe wejście do zaznaczenia.
Opcje wyjściowe
-o, --output
zapisz wybór na standardowe wyjście.
Opcje działania
-c, - jasne
wyczyść wybór. Zastępuje wszystkie opcje wprowadzania.
-d, --delete
Poproś o usunięcie bieżącego wyboru. Spowoduje to nie tylko wyczyszczenie zaznaczenia, ale także zgłoszenie żądań do programu, w którym zaznaczono, aby usunąć wybraną zawartość. Zastępuje wszystkie opcje wprowadzania.
Opcje wyboru
-p, --podstawowe
działają na wybór PODSTAWOWY (domyślnie).
-s, - Secondary
działają w trybie wyboru DRUGIEGO.
-b, - schowek
działają na wybór SCHOWKA.
I to wszystko, co musisz wiedzieć. p
(lub nic) dla PRIMARY
, s
dla SECONDARY
, b
dla CLIPBOARD
, o
dla produkcji.
Przykład: powiedz, że chcę skopiować wynik foo
z TTY i wkleić go na stronę internetową w celu zgłoszenia błędu. Aby to zrobić, najlepiej byłoby skopiować do / z sesji TTY / X. Powstaje więc pytanie, jak uzyskać dostęp do schowka z TTY?
W tym przykładzie założymy, że sesja X jest wyświetlana :1
.
$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1
Potem mogę to Ctrl-V
zrobić jak zwykle.
Teraz powiedz, że ktoś na stronie pomocy technicznej wydaje mi polecenie uruchomienia w celu rozwiązania problemu. To skomplikowane i długie.
$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99
Zamawianie pizzy wydaje się produktywnym wykorzystaniem wiersza poleceń.
...iść dalej.
Wigor
Jeśli skompilowany z +clipboard
(Jest to ważne! Sprawdź swój vim --version
), Vim powinien mieć dostęp do X PRIMARY
i CLIPBOARD
selekcji. Te dwie opcje są dostępne odpowiednio z rejestrów *
i +
, i mogą być zapisywane i odczytywane w czasie wolnym tak samo, jak każdy inny rejestr. Na przykład:
:%y+ ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example
Jeśli twoja kopia vima nie obsługuje bezpośrednio dostępu do selekcji X, to nie koniec świata. Możesz po prostu użyć xsel
techniki opisanej w ostatniej części.
:r ! xsel -bo ; read (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b ; write (w) to the stdin of (!) `xsel -b`
Powiąż kilka kluczowych kombinacji i powinieneś być dobry.
:%y+
w vim, który jest vim-speak dla „wycinania (kopia) wszystkie linie do«+»Register (XPRIMARY
schowku)”.%
Jeśli chcesz być konkretny, możesz zastąpić go zakresem. Ale są trzy zastrzeżenia: 1. Teraz musisz zapisać dowolny tekst do pliku, zanim będziesz mógł go skopiować. Jest to sprzeczne zxclip
poleceniem wymienionym w odpowiedziach. 2. Jeśli nie umiesz już vimować, może to być uciążliwe. 3. Możesz to zrobić tylko wtedy, gdy podczas kompilacji vima jest włączona pewna funkcja. Jeśli zainstalujesz GVim, powinien on być domyślnie włączony zarówno w GUI, jak i terminalowych instancjach vima.