Używam Kubuntu 10.04. Chciałbym zmienić niektóre standardowe klawisze skrótów do bash (terminal).
Oto skróty, które chciałbym skonfigurować:
Ctrl- Caby skopiować zaznaczony tekst z terminala do schowka.
Ctrl- Vwkleić ze schowka do terminala.
Ctrl- Zaby cofnąć edycję na bieżącej linii w terminalu.
Ctrl- Shift- C(lub nawet lepiej Super- C), aby zakończyć polecenie.
Ctrl- Shift- Z(lub Super- Z) jako polecenie w tle.
Ctrl- Shift- V(lub Super- V), aby być dosłowną komendą wstawiania (lub cokolwiek Ctrl- zwcześniej).
Jak wprowadzić te zmiany?
BTW, podoba mi się sposób, w jaki terminal działa w systemie OS X. Użycie klawisza polecenia sprawia, że wszystkie polecenia kopiuj / wklej są bardzo spójne (w przeciwieństwie do wielu innych rzeczy w OS X).
PS Przeczytałem stronę podręcznika bash i to nie pomogło. Dało mi to pomysły, ale potrzebuję konkretnych przykładów dla powyższych kombinacji. Dzięki.
Odpowiedzi:
To nie są cechy bash, to cechy sterownika terminalu. Jako takie są one określone przez
stty(1)
.źródło
Teraz jest to prawie całkowicie rozwiązane. Część rozwiązania po raz pierwszy zwrócił moją uwagę MTK358 na stronie http://www.linuxquestions.org/questions/linux-software-2/change-bash-shortcut-keys-such-as-ctrl-c-818170/ . Zwrócił uwagę na (raczej oczywisty, ku mojemu zażenowaniu) fakt, że klawisze skrótów kopiowania i wklejania można łatwo zmienić za pomocą ustawień menu konsoli. Gdy to zobaczyłem, skonfigurowanie Ctrl-C i Ctrl-V zajęło około minuty, aby skopiować i wkleić z terminalem.
Druga część rozwiązania powinna być jasna ze strony stty man, ale nie była (dla mnie). Skończyło się na eksperymentowaniu na podstawie różnych wskazówek, takich jak te zamieszczone powyżej.
Zdecydowałem, który klucz nienumeryczny chcę zastąpić Ctrl-C jako polecenie zakończenia. (Użyłem „k”). Nigdy nie znalazłem żadnych informacji o tym, jak przekazać modyfikator zmiany do stty, więc zrezygnowałem z tego. Po podjęciu tej decyzji jedyne, co musiałem zrobić, to wpisać w wierszu polecenia:
stty intr \ ^ k
Sprawdziłem, czy wszystko działa zgodnie z oczekiwaniami.
Teraz po prostu musiałem umieścić jedno polecenie powyżej (stty intr \ ^ k) w skrypcie startowym. Nie jestem pewien, który z nich jest „właściwy”. Chciałbym, aby ta zmiana miała charakter systemowy i trwała.
Wszelkie sugestie dotyczące tego, w którym skrypcie powinienem umieścić polecenie?
Wreszcie, jeśli chodzi o odpowiedzi kaznodziejów, są one niepotrzebne i nieprzydatne.
źródło
Niektóre z nich można ustawić za pomocą normalnego mechanizmu skrótów klawiaturowych KDE. W menu „Ustawienia” Konsoli kliknij „Konfiguruj skróty”, a otrzymasz okno dialogowe, za pomocą którego możesz zmienić powiązania klawiszy dla funkcji obsługiwanych przez KDE. Umożliwi to ponowne mapowanie klawiszy Ctrl + C, aby skopiować, i Ctrl + V, aby wkleić - ale pamiętaj, że gdy to zrobisz, te sekwencje klawiszy nie będą już przekazywane do terminala, więc nie będziesz mógł użyć Ctrl + C, na przykład, aby przerwać program.
Inne funkcje są kontrolowane przez
readline
bibliotekę, którą można skonfigurować poprzez edycję pliku~/.inputrc
. Aby Ctrl + Z cofnął wszelkie zmiany dokonane w bieżącym wierszu, należy dodaćale ta sekwencja klawiszy jest już prawdopodobnie uwięziona przez terminal, więc być może będziesz musiał użyć,
stty
aby ją odłączyć, zanim zadziała. Najpierw wyszukaj^Z
w wynikachstty -a
(jak pokazano w odpowiedzi Ignacio), a następnie, na przykład, jeśli pojawi się wsusp = ^Z
, uruchomaby usunąć powiązanie tego klucza.
Inne zmiany, o które pytasz, musiałyby zostać wykonane,
stty
jak mówi Ignacio, ponieważ są to funkcje terminalowe, ale nie jestem pewien, jak dokładnie. Problem polega na tym, że nie wiem, czy terminal rozpoznaje Shift, a jeśli tak, to w jaki sposób przekazać te informacjestty
.źródło
Bash używa
emacs
lubvi
trybu w linii poleceń. Nie ma pojęcia „wybór” ani „schowek”. Używa takich rzeczy, jak „bufor zabijania” i „punkt”, „znak”, „słowo”, „linia”, „zabij” i „szarpnięcie” itp.Próba wprowadzenia do niego funkcjonalności przypominającej interfejs GUI będzie co najwyżej frustrująca i nie zadziała w pełni. Trzeba będzie spróbować połączyć funkcje
stty
,readline
a terminal (prawdopodobnieTerminal.app
dla ciebie). Trzeba będzie przemapować funkcje, takie jakintr
,susp
,lnext
, itd., Więc nadal można korzystać z ich możliwości.Zdecydowanie odradzam takie radykalne modyfikacje. Po prostu nie został zaprojektowany do robienia tego, co chcesz.
Kiedy w Rzymie...
źródło
Uruchamiam Ubuntu i zmieniłem skrót do Kopiuj z domyślnego Ctrl+ Shift+ Cna bardziej normalny i prosty Ctrl+ C. To jednak sprawiło, że napotkasz problemu nie jest w stanie wysłać polecenie przerwania ^ C .
Dzięki odpowiedzi @Paul znalazłem uruchomienie polecenia
Pozwoli mi wysłać polecenie przerwania za pomocą Ctrl+ K. Jednak to polecenie musiało być uruchamiane za każdym razem, gdy otwieram terminal, co jest kłopotliwe (tak jak sam wspomniał).
Przy odrobinie dalszych badań (googling 😂) odkryłem, jak wykonać polecenie za każdym razem, gdy terminal jest otwierany (w każdym razie w Ubuntu) .
Tak więc, ostatecznie uruchomienie następującego polecenia (raz) (w Ubuntu 18.04 i prawdopodobnie więcej) da oczekiwane zachowanie za każdym razem.
Na koniec warto wspomnieć, że nie wolno używać Kprzycisku. Możesz zamienić literę k we wszystkich powyższych poleceniach na dowolny wybrany klawisz litery.
źródło