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!


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).


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.