如何在终端中分配命令给按键?


10

是否有一种解决方案,可以在终端使用中为单词分配特殊的组合键。例如,less命令非常有用,我使用很多命令通过它来传递另一个进程的输出。

这个想法是要建立特殊的组合键,这些组合键仅在分配给不同命令的终端使用中才有效?所以在终端窗口中按Ctrl+ L可以写

| less

Ctrl+ G代表

| grep

注意:我只是说要在命令行中添加字母,而不是最后执行。Tabcompletion相似,但更具体。

Answers:


10

是的,您可以使用bind命令

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

它将Alt-e映射到less命令并执行它(使用\ Cm或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制成的,因此可以使用Ctrl-g启动less命令,如下所示:

绑定'“ \ Cg”':“ \” \ | less * \ Cm \“”

要获取Alt的键控代码(仅用于ALT),可以从shell使用read命令:

@~$ read
^[y

^ [y等于\ ey

有关更多信息,stackoverflow中也回答了这个问题:

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


谢谢,我如何删除绑定或显示所有绑定?
NES

您的前两个示例出了点问题。在分配了绑定语法后,它总是在打印更少的通配符之后。
NES

bind -p和bind -P将显示所有绑定。我与星标弄错了...我正在更新答案
tmow 2011年

非常感谢。也许您有一个想法,如何在鱼类中达到相同的目标?我到目前为止可以正常工作了,但问题是,fish似乎会自动执行命令,而不是默认情况下仅将字符串添加到命令行中。这是联机帮助页linux.die.net/man/1/bind不幸的是,该示例对我的情况不是很有帮助。
NES

我认为这已经是内置函数,fishfish.com / user_doc / index.html#editor使用Alt-p快捷方式
tmow 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.