我在 Linux 和 C-shell 中工作。很多时候,我需要更改提示中已有内容的某些部分,这些提示是通过使用历史命令进行反向搜索而获得的CTRL+R。我不想使用 来Backspace执行此操作。我看过superuser.com 上的这个问题这是专门为 bash 设计的。这回答表示使用CTRL+U它将清除当前光标位置之前的所有内容。但这对我来说清除了一切,尽管我按了几个退格键,现在位于提示文本的中间。在 Linux 中是否有 C-shell 特定的方法可以实现相同的目的?
答案1
在tcsh
(我想这就是你所说的“C-Shell”,如果你不是完全受虐狂)emacs
模式(通常是默认模式)中,你可以使用Ctrl-W.这是kill-region
在之间删除的小部件标记(设置为Ctrl-Space但默认为行的开头)和光标。
在这方面,它的行为比 bash(readline)/ksh/zsh emacs 模式更接近 emacs,但与终端驱动程序嵌入式行编辑器(在规范模式下)不同,其中Ctrl-W删除了前一个单词(werase
,也在 中vi
)。那次它选择了通常的终端行为,但不是在 emacs 中它是通用参数而它是终端中的 -line 字符的emacs
情况下。Ctrl-Ukill
如果您想Ctrl-U删除到行的开头,您也可以执行以下操作:
bindkey '^U' backward-kill-line
Envi
模式,Esc进入命令模式,并d0删除到行的开头(或者c0如果您想更改而不是删除它)。