jas*_*yan 67
通过将您的 readline 编辑设置为 emacs(默认)或 vi ( set -o vi),您实质上是在跨 shell 和您选择的编辑器1标准化您的编辑命令。
因此,如果您想在 shell 中编辑命令,请使用与在文本编辑器中相同的命令2。这意味着只需要记住一种命令语法(如果这还不够优势)可能会使您在两种环境中的编辑速度更快,更不容易出错......
您可以通过从 shell 历史记录中提取任何命令,点击Escape进入命令模式,然后点击v,在 vi 模式下进一步利用这种关系,这将打开您的 $EDITOR 并加载命令,以便使用 vim 的全部功能进行更复杂的编辑。一旦您完成了对命令的满意编辑,:wq该命令就会在您的 shell 中执行。
1. 当然,假设您使用 Emacs 或 Vi/m 作为编辑器。
2. 或者,更准确地说,是其中的一个子集……
Kaz*_*Kaz 11
如果您使用的是像 ConnectBot for Android 这样的移动 SSH 客户端,Vi 模式是一个巨大的可用性改进。
这是由于减少了对修饰键的依赖。
Vim 在智能手机或平板电脑上使用虚拟键盘比……其他任何东西都更容易使用,包括 Android UI 中内置的本机编辑方法。具有讽刺意味的是,在 SSH 会话中使用 Vim 编辑 C 源代码比为此目的使用平台自己的编辑小部件编辑即时消息更容易。
Shell vi 模式带来了类似的好处。
它允许您使用 vi 模式和操作在命令行中编辑内容。
一个例子将有助于使其更加清晰:
你输入 cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
但你得到一个错误-你应该键入file1.txt不file1.xt
如果没有设置此选项,则按向上箭头,然后按向左箭头,然后重复... 35 次,直到到达.xt,然后键入额外的t. 总击键次数:37 次。
有了这个选项设置你可以(例如)按向上箭头一次,然后逃命命令模式,0去行的开始,然后/xt[return]才能到xt,然后你可以输入i为插入模式并键入缺少吨。这在某些方面可能看起来非常复杂,但是如果您是 vim 用户,这些命令已经非常熟悉了。总击键次数:9
我不确定是否有直接优势。我已经是vi20 多年的用户了。我也是screen更长时间的用户,以及其他使用vi密钥的程序。我更喜欢在 bash 中设置“vi”模式是很自然的。但我的工作中也有数百台服务器,大多数都设置为默认的“emacs”模式。所以我需要同时使用这两种模式。但这实际上只是一个偏好问题。