在 Linux shell 中,当输入为空时,Ctrl-W / ^W 会像 Ctrl-D / ^D 一样发送 EOF 吗?

在 Linux shell 中,当输入为空时,Ctrl-W / ^W 会像 Ctrl-D / ^D 一样发送 EOF 吗?

有没有办法让 ^W 的行为与 shell 中空输入的 ^D 相同?我使用 zsh,但这也应该适用于 bash。否则它什么也不做(如果输入行已经被清除),这与 ^W 关闭其他 UI(即 Gtk、Web 浏览器)中的内容是一致的。

答案1

不能设置两个不同的字符来表示 EOF。styy不会让你这么做的。

但是,对于本例来说这不是必需的。您可以简单地重新定义 Zsh 的内置backward-kill-word小部件:

# Tell zsh to call a function with 
# the same name whenever 
# backward-kill-word is activated.
zle -N backward-kill-word

backward-kill-word() {
  # Exit the shell if the command
  # line is a zero-length string.
  [[ -z "$BUFFER" ]] &&
      exit

  # Otherwise, call the original 
  # built-in widget.
  zle .$0
}

阅读Zsh 行编辑器文档了解更多信息。

相关内容