问题: 如果文件“tmp.rb”已被修改,则命令“e tmp.rb”将失败。
我正在寻求在以下两个条件下取得成功的命令:
澄清:
对不起,所有的误导。实际上,只要修改后的“tmp.rb”没有加载到当前窗口中,单个命令e tmp.rb
就会生成,在哪种情况我更喜欢e tmp.rb
不会导致错误并且与b tmp.rb
具有相同的效果。也许这个小问题会让缓冲区,窗口等更容易编写脚本。
答案 0 :(得分:1)
当缓冲区已加载并修改时,:edit
命令失败,以防止您意外覆盖更改。如果您确实要覆盖,请改用:edit!
。在许多Vim命令中,附加的爆炸(!
)强制执行命令。或者,如果您希望Vim要求您进行确认,请使用:confirm edit
。
答案 1 :(得分:0)
我无法重现你的问题。
我尝试重现您的问题是
在其他shell中,
$ echo > tmp.rb
在vim中输入:e
或e: tmp.rb
,它会毫无问题地重新打开文件。
如果其他程序同时访问tmp.rb,则其他程序可能正在锁定该文件,因此您遇到了麻烦。
答案 2 :(得分:0)
你问题的标题是“或”,但它的正文是“AND”。
Vim的命令通常非常精确,很少看到一个模糊的命令执行多个互斥的事情。您可以用来进入插入模式(iaIAsScCoO
)的键数就是一个很好的例子。
您应该针对每种情况使用适当的命令:
:e tmp.rb
:b tmp.rb
如果你不介意安装插件,CtrlP的:CtrlPMixed
可以帮助你提供漂亮的抽象。