本文共 5445 字,大约阅读时间需要 18 分钟。
这是处理使用交互式shell时,除非–noediting选项在shell调用给读取输入的库。使用-e选项,内建读取时行编辑也被使用。默认情况下,行编辑命令类似Emacs的。一个VI风格的行编辑界面也可用。行编辑可以在任何时候使用-o Emacs或VI-o选项,内置集合(参见下面的shell内建命令)启用。
要关闭shell运行后行编辑,使用+ O Emacs或+ O VI选项,内置集合。Readline Notation
在本节中,Emacs风格的符号用来表示按键。控制键由C-键,例如表示,C-n表示控制-N。同样地,元密钥由M-键来表示,所以M-x表示的Meta-X。(在没有元键键盘,的Mx意味着ESC X,也就是按Esc键,然后x键。这使得ESC元前缀,这个组合MCX意味着ESC-CONTROL-X,或按Esc键,然后按住Ctrl键的同时按下X键。) Readline的命令可能会给出的数值参数,一般作为重复计数。但是,有时它是显著参数的迹象。传递一个负参数,在前进方向作用的命令(例如,杀线),该命令在向后方向作用的原因。命令其行为带有参数偏离这个在下面说明。 当命令被描述为杀害文本,删除的文本被保存以备将来检索(唬弄)。文本被保存在一个杀ring.Consecutive杀死导致文本将被累加到一个单元,可以一次全部猛拉。命令不杀文本分隔文本的大块杀环上。Readline Initialization
Readline正通过将命令在初始化文件(INPUTRC文件)定制。该文件的名称是从INPUTRC变量的值取。如果该变量没有设置,默认是〜/.inputrc文件。当它使用readline库的程序启动时,初始化文件读取,键绑定和变量设置。有只允许在readline的初始化文件的一些基本结构。忽略空行。以#开头的行是注释。以$开始的行指示条件结构。其他行表示按键关联和变量设置。 下面的符号字符名称识别: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE, and TAB.Readline Key Bindings
默认键绑定可以用INPUTRC文件进行更改。使用这个库的其他程序可以添加它们自己的命令和绑定。 在INPUTRC文件控制键绑定的语法很简单。所有需要的是它应当结合的命令或宏的文本和密钥序列的名称。用间位或控制 - 前缀作为一个象征性的密钥名称,可能的话,或作为一个键序列:名称可以以两种方式之一指定。 这些被设置成GNU Emacs风格的空格键队列是: \C- control prefix \M- meta prefix \e an escape character \ backslash \” literal ” \’ literal ’ \a alert (bell) \b backspace \d delete \f form feed \n newline \r carriage return \t horizontal tab \v vertical tab \nnn the eight-bit character whose value is the octal value nnn (one to three digits) \xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)Readline Variables
readline的具有可用于进一步定制其行为的变量。变量可以在INPUTRC文件中设置与形式的语句 set variable-name valueReadline Conditional Constructs
Readline的实现在本质上与C预处理器,它允许键绑定和变量设置为测试结果进行的条件编译的功能类似的设施。 if如果结构允许基于所述编辑模式进行绑定 ,正在使用的终端,或使用readline应用。测试的文本延伸到行的结尾;没有字符都需要隔离。 mode 模式= 的形式,如果指令用于测试的readline是否在Emacs或vi模式。这可能与设置键映射命令一起使用,例如,设置绑定在Emacs的标准和emacs−CTLX键盘映射,仅当readline的是emacs模式开始了。term术语=形式可以用于包括终端专用键绑定,也许是由该终端的功能keys.The字输出密钥序列结合的=右侧是针对终端和该部分的两个全名测试终端名称前的第一次−。这使得太阳晒伤和太阳CMD,例如匹配。application应用应用构建用于包括专用设置。这可以用来键序列结合到一个特定的节目有用的功能。 if Bash # Quote the current or previous word “\C-xq”: “\eb\”\ef\”” $endifendif此命令,因为看到前面的例子中,如果终止命令时 。
else在如果 指令的这个分支的命令,如果测试失败被执行。 $include 这个指令使用单个文件名作为参数,并从该文件中读取命令和绑定。例如,下面的指令将读取/ etc / inputrc文件:Searching
Readline的命令提供了通过命令历史记录搜索(参见下面的HISTORY)包含一个指定的字符串行。有两种搜索模式:增量和非增量。 增量搜索开始之前,用户已经打完搜索字符串。作为搜索字符串的每个字符被输入,显示的ReadLine从匹配到目前为止输入的字符串历史上的下一个条目。增量的搜索只要求需要找到存在于ISEARCH终止子变量的值所需的历史entry.The字符用于终止增量的搜索尽可能多的字符。如果该变量尚未分配一个 看重逃亡控制-J的字符将终止增量的搜索。控制-G将终止增量的搜索和恢复原线。 当搜索终止时,包含搜索字符串的历史条目成为当前行。要找到历史记录列表其他匹配的条目,请按Ctrl-S或Ctrl-R为宜。这将向后搜索,或在历史中向前匹配已输入搜索字符串的下一个条目。绑定到readline的命令将终止搜索并执行command.For实例中的任何其他按键序列,换行符将终止搜索,接受行,从而从历史列表中执行命令。例如,一个新的生产线将终止搜索并接受线路,从而从历史列表执行该命令。 非增量的搜索开始搜索匹配的历史行之前阅读整个搜索字符串。搜索字符串可能由用户键入或是的当前行的内容的一部分。Readline Command Names
以下是命令和默认密钥序列的名称的列表和它们的约束。没有伴随键序列命令名称默认绑定。在下面的描述中,点是指当前光标位置,并标记是指由一组标记命令保存的光标位置。点和标记之间的文本被称为区域。Commands for Moving
beginning-of-line (C-a) 移动到当前行首 end-of-line (C-e) 移动到行的结尾。 backward-char (C-b) 向前移动 forward-word (M-f) 向后移动 backward-word (M-b) 移回当前或前一个单词的开头。单词是由字母数字字符 shell-forward-word 向前移动到下一个单词的结尾。字是由非引用shell元字符分隔。 shell-backward-word 移回当前或前一个单词的开头。字是由非引用shell元字符分隔。 clear-screen (C-l) 清屏离开在屏幕顶部的当前行。有参数,刷新当前行不清除屏幕。 redraw-current-line 刷新当前行。Commands for Manipulating the History
accept-line (Newline, Return) previous-history (C-p) next-history (C-n) beginning-of-history (M-<) end-of-history (M->) reverse-search-history (C-r) forward-search-history (C-s) non-incremental-reverse-search-history (M-p) history-search-forward history-search-backward yank-nth-arg (M-C-y) yank-last-arg (M-., M-_) shell-expand-line (M-C-e) history-expand-line (M-^) alias-expand-line history-and-alias-expand-line insert-last-argument (M-., M-_) operate-and-get-next (C-o) edit-and-execute-command (C-xC-e)Commands for Changing Text
end-of-file (usually C-d) 字符表明结束文件集,例如,通过“stty的”。如果当有线路上无字符,点在该行的开头这个角色被读取,Readline库将其解释为输入结束,返回EOF。delete-char (C-d)
删除点的字符。如果该功能被绑定到相同的字符作为TTY EOF字符,如C-D通常是,见上文的影响。backward-delete-char (Rubout)
删除光标后面的字符。当给定一个数字参数,保存杀环上被删除的内容。forward-backward-delete-char
删除字符光标下,除非光标位于行,在这种情况下,光标后的字符被删除的结束。quoted-insert (C-q, C-v)
添加输入到行逐字下一个字符。这是如何插入像C-Q字符,例如。tab-insert (C-v TAB)
将输入的字符。self-insert (a, b, A, 1, !, …)
将输入的字符。transpose-chars (C-t)
字符前点着了的字符在点阻力,推进点为好。如果点是在该行的末端,则此点之前调换两个字符。负参数没有任何效果。transpose-words (M-t)
点后点之前,人字拖过去的话,移动点比这个词为好。如果点是在该行的末尾,这个调换的行中的最后两个单词。upcase-word (M-u)
大写当前(或下)字。有负值的参数,大写前一个词,但是不动点。downcase-word (M-l)
小写当前(或下)字。有负值的参数,小写前一个单词,但是不动点。capitalize-word (M-c)
大写当前(或下一个)词。有负值的参数,利用前一个单词,但是不动点overwrite-mode
切换覆盖模式。有了明确的正数参数时,切换到改写模式。有了明确的非正数参数时,切换到插入模式。该命令只影响emacs模式; vi模式不覆盖不同。每一次调用的ReadLine()以插入模式启动。覆盖模式,势必会自我插入字符替换point处的文本而不是推文字的权利。Killing and Yanking
kill-line (C-k) 从杀点到行末的文本。 backward-kill-line (C-x Rubout) 向后杀到行的开头。 unix-line-discard (C-u) 向后从点杀到该行的开头。文本被保存于kill-环上。 kill-whole-line 杀死当前行的所有字符,无论在哪里点。 kill-word (M-d) 从点杀到当前字的末尾,或者如果字之间,到下一个字的结尾。字边界是相同的那些正向词使用。 backward-kill-word (M-Rubout) 从点杀到当前字的末尾,或者如果字之间,到下一个字的结尾。字边界是相同的那些壳向前词使用。 shell-backward-kill-word (M-Rubout) 点杀背后的字。字边界是相同的那些壳向后字使用。 unix-word-rubout (C-w) 点杀背后的字,用白色的空间作为一个单词边界。他杀死了文本保存杀环上。 unix-filename-rubout 点杀背后的字,用空格和斜线字符作为单词边界。文本被保存于kill-环上。 delete-horizontal-space (M-) 删除点左右所有空格和制表符。 kill-region 杀当前区域中的文本。 copy-region-as-kill 该地区的文本复制到剪切缓冲区。 copy-backward-word 点杀缓冲区之前的字复制。字分界是相同的向后字。 copy-forward-word 下面的点杀缓冲区拷贝的话。字分界是相同的正向字。 yank (C-y) 猛拉剪切环的顶进点缓冲区。 yank-pop (M-y) 旋转剪切环,并抽出新的顶部。仅适用于以下抽出或抽出的流行。Numeric Arguments
Completing Keyboard Macros Miscellaneous Programmable Completion转载地址:http://pnwdb.baihongyu.com/