有时我会忘记sudo vim
打开我没有写权限的文件。我看到了这个帖子,它真的很有帮助。
当我这样做时,:w !sudo tee %
它要求我输入密码,然后是选项(O)K
和(L)OAD
. 这工作得很好。但是当我这样做时:wq !sudo tee %
,vim
给了我一个错误-
E172: Only one file name allowed
Run Code Online (Sandbox Code Playgroud)
为什么它不让我在wq
. 我不明白这个错误。
因为: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 |:!|.
Run Code Online (Sandbox Code Playgroud)
请注意,:w!
和:w !{cmd}
是两个完全不同的东西;在前者中,感叹号的意思是“强制写入”,在后者中,它是一种管道符号,可以将整个文本范围传递给后续命令(在您的情况下,以tee
超级用户身份运行,两者都将文件返回到vi 并将其保存到由通配符表示的文件名%
)。
可悲的是,命令没有这样的选项:wq
。此命令唯一可用的其他形式是:wq!
(此处感叹号不是用于管道到另一个命令,而是用于强制退出,很像:w!
)和:w[!] {file}
。
归档时间: |
|
查看次数: |
4936 次 |
最近记录: |