远程文件的文件名完成


16

我的朋友几天前在Emacs上给我展示了一个很酷的技巧,他可以在远程服务器上打开文件,而我立即想到“也应该在vim中这样做”,这是事实。

我可以:e scp://user@server//filepath这样做,没问题;)。但是,他可以只键入服务器名称,然后完成文件路径和名称(带有选项卡),这是我无法做到的。有人知道这是否可以在vim中完成吗?


1
尽管ctrlp可能会支持它……但是显然这是一个功能请求
muru

Answers:


6

是的,但是目前(2015年)不是现成的,因为vim的内置文件管理器本身不支持远程浏览。。

2016年第三季度更新:

有几种解决方法,它们的舒适度/兼容性/努力程度各不相同。它们共同构成了一个不错的解决方案,但它们也可以单独使用:

如果您不能修改环境或.vimrc-only:在vim文件管理器中,您可以使用// ?键搜索前进/后退,并且可以映射TAB到其中之一。这比听起来要强大得多,它可以使您快速浏览文件系统。说明如下。

基本解决方法(对于带有NetRW的标准vim):

  • 不要将vim指向远程文件
  • 指向目录“顶部”,例如$HOMEvim scp://files//vim scp://files///
  • NetRW插件会在所需的顶级文件夹(/$HOME)中打开。
  • 在NetRW中,您可以通过很少的击键进行导航:
  • /etc/network/interfaces使用NetRW进行远程编辑/

    /etENTERENTER/netwENTERENTER/intENTERt

您始终可以使用?向上搜索,而无需从顶部进行换行。

更好的是几乎可以模仿 TAB -Completion添加.vimrc

  • 映射TAB/ NetRW:autocmd filetype netrw noremap <buffer> <TAB> /
  • 为TreeView配置NetRW: let g:netrw_liststyle=3
  • <C-E>如果需要,可以为远程VExplore添加一个切换开关(我使用它)。
  • 我还建议incsearchignorecasesmartcase为NETRW,或所有缓冲区。

与“常规”制表符完成相比,以上内容有所不同,但非常舒适。

注意:以上所有内容均假定~/.ssh/config与用户,端口,压缩,JumpHost(基于ssh证书)的无密码连接(ProxyCommand已设置为仅需要主机名/别名)。

这也以前在这里这里的场外讨论过


1
您可以通过总结链接来扩展技巧吗?如果站点出现故障或死亡,纯链接不是很有用。
muru

我认为,这差不多是我最终的“解决方案”,直到NetRW可以本地完成。我仍然会处理其余的已知问题,但是希望找到(或指出)更多的细微错误,修复和增强功能。它们将被处理/合并。感谢您的评论。
Alex Stragies 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.