Vim“使用 sudo 写入”不起作用

Vim“使用 sudo 写入”不起作用

我正在使用非 root 权限编辑名为ssh_configin文件夹的系统级文件。我使用以下命令保存此文件:/etc/sshvi

:w !sudo tee %

但它不起作用,我收到这个错误

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper

shell returned 1

Press ENTER or type command to continue

然后我通过明确提供密码尝试另一个命令root

:w !echo password | sudo -S tee %

并显示警告

W12: Warning: File "user_config" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File:

我已经尝试了上述所有选项,但都不起作用。有解决办法吗?谢谢。

答案1

如果您编辑文件,然后决定需要root,您的流程需要改进。

打字前请三思。

阅读 man sudoedit,设置您的$EDITOR$VISUAL环境变量,这很容易。

在紧急情况下(“我输入了 97 行配置,但它不允许我保存!”),将文件保存到其他地方(您有写权限的地方):w/tmp/oops,退出编辑器并使用sudo cp /tmp/oops !$将其复制到正确的位置。

答案2

由于设计变更,neovim尚不支持通过 bang 命令通过外部程序进行交互式会话,因此:w !sudo tee % > /dev/null使用 sudo 以不同用户身份保存的方法不起作用就像在 vim 中一样。

解决方案是使用苏达插件。

相关内容