在Bash环境中设置热键 王巍 2001年 28期 经常使用Linux的朋友肯定会对Linux虚拟控制台中的命令操作感到厌烦。即使使用了两字符unix命令或命令补足功能,也仅仅是在一定程度上减轻了击键的负担,并没从根本上解决问题。那么是否可以只要按某个键(比如F1功能键)就能为你自动打入一串字符呢?答案是肯定的。   你可以把任何命令或命令的一部分内容指定给键盘上的任何一个键或者是与Alt和Ctrl的组合键,而不一定仅是那些功能键。因此,可供选择的键很多。   要实现上面所提及的功能,则应按照如下所述的方法把有关内容放到用户主目录中的Readline配置文件.inputrc中。   为了说明问题,这里先举一个简单的例子,需要说明的是该例子本身是毫无意义的和荒谬的,此处用该例的目的仅是为了能方便说明问题。该例是把字符串cd $HOME赋给字符z。要实现该例,你只要在~/.inputrc文件(如果尚未有该文件,则创建一个新文件)中加入下面一个句子即可:   "z":"cd $HOME"   要使你的设置生效,你应先退出(log out),然后再重新登录(log in)。此时你敲击z键,则在你的命令行中将显示字符串cd $HOME,而不是字符z。接下去若敲回车键Enter,则将执行cd $HOME命令。实际上,你还可发现,你在命令行的任何位置处敲入z都将显示cd $HOME这一字符串。   此时,你可能会问,最好在敲击z键后马上就能执行cd $HOME,而不用再敲一次回车键,行吗?当然可以,你只要在上面设置中在字串后面加上回车键的特别表示法“\C-M”即可。即在~/.inputrc文件中放入如下一个句子就行:   "z":"cd $HOME\C-M"   接下来让我们来说明一下把该cd命令指定到F1功能键上的方法。在Linux虚拟控制台中,并在使用默认的Linux控制台配置文件的情况下,F1将由四个字符序列Escape、[、[、和A组成。其中Escape在.inputrc配置文件中用“\e”来表示。因此,你可以在~/.inputrc文件中放入如下一个句子即可:   "\e[[A":"cd $HOME\C-M"   实际上,你要使Readline配置文件生效,不一定要先退出,再重新登录,你只要按组合键Ctrl+X 、Ctrl+R即可。重载该配置文件后,你就可以按F1键,然后你会看到实际上它执行了cd $HOME命令(该命令的作用是返回用户主目录)。   现在,让我们来总结一下它的定义格式。格式样子如下所示:   "指定键":"内容定义"   你可以为任何键(Ctrl+S、Ctrl+Q、Ctrl+C、Ctrl+Z四个组合键除外)指定任何命令内容。需要说明的是“Alt组合键”和“Ctrl组合键”在.inputrc配置文件中分别要用“\M-X”和“\C-X”形式来表示。   最后,要说明一下如何能方便地获知键盘上的任何键在.inputrc配置文件中的表达方法。你只要在Bash提示符下,先按“Ctrl+V”组合键,再键入你要了解的键,此时屏幕的当前输入行上就会显示该键的表示方法。要注意的是对于数字小键盘的表示有两种表示序列,因为它有两种模式。另外还须注意:若显示“^[”字样,则该字样就是指Escape字符。