我可以使用
:e scp://user@server//filepath
来做到这一点,没问题;)。但是,他可以只键入服务器名称,然后完成文件路径和名称(带有选项卡),而这是我无法做到的。有人知道这是否可以在vim中完成吗?#1 楼
是的,但是目前(2015年)不是开箱即用的,因为vim的内置文件管理器本身不支持远程浏览。 。更新Q3 @ 2016:
有几种解决方法,它们在舒适性/兼容性/努力程度上各不相同。它们在一起构成一个很好的解决方案,但它们也可以单独使用:
在您的shell初始化文件中设置用户级
afuse
/ sshfs
守护程序几行脚本来自例如
.profile
,您可以在以下目录下设置按需自动安装器~/scp/
。有关此集成的详细信息,请参见Unix&Linux SE。这是最舒适的选择,远程文件“出现”在本地,但是需要afuse
和sshfs
可供您使用。为远程文件路径设置shell命令行完成
bash的完成功能包具有为
ssh
和scp
完成而设计的一些功能。通过包装函数vim()
,将远程路径整理成vim
的预期形式,可以将它们用于将TAB完成的远程文件提供给vim
。此处还详细介绍了这种方法的次要缺点。对于没有侮辱的情况。需要安装bash-completion
或与之等效的其他外壳。 如果您不能修改环境或仅-43:在vim文件管理器中,可以使用//?用于向前/向后搜索的键,您可以将TAB映射到其中之一。这比听起来要强大得多,它可以使您快速浏览文件系统。下面的描述。
基本解决方法(对于带有NetRW的标准vim):
不要将vim指向远程文件
指向目录“在顶部”,例如
.vimrc
:$HOME
或vim scp://files/
:/
NetRW插件在所需的顶级文件夹中打开(
vim scp://files///
或/
)。 > 要在
$HOME
上使用NetRW编辑远程/etc/network/interfaces
,请执行以下操作: 。甚至更好,几乎可以模仿TAB完成,请在
/
中添加:为TreeView配置NetRW:?
如果需要(我使用它),请为
.vimrc
添加一个远程VExplore开关。我还建议为NetRW或所有缓冲区。
与“常规”制表符完成相比,以上内容有所不同,但非常舒适。
注意:以上所有内容均基于ssh证书
autocmd filetype netrw noremap <buffer> <TAB> /
中具有用户,端口,压缩,JumpHost(ProxyCommand的无密码连接)的设置使得只需要主机名/别名即可。 />和这里评论
您可以通过总结链接来扩展技巧吗?如果站点出现故障或死掉,纯链接不是很有用。
–muru
15年8月10日在2:18
我认为,这或多或少是我最终的“解决方案”,直到NetRW可以本地完成。我仍然会处理其余的已知问题,但希望找到(或指出)更多的细微错误,修复和增强功能。它们将被处理/合并。感谢您的评论。
– Alex Stragies
15年8月12日在18:47
评论
尽管ctrlp可能会支持它……但显然这是一项功能请求。