Как вы назначаете команды для клавиш в терминале?

10

Есть ли решение назначить специальные комбинации клавиш для слов в терминальном использовании. Например, команда less очень полезна, и я использую ia для передачи результатов другого процесса через нее.

Идея состоит в том, чтобы установить специальные комбинации клавиш, которые активны только при использовании терминала, назначенного для написания различных команд? Таким образом, нажав Ctrl+ Lв окне терминала можно написать

| less

или Ctrl+ Gможет означать

| grep

Примечание: я просто имею в виду добавление букв в командную строку, а не выполнение в конце. Похожий способ, что такое tabcompletion, но более конкретный.

NES
источник

Ответы:

10

Да, вы можете использовать команду bind

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

Это отображает Alt-e на команду less и выполняет ее (с помощью \ Cm aka Ctrl-m)

Вероятно, для | Вы должны избежать этого.

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

Если вы хотите просто добавить его в командную строку, удалите * \ Cm \ ""

Будьте осторожны, поскольку уже определены некоторые привязки:

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

Клавиша Control, как вы можете видеть выше, создается с помощью Cm, поэтому вы можете запустить команду less с помощью Ctrl-g, как показано ниже:

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

Чтобы получить коды клавиш для Alt (только для ALT), вы можете использовать команду чтения из оболочки:

@~$ read
^[y

^ [y невероятно похож на \ ey

Для получения дополнительной информации, этот вопрос был дан ответ также в stackoverflow:

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

tmow
источник
спасибо, как я могу удалить привязку или показать все привязки?
РЭШ
что-то не так с вашими первыми 2 примерами. он всегда печатает также подстановочный знак после меньшего после того, как я назначен с вашим синтаксисом привязки.
NES
bind -p и bind -P покажут вам все привязки. Я сделал ошибку со звездой ... Я обновляю ответ
tmow
большое спасибо. Возможно, у вас есть идея, как достичь той же цели в рыбе? Я до сих пор понимаю, что это работает, но проблема в том, что fish, похоже, автоматически выполняет команду, а не просто добавляет строку в командную строку по умолчанию. вот man-страница linux.die.net/man/1/bind К сожалению, приведенный здесь пример не очень полезен для моего случая.
NES
Это уже встроенная функция. Я думаю, что fishshell.com/user_doc/index.html#editor подает в суд на ярлык Alt-p
tmow