全部博文(158)
分类:
2008-11-19 15:06:33
bash 中的主命令提示符同时提供了编辑命令行的能力和历史记录功能,后者记住各个命令行,以便您能够再次执行它们。
编辑功能意味着您可以在当前显示的命令行中向前和向后移动,以做出更改或纠正输入错误。在标准 bash 形式中,您可以使用光标键来执行基本的移动。更广泛的命令(例如按单词向前和向后移动)可以通过 Readline 库来控制,该库在缺省情况下同时支持 vi 和 emacs 绑定。若要设置编辑模式,可以在命令行上或在引导文件中指定您的首选模式:$ set editing-mode emacs
。
例如,使用 emacs 编辑模式,以下键绑定将生效:
使用内部 bind
bash 命令,您实际上可以随心所欲地将任何键或组合绑定到某个特定的操作。首先,您可以通过使用 -P
选项(请参见清单 1)来获取可用命令列表。
$ bind -P abort can be found on "\C-g", "\C-x\C-g", "\M-\C-g". accept-line can be found on "\C-j", "\C-m". alias-expand-line is not bound to any keys arrow-key-prefix is not bound to any keys backward-byte is not bound to any keys ... yank can be found on "\C-y". yank-last-arg can be found on "\M-.", "\M-_". yank-nth-arg can be found on "\M-\C-y". yank-pop can be found on "\M-y". |
\C
引用 Control 键。\M
序列引用“Meta”键(某些键盘上的专用键,或者通常为 Alt 键或 Escape 键)。
若要设置绑定,您必须指定键序列和要执行的命令,它们之间用分号分隔,并且键序列要用双引号来转义(在极端情况下,您可能需要使用单引号来对该形式进行再次转义)。例如,若要将 Control-B 更改为逐个单词地向后移动,可以使用 $ bind "\C-b":backward-word
。
您甚至可以使用绑定来执行 Shell 命令(例如,运行某个应用程序)。为此,您必须添加 -x
选项,这是需要两次转义的一个示例。例如,若要将 Control-E 设置为运行 emacs,您要使用以下命令:$ bind -x '"\C-e"':emacs
。
若要让 bash 中的键绑定在每次都启用,您可以设置 .inputrc 文件中的信息(然后此文件将影响所有启用了 Readline 的应用程序),或者您可以在启动脚本中放置特定的 bash 绑定,本文稍后将对此进行介绍。