个人工具

UbuntuHelp:HowToReadline/zh

来自Ubuntu中文

跳转至: 导航, 搜索



如果你使用Bash Shell,不难发现它的命令行编辑都是通过Readline库来实现的,也有其他很多程序使用这个库。Ubuntu和Kubuntu提供的Readline配置允许你使用一些常用键来移动光标或编辑命令行,例如,左右箭头控制键。除此之外,你可能还想要一些其他特性。实际上,Readline自身有一套丰富的键盘绑定,但是它们可能很难记住,或者有些用起来不方便。例如,Alt+d键用来删除当前光标右边的单词。键入bash内置命令bind -P可以查看所有键的绑定情况。

本文描述了如何在键盘指令表中新增键和设置组合键,同时附上了下表中相关键设置的Readline配置文件。

   组合键     功能描述
Ctrl + Arrow 一次向前或向后移动一个单词1
Ctrl + Delete 删除光标右边的一个单词
Ctrl + Backspace 删除光标左边的一个单词
Shift + Delete 删除光标处到行尾间的内容
Shift + Backspace 删除光标处到行首间的内容
   Insert 替换模式/插入模式切换2


注1:Kubuntu自6.06版已默认使用该组合键,在这为使得例子更加完整,我们也把它列举了进来。
注2:每次在插入模式中才开始调用Readline,"Insert"键在各次调用间并不相互联系。

由Readline库定义的一系列字符或者数字的组合,称为一个"单词"。"单词"一旦定义就不太可能重新定义,但在Ubuntu中的其他地方可能对它们又有不同的定义。例如,Konsole默认在双击选定单词时将:@-./_~当作单词的一部分(参考 控制台中的Settings(设置)/Configure Konsole(配置Konsole))。

键盘映射

在安装新的Readline配置文件之前,需要对终端模拟器进行设置,使其能对设置的各组合键分别产生相应的字节序。设置时,对Konsole只需要稍做改动,因为默认的Xterm(XFree 4.x.x)键盘表,<Ctrl><Backspace>和<Shift><Backspace>产生同样的字节序,也就相当于<Backspace>键。

使用 attachment:myKubuntu.keytab 文件能使Konsole产生我们需要的字节序。最简单的安装方法是把这个文件放到`~/.kde/share/apps/konsole`目录中(按照惯例,符号~表示当前用户主目录),相应地,如果将它放在`/usr/share/apps/konsole`目录中,那么这个配置文件将对系统中的所有用户起作用。

使用前面说到的.keytab文件会修改整个键盘设置,而使用 attachment:default.keytab.patch 文件,将其放到相应目录中则可将键盘还原到默设置。这种方式会更合适,因为一旦使用.keytab文件,就会将键盘表映射Konsole中去,导致系统默认的键盘表将不复存在(而使用该patch文件我们可以进行还原)。值得庆幸的是,在`/usr/share/doc/konsole/README.default.Keytab.gz`中还有默认设置的备份。利用它可以创建新的键盘表进行还原,运行以下命令即可:

gzip -cd /usr/share/doc/konsole/README.default.Keytab.gz > myKubuntu.keytab 
patch myKubuntu.keytab default.keytab.patch 

在按照上面所说的安装了myKubuntu.keytab文件后,启动一个新的Konsole会话,依次选择Settings(设置)/Keyboard(键盘)/XTerm (myKubuntu),如果你觉得新的键盘设置很适合自己,那么点击Settings(设置)/Save as Default(设为默认)将其设成默认。

如果你没有使用Konsole的默认键盘设置,同时又需要修改另一个keytab文件。那么在操作过程中建议你使用这个技巧,通过命令konsole --keytab myKubuntu来启动Konsole,因为以这种方式启动可以看到Konsole键盘表的出错信息,例如它可能会提示你某个键已经被绑定。要检查键盘绑定情况,启动Vim,按i进入插入模式,在按下你要检验的组合键后接着按<Ctrl>-v即可。关于键盘表文件的具体细节请参见`/usr/share/doc/konsole/README.KeyTab`。

[特别注意:如无特别描述,文中的终端均指GNOME终端模拟器,Linux控制台或者xterm。]

Readline配置

在完成终端模拟器配置成可执行自定义的字节序后,接下来配置Readline。下载 attachment:inputrc 文件将其命名成`.inputrc`放到自己主目录,或者替换`/etc/inputrc`文件即可。

与前面类似,使用patch文件方式安装可能比采用完全替换的安装方式更适合你。下载 attachment:inputrc.patch 文件到/tmp目录,切换到root权限然后执行下面的命令:

patch --backup /etc/inputrc /tmp/inputrc.patch

这样将生成一个备份文件,很可能是调用了/etc/inputrc.orig(具体请参考`path(1)`)。

请记得在测试前重新启动一个会话,如果有必要的话,更改键盘表。

总结

通过定制Readline配置文件,你已经修改了终端模拟器,可以让Konsole执行自定义的字节序。到此为止,键盘表中自定义的按键会跟系统中的Home,End等键一样在Bash和其他命令行程序中生效。

相关页面

GNU Readline Library

Bash Reference Manual

Andrew's (barebones) guide to terminals and keymappings