Możesz określić sekwencję znaków emitowaną przez klawisz, naciskając Ctrl- vw wierszu poleceń, a następnie naciskając klawisz, który Cię interesuje. W moim systemie dla F12, otrzymuję ^[[24~
. ^[
Reprezentuje Esc. Różne typy terminali lub emulatorów terminali mogą emitować różne kody dla tego samego klucza.
W wierszu polecenia Bash możesz wprowadzić takie polecenie, aby włączyć makro kluczowe, abyś mógł je wypróbować.
bind '"\e[24~":"foobar"'
Teraz, po naciśnięciu F12, w wierszu poleceń pojawi się „foobar”, gotowy do dalszej edycji. Jeśli chcesz, aby naciśnięcie klawisza natychmiast wprowadziło polecenie, możesz dodać nową linię:
bind '"\e[24~":"pwd\n"'
Teraz po naciśnięciu F12wyświetli się bieżący katalog bez konieczności naciskania Enter. A co, jeśli już wpisałeś coś w linii i używasz tego, co wykonuje się automatycznie? Może się zabrudzić. Możesz jednak wyczyścić linię jako część makra:
bind '"\e[24~":"\C-k \C-upwd\n"'
Przestrzeń zapewnia, że Ctrl- uma coś do usunięcia, aby dzwonek nie dzwonił.
Gdy już sprawisz, że makro będzie działało tak, jak chcesz, możesz je utrwalić, dodając je do ~/.inputrc
pliku. Nie ma potrzeby używania bind
polecenia ani zewnętrznego zestawu pojedynczych cudzysłowów:
"\e[24~":"\C-k \C-upwd\n"
Edytować:
Możesz także utworzyć powiązanie klawiszowe, które wykona coś bez zakłócania bieżącego wiersza poleceń.
bind -x '"\eW":"who"'
Następnie, gdy wpisujesz polecenie, które wymaga na przykład nazwy użytkownika i musisz znać nazwy zalogowanych użytkowników, możesz nacisnąć Alt- Shift-, Wa wynik who
zostanie wyświetlony, a monit zostanie ponownie wyświetlony z nienaruszonym poleceniem częściowym i kursorem w tej samej pozycji w linii.
Niestety, nie działa to poprawnie w przypadku kluczy, takich jak te, F12które wyświetlają więcej niż dwa znaki. W niektórych przypadkach można to obejść.
Polecenie ( who
w tym przypadku) może być dowolnym plikiem wykonywalnym - programem, skryptem lub funkcją.