我经常打开readonly的文件,我想知道是否有办法让它们在Vim内部可写。我不表示:w!
,我在关闭Vim后需要将文件写入。
答案 0 :(得分:5)
如果您使用的是基于unix的计算机,则可以随时使用unix命令。
:!chmod 777 %
http://ss64.com/bash/chmod.html
否则在Windows上,您应该查看calcs命令: http://www.delawarepchelp.com/system/dos/calcs.htm
答案 1 :(得分:3)
问题来自这样一个事实,即在更改文件属性后,Vim会检测到它并尝试重新加载文件,你将丢失你输入的内容。
最好的似乎是创建一个函数,在检测到属性更改时重新定义autocmd FileChangedShell
不执行任何操作。
请参阅this example of setting file attributes without reloading a buffer,其中给出了使所有文件可执行的示例。
这应该是你的伎俩
答案 2 :(得分:3)
我在其他地方找到了这个解决方案:
:set readonly!
:set modifiable
我的情况是vim打开我的文件,我打开之前从命令行chmod 777,只读。不确定这对你有帮助吗......
编辑:忘了第二个命令。只有两者的结合起作用。
答案 3 :(得分:1)
你可以使用:!执行shell命令。因此,您可以使用:!chown myusername filename
更改用户或使用例如:!chmod o+w filename
答案 4 :(得分:1)
此外,如果该文件只能由另一个用户写入(并且您不是所有者,因此无法对其进行chmod),则可以映射此命令:
:command SuWrite %!sudo tee %
当然,其他用户的sudo -u用户名
答案 5 :(得分:0)
!sudo chmod 777 %
当询问您是否要使用缓冲区时,请键入" O"好的。
答案 6 :(得分:0)
您可以使用vim-eunuch plugin中的SudoWrite
命令,即使您忘记使用sudo打开vim,也可以使用sudo写入文件。当你忘记时,这是消除烦人行为的好方法。