在终端中,当向提示符左侧移动时,我可以使用Ctrl+w删除整个单词或 IP(是每个八位字节的分隔符)。.
但是,如果我尝试Alt+d转到提示符右侧,终端会识别“。”以 IP 为分隔符,只删除其中一个块,直到.
整个 IP 出来。
我该如何调整,以便终端仅识别单词分隔符的空格,或者更好地为不同的分隔符提供另一个快捷方式:.
、=
、,
等?
它与使用 Ctrl+箭头(向左和向右)在终端中进行操作非常相似,并且根据单词分隔符的设置,行为也相似。
我读到 Emacs 编辑器位于终端用来提供这些快捷方式的后面,但我无法使用它。
我正在尝试在 Ubuntu 10 中实现这一点。
这里:https://askubuntu.com/questions/577433/deleting-input-forward-to-the-next-space这是我在 Ubuntu 14 的其他论坛中建议的。
我试过这个:
“所以,现在,如果您想将这两个击键(Alt+w后跟Ctrl+ w)组合成一个新的击键,则需要绑定一个新的击键(在我的示例中为Alt+ q)来执行之前的击键,如下所示:
bind '"\eq": "\ew \C-w"'
最后,要永久进行这些更改,您所要做的就是将以下行添加到您的~/.inputrc
文件中(如果没有,则创建它):
"\ew": vi-forward-bigword
"\eq": "\ew \C-w"
但我得到的结果是:
添加后,Alt+w仍然不起作用,并且Ctrl+←和→错误不再起作用。终端输出;5D
以及;5C
当它们用于从一个单词移动到另一个单词时......
这两个版本有什么区别?
答案1
如果您是 Emacs 用户,您可能不想使用我的答案,但仍应在此页面上注明,因此如下:
您可以vi
非常轻松地在 bash shell 中使用键绑定。类型set -o vi
。.bashrc
如果您喜欢结果,请将其添加到您的中。
您的具体问题的答案,即向前删除到下一个空格,可以通过dt<Space>
(删除直到空格)或仅dE
(删除到空格分隔的单词末尾)来完成。
使用标准vi
键绑定 - 要习惯的主要事情(如果您已经是 vi 用户)是默认情况下您将处于插入模式。因此,要使用上述普通模式命令,请先键入<Esc>
。或者,您可以Alt
在键入命令的第一个字母时按住该键。例如,k
vi 命令是向上一行,因此<Alt>k
可以像向上箭头一样使用,以返回历史记录中的一个命令。
答案2
这也可以使用查找空间、前进、删除单词来完成。
"\eq": "\C-]\ \C-f\C-w"
答案3
如果.inputrc
存在,/etc/inputrc
则不再读取,因此您将丢失当前使用的所有设置(.inputrc
覆盖全局设置)。复制全局的并添加您的修改即可。然后它应该像以前一样工作,添加新的绑定。或者,或者只是将bind
命令放入您的命令中.bashrc
,每次您打开交互式 shell 时都会运行它 - 基本上与您现在的效果相同。
如果有人知道如何在 中“获取/包含”另一个配置文件.inputrc
,我非常想听听。