删除输入到下一个空间

Lac*_*cho 3 command-line bash shortcut-keys

当在终端中时,我可以使用Ctrl+w删除整个单词或 IP(.是每个八位字节的分隔符)。但是,如果我尝试Alt+d向右移动提示,终端会识别“。” in IP为一个分隔符,只删除一个chunk,直到删除.整个IP。

我如何可以调整使终端只承认空白的字的分离,甚至最好是有另一个快捷方式不同的分隔符:.=,,等?

它与使用 Ctrl+箭头(左和右)在终端中的操纵非常相似,并且行为基于为单词分隔符设置的内容相似。

我读到 Emacs 编辑器位于终端用来拥有这些快捷方式的后面,但我无法眨眼。

Rad*_*anu 5

首先在终端中使用以下命令:

bind '"\ew": vi-forward-bigword'
Run Code Online (Sandbox Code Playgroud)

创建一个新的快捷键 -在本例中为Alt+ w- 将提示向前移动到当前或下一个单词的末尾。在这种情况下,单词(bigwords)由字母、数字和特殊字符(如“.”)组成。

现在你可以使用Alt+w后跟Ctrl+w来完成你想要的。

见我的回答一些更多的信息在这里


而且,看了这个问答后,我明白了以下几点:

使用bind,您可以绑定键来执行以下三件事之一,但不能将它们组合起来

  • 执行 readline 命令: bind '"key": command'
  • 执行一系列击键: bind '"key":"keystrokes"'
  • 执行一个shell命令: bind -x '"key": shell-command'

因此,现在,如果您想将这两个击键(Alt+w后跟Ctrl+ w)组合成一个新的击键,则需要绑定一个新的击键(在我的示例中为Alt+ q)以执行先前的击键,如下所示:

bind '"\eq": "\ew \C-w"'
Run Code Online (Sandbox Code Playgroud)

最后,要永久进行这些更改,您所要做的就是将以下几行添加到您的~/.inputrc文件中(如果没有,请创建它):

"\ew": vi-forward-bigword
"\eq": "\ew \C-w"
Run Code Online (Sandbox Code Playgroud)