如何防止在vim中保存文件

如何防止在vim中保存文件,vim,Vim,我正在定制vim(vimdiff)作为区分某些文件的测试工具,并希望完全禁用保存文件-但是,我一直无法停止:w。。我已尝试使用-R选项启动vim/vimdiff,还尝试将cpoptions设置为包含W,这意味着: …但vim似乎并不关心这一点: echo yo > foo vim -R foo :set cpoptions=aABceFsW :set cpoptions? cpoptions=aABceFsW :w E45: 'readonly' option is set (ad

我正在定制vim(vimdiff)作为区分某些文件的测试工具,并希望完全禁用保存文件-但是,我一直无法停止
:w。。我已尝试使用
-R
选项启动vim/vimdiff,还尝试将
cpoptions
设置为包含
W
,这意味着:

…但vim似乎并不关心这一点:

echo yo > foo

vim -R foo

:set cpoptions=aABceFsW

:set cpoptions?
cpoptions=aABceFsW

:w
E45: 'readonly' option is set (add ! to override)

:w!
"foo" 1L, 3C written

还是我误解了

您刚刚告诉Vim它应该在“只读模式”下运行。文件本身不是只读的。如果您
chmod-wfoo
,那么Vim将不允许在
:w
W
显示在cpoptions中

您可以尝试使用
-M
启动Vim:

vim -M foo
这将禁止对文件进行任何更改,并阻止写入文件。请参见
:help-M

另一个解决方案可能是:

vim -m foo
这将打开文件,您可以对其进行编辑(您会收到警告
W10:warning:Changing a readonly file
),但您无法写入该文件。选项
write
被重置(设置为
nowrite
),并防止写入任何文件。所以这是全球性的


如果您最终决定无论如何都要编写它,则必须使用命令
:set write
设置该选项。如前所述,这是全局的,因此您无法编写任何文件。

您刚刚告诉Vim它应该在“只读模式”下运行。文件本身不是只读的。如果您
chmod-wfoo
,那么Vim将不允许在
:w
W
显示在cpoptions中

您可以尝试使用
-M
启动Vim:

vim -M foo
这将禁止对文件进行任何更改,并阻止写入文件。请参见
:help-M

另一个解决方案可能是:

vim -m foo
这将打开文件,您可以对其进行编辑(您会收到警告
W10:warning:Changing a readonly file
),但您无法写入该文件。选项
write
被重置(设置为
nowrite
),并防止写入任何文件。所以这是全球性的


如果您最终决定无论如何都要编写它,则必须使用命令
:set write
设置该选项。如上所述,这是全局性的,因此您无法编写任何文件。

最好使用文件权限,或者使用@user7369280所述的
-M
选项,但有趣的是,您还可以使用某些选项启动
vi
,这些选项将阻止您使用经典的
w
wq
命令,例如:

vi my_file -c 'cabbrev w <esc>' -c 'cabbrev wq <esc>'
vi my_文件-c'cabbrev w'-c'cabbrev wq'

它基本上禁用了命令
w
wq
,并使用命令
escape
(这没什么作用)

最好使用文件权限,或者使用@user7369280所述的
-M
选项,但有趣的是,您还可以使用某些选项启动
vi
,这些选项将阻止您使用经典的
w
wq
命令,例如:

vi my_file -c 'cabbrev w <esc>' -c 'cabbrev wq <esc>'
vi my_文件-c'cabbrev w'-c'cabbrev wq'

它基本上禁用了命令
w
wq
,并使用命令
escape
(这没什么作用)

我的理解是:您刚刚告诉Vim它应该在“只读模式”下运行。文件本身不是只读的。如果您
chmod-wfoo
,那么Vim将不允许在
:w。它打印错误“E504”。啊,你说得对。。谢谢我的理解是:你刚刚告诉Vim它应该在“只读模式”下运行。文件本身不是只读的。如果您
chmod-wfoo
,那么Vim将不允许在
:w。它打印错误“E504”。啊,你说得对。。谢谢如果你愿意的话,我可以接受这个答案。不过,通过仔细输入和删除字符,以及光标移动,你仍然可以摆脱这个困境。此外,还有更多用于写入文件的命令:
:wa
:x
,…由于某些原因,这些cabbrev命令/选项似乎对我不起作用,我仍然可以使用:w/:wq@boffman这可能取决于vi版本。它实际上是一个唯vim的特性。您可以尝试使用
ab
而不是
cabbrev
。例如:
vi my_file-c'ab wq'
通过仔细输入和删除字符以及光标移动,您仍然可以摆脱这种状态。此外,还有更多用于写入文件的命令:
:wa
:x
,…由于某些原因,这些cabbrev命令/选项似乎对我不起作用,我仍然可以使用:w/:wq@boffman这可能取决于vi版本。它实际上是一个唯vim的特性。您可以尝试使用
ab
而不是
cabbrev
。例如:
vi my_file-c'ab wq'
实际上,我希望能够更改文件的内容,而不是保存它们。但是后来我也注意到现在有一个-m选项,它阻止了所有类型的储蓄。。然而。。我还想运行:TOhtml并将差异保存为html,-m阻止保存html:-DPerfect-w与set[no]write的结合解决了我的问题!再次感谢!实际上,我希望能够更改文件的内容,而不是保存它们。但是后来我也注意到现在有一个-m选项,它阻止了所有类型的储蓄。。然而。。我还想运行:TOhtml并将差异保存为html,-m阻止保存html:-DPerfect-w与set[no]write的结合解决了我的问题!再次感谢!