
時にはこれを忘れて、書き込みsudo vim
権限のないファイルを開くことがあります。私は見たこの投稿これは本当に役に立ちます。
これを行うと、:w !sudo tee %
パスワードを求めるオプション(O)K
と(L)OAD
。これは素晴らしい作品です。ただし:wq !sudo tee %
、これを行うとvim
エラーが発生します。
E172: Only one file name allowed
なぜafterプロンプトに入ることができないのですかwq
?このエラーを理解していません。
答え1
なぜなら、と:w
は:wq
異なるオプションを持つ2つの異なるコマンドであるからです。
: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}
異なる2つです。前者の感嘆符は「強制書き込み」を意味し、後者は全文範囲を後続のコマンドに渡すために使用されるパイプ記号です(あなたの場合はtee
スーパーユーザーとして実行されます)。 、両方ともファイルをviとして返し、ワイルドカードで表されるファイル名に保存します%
。
残念ながら、このコマンドにはそのようなオプションはありません:wq
。使用可能なこのコマンドの唯一の他の形式は:wq!
(ここで感嘆符は他のコマンドにパイプするために使用されず、同様に強制終了するために使用されます:w!
)とです:w[!] {file}
。