Jak przypisujesz polecenia do klawiszy w terminalu?

10

Czy istnieje rozwiązanie umożliwiające przypisanie specjalnych kombinacji klawiszy do słów używanych w terminalu. Na przykład polecenie less jest bardzo przydatne i używam ia dużo, aby przesyłać przez nie wyniki innego procesu.

Chodzi o to, aby skonfigurować specjalne kombinacje klawiszy, które są aktywne tylko w użyciu terminala, przypisane do pisania różnych poleceń? Więc naciśnięcie Ctrl+ Lw oknie terminala może pisać

| less

lub Ctrl+ Gmoże oznaczać

| grep

Uwaga: mam na myśli tylko dodanie liter do wiersza poleceń, aby nie wykonać w końcu. Podobny sposób to uzupełnianie tabulatorów, ale bardziej konkretnie.

NES
źródło

Odpowiedzi:

10

Tak, możesz użyć polecenia bind

bind '"\ey"':"\"less \C-m\""

To odwzorowuje Alt-e na polecenie less i wykonuje je (przy pomocy \ Cm aka Ctrl-m)

Prawdopodobnie dla | musisz uciec.

bind '"\ey"':"\"\|less \C-m\""

Jeśli chcesz po prostu dołączyć go do wiersza poleceń, usuń * \ Cm \ ""

Zachowaj ostrożność, ponieważ zdefiniowano już kilka powiązań:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

Klawisz Control, jak widać powyżej, jest tworzony za pomocą Cm, więc możesz uruchomić mniejszą komendę za pomocą Ctrl-g, w następujący sposób:

bind '"\ Cg"': "\" \ | mniej * \ Cm \ ""

Aby uzyskać kody kluczy dla Alt (tylko dla ALT), możesz użyć polecenia read z powłoki:

@~$ read
^[y

^ [y jest równe \ ey

Aby uzyskać więcej informacji, na to pytanie odpowiedziano również w trybie stackoverflow:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts

tmow
źródło
dzięki, jak mogę usunąć powiązanie lub wyświetlić wszystkie powiązania?
NES
coś jest nie tak z twoimi pierwszymi 2 przykładami. zawsze wypisuje również symbol wieloznaczny po mniejszym czasie po przypisaniu przez ciebie składni wiązania.
NES
bind -p i bind -P pokażą wszystkie wiązania. Popełniłem błąd z gwiazdą ... Aktualizuję odpowiedź
tmow
wielkie dzięki. może masz pomysł, jak osiągnąć ten sam cel u ryb? do tej pory działało, ale problem polega na tym, że ryba wydaje się automatycznie wykonywać polecenie zamiast domyślnie dodawać ciąg do linii poleceń. oto strona linux.die.net/man/1/bind Niestety, przykład nie jest zbyt pomocny w mojej sprawie.
NES
Myślę, że jest to już wbudowana funkcja fishshell.com/user_doc/index.html#editor pozywający skrót Alt-p
tmow