Zaznaczanie tekstu w terminalu bez użycia myszy

68

Mam zamiar nacisnąć klawisz Enter, aby uruchomić polecenie w terminalu, ale zanim to zrobię, chcę skopiować polecenie do schowka bez użycia myszy.

W jaki sposób?

Jeśli jesteś gdzieś innym niż terminal, Ctrl+ Homerobi to.

Czy istnieje sposób na dowolny wybór takiego tekstu w terminalu?

EDYTOWANE:

  • Załóżmy, że korzystanie z innych programów, takich jak, screennie jest dobrą alternatywą
  • tekst należy wkleić poza terminalem, więc Ctrl+ yi podobne sekwencje również go nie rozwiązują
Strapakowsky
źródło
1
Masz na myśli Ctrl-Shift-Home?
Ślimak mechaniczny
Shift-Home kopiuje na początek linii. Ctrl-Shift-Home kopiuje na początek strony.
Strapakowsky
Shift-Home i Ctrl-Shift-Home robią to samo dla mnie (przejdź do początku terminalu) i żadne z nich nie wydaje się kopiować niczego, co by nie zostało wstrzymane przez Ctrl-Y lub Ctrl-Shift-V (ani wybór). Ale działa w edytorze tekstu, nie kopiuje, po prostu wybiera. Korzystanie z OpenSUSE Leap 15 w Virtual Box. Działa każdy inny klucz przypisany w odpowiedziach.
Brambor

Odpowiedzi:

16

Powiąż następujący skrót:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Teraz po użyciu Crtl+ Ptwoja linia zostanie skopiowana do schowka. Możesz wkleić go w terminalu, używając:

xsel

I do dowolnej aplikacji X za pomocą środkowego przycisku myszy lub Shift+ Insert.

Nykakin
źródło
chcę uniknąć używania myszy. Czy można go wkleić za pomocą klawiszy Ctrl + Shift + V zamiast środkowego przycisku myszy?
MrGigu,
@MrGigu, używa innego schowka (patrz tutaj ). Musisz użyć innego skrótu. Domyślnie powinien to być Shift + Insert (patrz tutaj )
Nykakin,
Och, dzięki, shift + insert działa! nie wiedziałem, że możesz wkleić to polecenie.
MrGigu
Jakieś wyjaśnienie, co się tu właściwie dzieje?
Alexander
Lub użyj, xsel -baby użyć standardowego schowka, tj. Tego, który używa Ctrl + V / Ctrl + Shift + V. Warto również zauważyć, że ta metoda zawodzi w przypadku poleceń wieloliniowych.
wjandrea
27

Jeśli używasz jednej z powłok, która obsługuje klucze emacs (bash, csh itp.), Możesz skopiować bieżące polecenie, wykonując:

  1. control-A zabierze Cię na początek linii.

  2. control-K zabije całą linię, którą właśnie wprowadziłeś.

  3. control-Y odciągnie tekst.

Następnie możesz control-Ypociągnąć tekst z powrotem, aby wstawić tekst z powrotem jako dane wejściowe do edytora wiersza poleceń powłoki.

Zobacz, man basha potem, gdy się pojawi, wpisz /emacskilka nznaków (dalej), aby przejść do sekcji READLINE.

ElderDelp
źródło
Wiedziałem o tym, ale chcę wkleić poza terminal. Edytowane w celu wyjaśnienia.
Strapakowsky
3
control-Umoże wyciąć polecenie bezpośrednio z jego końca
vstepaniuk
1
Drugie polecenie zmieniło moje życie.
krishna
10

Najbliższe, o czym myślę, to Ctrl+ u, Ctrl+ y
Spowoduje to usunięcie kursora od początku linii, a następnie wklejenie z bufora odczytu. Nie jest to jednak dokładnie to samo, co w schowku, ale można by to wkleić do powłoki, jeśli tego potrzebujesz.

poważny
źródło
Wiedziałem o tym, ale chcę wkleić poza terminal. Edytowane w celu wyjaśnienia.
Strapakowsky
8

Istnieje program o nazwie screen. Tworzy system okienkowania tekstu, który pozwala przełączać się między wieloma instancjami. Ale umożliwia także zaznaczanie tekstu.

sudo apt-get install screen

To polecenie ją instaluje.

Następnie wpisz screen

Używasz ctr-a, aby rozpocząć sekwencję poleceń. Następnie naciśnij klawisz esc, a kursor przesunie się w dowolnym kierunku. Naciśnij enter, aby rozpocząć zaznaczanie tekstu, przejdź do punktu końcowego, naciśnij enter ponownie. To skopiuje do bufora.

Następnie ctr-a, a następnie} wklei

Więcej informacji na temat innych poleceń tutaj http://www.kuro5hin.org/story/2004/3/9/16838/14935

Meer Borg
źródło
Dobra sugestia, ale nie lubię screenz różnych powodów, więc załóżmy , że masz zwykły terminal Ubuntu. Zredagowałem moje pytanie w celu wyjaśnienia.
Strapakowsky
1
Należy to zaznaczyć jako prawidłową odpowiedź IMHO.
eddiewould
2

Jeśli jesteś w vimie, możesz wizualnie zaznaczyć jedną lub więcej linii za pomocą Shift+, va następnie użyć powiązania, np. yy, Aby przesunąć zaznaczenie do xclip .

Dodaj powiązanie do swojego vimrc:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Wymaga to zainstalowania xclip , znajduje się on w repozytorium aptitude Debian / Ubuntu.

xclipprzechowuje standardowe wejście, z -selection clipboardopcją wypycha standardowe wejście do schowka systemowego.

Możesz więc użyć xclipw ogólny sposób z terminala, na przykład, aby skopiować cały plik do schowka systemowego:

cat myfile | xclip -selection clipboard

Jeśli możesz opcjonalnie również utworzyć alias, taki jak:

alias cb="xclip -selection clipboard" 
Kris
źródło