Crash shell 允许指定命令行编辑模式为 vi 或 emacs。
这些输入法会有什么区别?
我不是在问内部功能。
答案1
您可以通过 找到设置的内容set -o
。
设置这些有效地改变了命令行历史记录和命令编辑工作方式的一些性质。它们以各自的编辑器命名,因为它们向用户呈现熟悉的命令行为。在 vi 模式下,您默认为insert
,因此可以照常编辑命令。但是,如果按下<escape>
您将进入command
模式。在这里您可以使用常用的 vi 命令:
b
会让你退后一个字w
会让你前进一个词0
将带您进入命令行的开头$
会带你到命令行的末尾k
将转到上一个命令j
将转到下一个命令?
将允许您搜索以前的命令d0
将从光标处删除到命令开头
要返回编辑(insert
模式),请使用以下方法之一:在行上、光标下、光标后或行尾I
插入第一个单词的开头。i
a
A
对于emacs
模式,您可以在编辑 emacs 的同时使用命令(没有insert mode
)。与 vi 模式类似的命令有:
<meta-b>
会让你退后一个字<meta-f>
会让你前进一个词<ctrl-a>
将带您到命令行的开头<ctrl-e>
会带你到命令行的末尾<ctrl-p>
将转到上一个命令<ctrl-n>
将转到下一个命令<ctrl-r>
将搜索以前的命令<ctrl-u>
将从光标处删除到命令开头
要插入原始控制序列(而不是处理 emacs 命令),请使用 继续该序列<ctrl-v>
。至于你使用哪种,留给读者作为练习:)两种模式也都提供多很多命令比我列出的要多(请参阅每个编辑器的手册以了解更多详细信息!)