我见过很多开发人员使用此命令将选项设置为 vi。我一直不明白这个的真正用途?
使用bash命令时,切换到vi有什么帮助?
答案1
通过将 readline 编辑设置为 emacs(默认)或 vi ( set -o vi
),您实质上是在 shell 和您选择的编辑器中标准化您的编辑命令1。
因此,如果您想在 shell 中编辑命令,您可以使用与在文本编辑器中相同的命令2 。这意味着只需记住一种命令语法(如果这还不够)可能会使您在两种环境中的编辑速度更快且不易出错......
您可以在 vi 模式下进一步利用这种关系,方法是从 shell 历史记录中提取任何命令,点击Escape进入命令模式,然后点击v,这将打开您的 $EDITOR 并加载命令,以便利用 vim 的全部功能进行更复杂的编辑。一旦您满意地编辑完命令,:wq该命令就会在您的 shell 中执行。
1. 当然,假设您使用 Emacs 或 Vi/m 作为编辑器。
2. 或者,更准确地说,其中的一个子集......
答案2
如果您使用的是移动 SSH 客户端(例如 ConnectBot for Android),那么 Vi 模式会带来巨大的可用性改进。
这是由于减少了对修饰键的依赖。
Vim 在智能手机或平板电脑上使用虚拟键盘比其他任何东西都更容易使用,包括 Android UI 中内置的本机编辑方法。讽刺的是,在 SSH 会话中使用 Vim 编辑 C 源代码比使用平台自己的编辑小部件编辑即时消息更容易。
Shell vi 模式带来了类似的好处。
答案3
它允许您使用 vi 模式和操作在命令行编辑内容。
一个例子将有助于使它更清楚:
你输入cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
但你得到一个错误 - 你应该输入file1.txt
notfile1.xt
没有在此选项设置中,您按向上箭头,然后按向左箭头并让它重复... 35次,直到您到达然后.xt
键入额外的t
。总击键次数:37。
和设置此选项后,您可以(例如)按向上箭头一次,然后按 Escape 进入命令模式,按 0 转到行首,然后/xt[return]
转到xt
,然后您可以键入i
插入模式并键入缺少的 t。这在某些方面可能看起来非常复杂,但如果您是 vim 用户,这些命令已经非常众所周知了。总击键次数:9
答案4
主要优点是命令行的模式编辑。如果您熟悉 Vim 并且喜欢它的理念,那么它的好处一定是显而易见的。如果您有经验,您手指的肌肉记忆将使您以闪电般的速度编辑 bash 命令。
注意:如果您不喜欢模式编辑,您仍然应该学习利用(默认)emacs-mode。这里有一些漂亮的键盘快捷键这将适用于任何流程readline
,例如bash
.