只允许一个文件名错误

只允许一个文件名错误

有时我会忘记执行此操作sudo vim并打开我没有写入权限的文件。我看到这个帖子这真的很有帮助。

当我:w !sudo tee %这样做时,它要求我输入密码,然后是选项(O)K(L)OAD。这很好用。但是当我这样做时:wq !sudo tee %vim给了我一个错误 -

E172: Only one file name allowed

为什么它不让我进入之后的提示wq。我不明白这个错误。

答案1

因为: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}

相关内容