在unix终端中删除“forward”一词的快捷方式是什么?

在unix终端中删除“forward”一词的快捷方式是什么?

Ctrl+W在mac终端中删除一个单词(从光标所在位置删除到单词开头)

如何执行相反的操作 - 从光标所在位置删除到单词末尾?

答案1

这取决于您的 shell 及其活动的命令行编辑模式。

对于具有 Emacs 命令行编辑模式的 shell(set -o emacs在某些 shell 中),请使用Alt+D(无论出于何种原因,这在 macOS 上不起作用,但会打印字符,请Escd改为使用)。

对于具有 Vi 命令行编辑模式的 shell(set -o vi在某些 shell 中),请使用Escdw(this也可在 macOS 上运行)。

答案2

在Linux终端中,您可以尝试Ctrl+K来删除从光标到行尾的内容。

还有一些其他快捷方式,例如:

  • Ctrl+ E:将光标移动到行尾。
  • Ctrl+ T:翻转光标周围的两个字符。
  • Ctrl+ Y:从删除环中拉出文本(粘贴之前删除的文本)。
  • Ctrl+ U:删除从行首到光标处的文本。
  • Ctrl+ O:提交当前行并从历史记录中加载下一行(如果有)。
  • Ctrl+ P:从历史记录中获取上一行(如)。
  • Ctrl+ K:删除光标后的行的其余部分。
  • Ctrl+ A:将光标移动到行首。
  • Ctrl+ D:如果该行为空,相当于EOF;通常,退出 shell。否则,删除光标后的字符。
  • Ctrl+ F:将光标向前移动一个字符。
  • Ctrl+ H: 与 相同Backspace
  • Ctrl+ J: 与 相同Enter
  • Ctrl+ M: 与 相同Enter
  • Ctrl+ B: 与 相同
  • Ctrl+ W:删除光标左侧的单词。

答案3

对于 tty 行规则,^W删除之前的空格分隔单词

vi在插入模式下的编辑器中,^W向后删除到 alnums 或非 alnums 的第一个序列的开头(在 上foo-+-bar.. baz,它首先删除baz、然后..、然后bar、然后-+-、然后foo)。

emacs编辑器中,^W从光标位置删除到标记(您用 设定的那个Ctrl+Space)。

一些行编辑器,例如readline(使用bash, gdb...)、zle(使用zsh)、 ,在模式pdksh下时,在这方面的行为类似于 tty 行规则(而不是)。viviemacsemacs

libedit(由 BSD shell 使用或(可选)dash)、tcsh、 AT&Tkshemacs模式下,行为emacs类似于^W删除标记(最初在缓冲区的开头)。

要在编辑器中向前删除单词,vi您可以在命令(普通的) 模式,用于dw删除到下一个 alnums 或非 alnums 序列的开头(或行尾),并删除到下一个非空白序列( tty 行规则的dW挂件)。^W

在行编辑器中emacsMeta-D将删除结尾下一个 alnum 字符序列。词运动运算符 ( Meta-B, Meta-F) 的行为类似。

命令行编辑器在vi模式下的行为类似于vi,但在emacs模式下,您有两个主要学校:tcsh学校和ksh学校。

学校ksh( readline, ksh, yash) 的行为大多类似于emacs(的行为在处理和模式fish中的非数字、非空白字符方面略有不同)。emacsvi

tcsh学校 ( tcsh, libedit, zsh) 中,单词运动基于空格分隔的单词,因此^W在这方面与 tty 行规则一致。

在 中zsh,行为是可定制与不同的字型对于所有单词运动小部件。

对于readline,您可以通过添加到您的 来获取tcsh学校(并Meta-D删除相同类型的单词) :Ctrl-W~/.inputrc

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

或者,另一方面,^W与其他单词运动小部件对齐(行为类似于Meta-Backscape):

set keymap emacs
"\C-W": backward-kill-word

至于Meta关键是什么,请参见那里

相关内容