【问题标题】:Can't edit remote file with VIM无法使用 VIM 编辑远程文件
【发布时间】:2015-11-27 20:20:45
【问题描述】:

我正在尝试使用 VIM 编辑远程文件。在终端中,我输入:

vim scp://my_user@some.server.net//app/logs/jboss/sso.log

并得到这个输出:

:!scp -q 'my_user@some.server.net:/app/logs/jboss/sso.log' '/var/folders/4d/6z5mf6m96bq105stbqy_tjf4jmvwpj/T/vyHJPX5/0.log'
my_user@some.server.net's password:

[8]+  Stopped                 vim scp://my_user@some.server.net//app/logs/jboss/sso.log

我知道我拥有正确的凭据并且该文件存在,因为:

scp my_user@some.server.net:/app/logs/jboss/sso.log ~/Documents

成功地将所需文件复制到本地主机。 vim wikia 表明我的语法是正确的。

文件正在下载,但 VIM 没有开始编辑它。 当我启动 vim 并发出以下命令时也会发生同样的情况:

:e scp://my_user@some.server.net//app/logs/jboss/sso.log

文件被下载到临时文件夹,我被扔出 VIM 回到控制台。

我在 OSX 上使用 VIM 7.3(2010 年 8 月 15 日,2014 年 11 月 6 日 14:32:04 编译)。我用 brew 安装了它。

如何解决这种情况并让 VIM 开始编辑远程文件?

【问题讨论】:

  • 我相信,首选的方法是连接到远程并在远程 vim 中编辑它(如果它安装在那里),像这样:ssh -tt my_user@some.server.net vim /app/logs/jboss/sso.log
  • @Jakuje:我现在就是这样做的,但我想使用本地的 vim 实例,因为我想使用我的自定义键绑定和插件。

标签: macos vim scp


【解决方案1】:

看来 Vim 正在尝试为您的文件创建一个临时本地副本以供编辑。但它位于/var/folders/...(如scp 所示),您可能没有写入权限。

尝试通过设置TMPDIR 将其写入用户控件的某个位置:

export TMPDIR=$HOME/tmp
mkdir $TMPDIR  # if it doesn't exist

另外,通过使用双斜杠 (//),你是在告诉 vim 使用绝对路径,所以 /app 不应该相对于 my_user 的家。不清楚你是不是故意这样做的。

【讨论】:

  • 我故意使用绝对路径。更新TMPDIR 后我看不到[8]+ Stopped ... 消息,但VIM 没有启动。我可以在控制台中输入一些字符,然后按 Enter 让我换行。按下^c 后,我可以再次看到[8]+ Stopped... 消息。
  • 我不确定是什么触发了“停止”消息。确保您的 $TMPDIR 存在。
  • 我确保$TMPDIR 存在并将访问权限设置为777。如我之前的评论所述,问题仍然存在。
猜你喜欢
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多