我已经看到许多开发人员使用此命令将选项设置为vi。我从来不了解这个的真正用途?
使用bash命令时,切换到vi有什么帮助?
我已经看到许多开发人员使用此命令将选项设置为vi。我从来不了解这个的真正用途?
使用bash命令时,切换到vi有什么帮助?
Answers:
通过将readline编辑设置为emacs(默认值)或vi(set -o vi
),实际上是在Shell和选择的编辑器1上标准化了编辑命令。
因此,如果要在外壳中编辑命令,则使用与在文本编辑器中相同的命令2。这意味着仅需记住一种命令语法,并且(如果这样做还不够用)将可能使您在两种环境中的编辑速度更快且出错率更低。
您可以通过从外壳程序历史记录中拉出任何命令,点击Escape进入命令模式,然后点击v,在vi模式下进一步利用这种关系,这将打开您的$ EDITOR,并加载了该命令,以利用vim的全部功能进行更复杂的编辑。完成满意的命令编辑后,该命令将:wq在您的Shell中执行。
1.当然,假设您使用Emacs或Vi / m作为编辑器。
2.或者,更准确地说,是其子集...
set -o vi
大多数人不知道的最佳功能之一。如果要使用不同的参数多次发出同一命令(如多个命令行命令),则尤其如此。
set -o vi
。在默认设置下set -o EMACS
,Cx,Ce将打开一个emacs窗口(或$EDITOR
,如果已设置),您可以在其中运行命令之前对其进行编辑。
它使您可以使用vi模式和操作在命令行中编辑内容。
一个例子将使它更加清晰:
您输入 cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
但出现错误-您应该输入file1.txt
notfile1.xt
如果未设置此选项,则按向上箭头,然后按向左箭头,并使其重复... 35次,直到到达.xt
,然后键入多余的t
。击键总数:37。
有了这个选项设置你可以(例如)按向上箭头一次,然后逃命命令模式,0去行的开始,然后/xt[return]
才能到xt
,然后你可以输入i
为插入模式并键入缺少吨。在某些方面,这似乎非常复杂,但是如果您是vim用户,那么这些命令已经众所周知。按键总数:9
Alt+B
s或a Ctrl+Alt+]
.
,因此在我看来这并不是一个很好的例子。
Up
,Ctrl+Alt+]
,.
,Right
,t
,Enter
= 8 vi模式:Up
,F
,.
,a
,t
,Enter
= 7 :)
Esc
也在那里,那真是太死了。
我不确定是否有直接优势。我已经vi
有20多年的用户了。我也是screen
使用vi
密钥的其他程序的用户,甚至更长的时间。我自然喜欢在bash中设置“ vi”模式。但是我也要在数百台服务器上工作,大多数服务器都设置为默认的“ emacs”模式。所以我需要同时使用两种模式。但这实际上只是一个偏好问题。
主要优点是命令行的模式编辑。如果您熟悉Vim并喜欢它的哲学,那么好处一定是显而易见的。如果您有经验,手指的肌肉记忆将使您以闪电般的速度编辑bash命令。
注意:如果您不喜欢模式编辑,您仍然应该学习利用(默认)emacs模式。这里有一些漂亮的键盘快捷键,可在任何进程上使用readline
,例如bash
。
大概是聚会晚了,但是对我来说,使用vi模式更多地是关于创建交互式笔迹..例如
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
一个非常简单的示例,说明可能非常复杂。使用ESCkv可以进入vi会话,您可以在该会话中修改脚本,然后:wq
运行该脚本。
vi
模式下使用bash的一个很好的例子,但是它是bash代码的一个不好的例子。(1)将from的输出ls
用作任何其他类型的处理的输入是一个坏主意。(2)$(…)
广泛认为命令替换的`…`
语法比该语法更具可读性。(3)除非有充分的理由不这样做,否则应始终引用Shell变量,并且确定自己知道自己在做什么。