如何从Vim内部创建可写文件

时间:2011-06-21 12:27:35

标签: vim

我经常打开readonly的文件,我想知道是否有办法让它们在Vim内部可写。我表示:w!,我在关闭Vim后需要将文件写入。

7 个答案:

答案 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写入文件。当你忘记时,这是消除烦人行为的好方法。