Neovim scp 不提示输入密码

Neovim scp doesn't prompt for password

在 Vim 中,这会提示我输入允许我编辑远程文件的密码:

:e scp://username@host//path

然而,在 NeoVim 中使用相同的命令不会提示输入密码,因为底层命令 :! scp user@host:path LOCAL-TEMPFILE 在 NeoVim 中无法交互工作:https://github.com/neovim/neovim/wiki/FAQ#-and-system-do-weird-things-with-interactive-processes

使用通过 ssh 进行密码验证的 NeoVim 编辑远程文件的最佳做法是什么?

我猜想提供此功能的 netrw 插件没有为 Neovim 安装/激活。检查:Nread命令是否可用。比较 Vim 和 Neovim 的 :scriptnames 输出。阅读插件的文档 :help pi_netrw 了解如何安装和启用它。

更新:所以,事实证明有一个 Neovim issue 的交互式命令从 :! 开始,这就是 netrw 正在做的;该插件不会捕获密码挑战。它基本上是在执行 :! scp user@host:path LOCAL-TEMPFILE

如果你能避免这个问题(对主机使用基于密钥的 SSH 身份验证),你可以继续使用 Neovim 和 netrw。如果这对您真的很重要,则可以使用更详细的解决方法。 (例如,我使用围绕 ssh 的包装器解析 ~/.ssh/config 以获取自定义 Password Hunter2 条目(这些密码在组织中众所周知,仅用于测试 VM,因此这里没有安全问题), 然后使用 sshpass 自动登录。)

否则,您必须切换到经典 Vim 进行 netrw 操作,或使用其他方式访问这些远程文件(例如 SSHFS)。