如何防止在vim中保存文件
我正在定制vim(vimdiff)作为区分某些文件的测试工具,并希望完全禁用保存文件-但是,我一直无法停止如何防止在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
: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的结合解决了我的问题!再次感谢!