有时,我忘记做sudo vim和打开我没有写权限的文件。我看到了这个职位,这真的很有帮助。
当我做:w !sudo tee %时,它要求我输入密码,然后是选项(O)K和(L)OAD。这个效果很好。但当我做:wq !sudo tee %的时候,vim给了我一个错误-
E172: Only one file name allowed为什么不让我去wq之后的提示呢?我不明白这个错误。
发布于 2012-10-11 14:26:29
因为:w和:wq是两个不同的命令,具有不同的选项。
下面是带有:w选项的!{cmd}命令的说明:
:[range]w[rite] [++opt] !{cmd}
Execute {cmd} with [range] lines as standard input
(note the space in front of the '!'). {cmd} is
executed like with ":!{cmd}", any '!' is replaced with
the previous command |:!|.请注意,:w!和:w !{cmd}是两个完全不同的东西;在前者中,感叹号的意思是“强制写入”,而在后者中,它是一种管道符号,将整个文本范围传递给随后的命令(在您的示例中,tee以超级用户的身份运行,它将文件返回给vi,并将其保存到由通配符%表示的文件名)。
遗憾的是,命令:wq没有这样的选项。此命令的唯一其他可用形式是:wq! (这里的感叹号不是用于管道到另一个命令,而是用于强制退出,非常像:w!)和:w[!] {file}。
https://unix.stackexchange.com/questions/50589
复制相似问题