Jak skopiować tekst z wiersza polecenia do schowka bez użycia myszy?

10

Próbuję znaleźć sposób na skopiowanie bieżącego tekstu z wiersza polecenia do schowka BEZ dotykania myszy. Innymi słowy, muszę zaznaczyć tekst tylko za pomocą klawiatury. Znalazłem rozwiązanie w połowie drogi, które może doprowadzić do pełnego rozwiązania:

Ctrl+a - przejdź na początek linii.

Ctrl+k - przecina całą linię.

Ctrl+y - ciągnie wycięty tekst z powrotem.

Alternatywnie mogę również użyć Ctrl+udo wykonania pierwszych 2 kroków.

To oczywiście działa, ale staram się dowiedzieć, gdzie dokładnie jest zapisany wycięty tekst. Czy istnieje sposób na dostęp do niego bez użycia Ctrl+y? Jestem tego świadomy, xclipa nawet używam go do przesyłania tekstu bezpośrednio do schowka, więc zastanawiałem się nad przesłaniem zapisanych danych Ctrl+kdo xclip, ale nie jestem pewien, jak to zrobić.

Dotychczasową metodą jest napisanie skryptu, w którym xdotooldodaje echosię na początku linii i | zxcna końcu linii, a następnie wciska enter ( zxcjest to niestandardowy alias, do którego właściwie się prowadzi xclip). To również działa, ale nie jest to naprawdę „czyste” rozwiązanie.

Używam Cshell, jeśli to robi jakąkolwiek różnicę.

EDYCJA: Nie chcę używać screenjako rozwiązania, zapomniałem o tym wspomnieć.

Dzięki!

Sancho Pancho
źródło
Niepowiązane, ale także dobrze wiedzieć: Shift-Ins wkleja zaznaczenie do xtermu, jeśli nie tylko chcesz wyciąć tekst, ale także wkleić.
reż

Odpowiedzi:

7

Jeśli używasz xtermlub pochodna, możesz skonfigurować powiązania klawiszy, aby rozpocząć i zakończyć zaznaczenie tekstu, i zapisać go jako zaznaczenie podstawowe X11 lub bufor. Zobaczyć man xterm. Na przykład dodaj do ~/.Xdefaults:

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Możesz mieć tylko jeden XTerm*VT100.Translationswpis. Zaktualizuj serwer X11 o nową zawartość pliku za pomocą xrdb -merge ~/.Xdefaults. Rozpocznij nowy xterm.

Teraz, gdy masz trochę danych w wierszu polecenia, pisanie 1na klawiaturze numerycznej rozpocznie zaznaczanie tekstu w bieżącej pozycji kursora tekstowego, podobnie jak robi to przycisk 1 w dół myszy. Przesuń kursor za pomocą klawiszy strzałek, a następnie naciśnij klawisz 2na klawiaturze numerycznej, a tekst pośredni zostanie podświetlony i skopiowany do podstawowej selekcji i bufora odcinającego0. Oczywiście można wybrać inne bardziej odpowiednie klawisze i akcje. Możesz również wkleić zaznaczenie za pomocą powiązań takich jak insert-selection(PRIMARY).

meuh
źródło
To jest świetne! Nie miałem pojęcia, że ​​możesz to zrobić. Bardzo pomocny! Czy można go używać w konsoli?
Sancho Pancho
2
Rzuciłem okiem na instrukcję konsoli, ale nie wspomina o tego rodzaju kontroli. Jest mało prawdopodobne, że znajdziesz to w większości emulatorów terminali, ponieważ wolą oni zapewniać ustawienia, które są łatwiejsze do zarządzania za pomocą menu i okien dialogowych.
Meuh
translationsZasób jest funkcja X Toolkit nawiązywał do tu i tam, który nie ma odpowiednika w innych zestawów narzędzi. Możesz jednak przełączać się między zestawami tłumaczeń za pomocą tej keymapfunkcji (zwracając uwagę na komentarz „Możesz mieć tylko jeden”).
Thomas Dickey,
Dziękuję za wszystkie komentarze. Nadal nie dowiedziałem się o schowku ctrl-k / ctrl-y, czy ktoś wie, jak uzyskać do niego dostęp lub gdzie faktycznie zapisuje wycięty tekst?
Sancho Pancho
@SanchoPancho W zależności od twojego csh, implementuje wewnętrzny pierścień zabijania, który utrzymuje wycięty tekst i zapewnia mu z powrotem powiązania yank i yank-pop. Nie sądzę, żebyś miał jakikolwiek inny dostęp do tego pierścienia. patrz człowiek csh .
Meuh