http://bbs.chinaunix.net/thread-2247433-1-1.html 如何在inputrc中定义多重热键(如Ctrl+Alt+H) 找到解决方案了,偶给"How To Make A Hotkey On The Linux Console" 的作者发了一封关于这个问题E-mail, 很快他就回信了 Linux的老外们还真是热情啊,感动中.... 转到正题吧, 先用cat查看组合热键的ASCII字符: # cat <按下热键,如:Ctrl-Alt-H>; 看到了什么? ^[^H 对不对? 按;退出 同理可以得知其他组合热键对应的ASCII字符, 有一些组合热键像Ctrl+Alt+D/Q/Z/C/S/M/J/U/I/E好像不能使用,不过没关系,可用的热键有15个左右 然后修改/etc/inputrc 或 ~/.inputrc,向里面添加组合热键的宏定义,偶的如下: "^[^G":"gaim & &>;/dev/null && disown\C-M" \\ #按Ctrl-Alt-g在当前shell打开gaim, 并脱离该shell独立运行,即:即使你退出了该shell, gaim也不会关闭 字符输入方法: 在vi的插入模式下, ^[是先按Ctrl-V, 然后按ESC,[^G是先按Ctrl-v, 然后按Ctrl-H,其他的与此类似 "^[^H":"vi /etc/httpd/conf/httpd.conf\C-M" \\ # Ctrl-Alt-h 打开vi编辑器编辑apache的配置文件 "^[^L":"stardict & &>;/dev/null && disown\C-M" \\ # Ctrl-Alt-l ->;>; 运行星际译王(l->;look up查询的意思) "^[^O":"soffice & &>;/dev/null && disown\C-M" \\ # Ctrl-Alt-o ->;>; 打开Openoffice "^[^P":"opera & &>;/dev/null && disown\C-M" \\ # Ctrl-Alt-p ->;>; 大名鼎鼎的浏览器Opera "^[^X":"xmms & &>;/dev/null && disown\C-M" 其他一些组合键可以根据自己的需要配置,偶就不多说了 测试一下: \\ su - \\ ; \\ u see what? --- xmms starts up ---- 另外补充几点: 1. 还可以定义Alt+Shif+[A-Z] 热键, 偶试了一下,26个热键全部都可以,不会被终端截获 #define Alt+Shift+[A-Z] \\ "^[A":";\C-M" \\ "^[B":";\C-M" \\ ... "^[Y":";\C-M" \\ "^[Z":";\C-M" ^[A 的输入方法与前面类似,进入Vi插入模式后,先按Ctrl-V, 再同时按Alt+Shif+A 2. 宏定义的末尾\C-M表示输入完定义的命令后回车,也可以更简洁地用一个\n来表示,即: "^[A":";\C-M" \\ 与下面的是等价的 \\ "^[A":";\n" 3. 发现还可以定义Ctrl-F[1-12], Alt-Shift-F[1-12] \\ (Alt+F[1-12]也可以, 但有一些会被终端捕获) \\ 相应字符输入方法与前面类似 ---- 加快你输入命令的速度 一般情况下,我们可以使用上下方向键来查找命令历史列表,以此重复输入命令,但是方向键离主键盘区太远,如果频繁使用的话,会耽误不少时间,而且挪动右手时也不太方便,有没有什么办法把方向键的功能转移到我们经常敲命令的地方呢? 如使用Alt+J = Down Arrow 向下查找,Alt+K=Up Arrow 向下查找 通过热键的宏定义可以做到这点: 偶的热键映射如下: \\ "\eh":"^[OD" # move left \\ Alt-H 向左移一个字符, 相当于Left Arrowgh "\el":"^[OC" # move right \\ Alt-L 向右移一个字符,相当于Right Arrow "\ej":"^[OB" # move up \\ Alt-J 向下移动,相当于Up Arrow "\ek":"^[OA" # move down \\ Alt-K 向上移动,相当于Down Arrow "\ei":"^?" # left earse one character \\ Alt-I 向左删除一个字符,相当于Backspace "\eo":delete-char # right earse one character \\ Alt-O 向右删除一个字符,相当于Delete "\en":backward-kill-word # left kill one word \\ Alt-N 向左删除一个单词 "\em":kill-word # right kill one word \\ Alt-M 向右删除一个单词 "\ea":"^[n^[n^[n^[n^[n^[n^[n" # kill to the head \\ Alt-A 删除当前位置到开头,也就是多Alt-N几次(A-->; ahead) "\ee":"^[m^[m^[m^[m^[m^[m^[m" # kill to the head \\ Alt-E 删除当前位置到末尾,也就是多Alt-M几次(E-->; end) "\ep": insert-last-argumem" \\ Alt-P 插入上一个命令最后一个参数 (P-->; Paste) "\ew": forward-word \\ 系统默认Alt-F (forward)跳到当前单词词尾,如果已在词尾,则跳到下一个单词(右边一个单词)词尾 发觉F和B键离得太远,不方便,偶分别改作Alt-Q, Alt-W, 但是Alt-F/B照样可以用 这样输入命令的时候几乎可以不用离开主键盘区,而且移动光标,删除字符,删除单词,上下历史命令查找都集中在一块,比以前方便多了。 \\ 不过开始可能有些不习惯,就跟使用vi一样,但是多练几次就熟练了。 以上是根据偶个人的喜好来设定的,大家如果有更好的方案的话,可以拿出来共享。 另外,这些热键在控制台可以使用自如,如果在X-windows下的模拟终端,需要把终端的菜单的热键禁用掉,可以在编辑->;热键里更改 意外的发现: \\ Alt-U(Uppercase) 可以把光标位置到末尾之间的字符全部转换为大写 \\ Alt-C(Case) 可以把光标位置到末尾之间的字符全部转换为小写