“错误”;只允许使用一个文件名";Dmenu+;ubuntu上的Vim
在ec2/ubuntu上尝试使用vim的dmenu。Git已安装 按照此处的步骤进行操作: 知道我为什么会在vim中出错吗“错误”;只允许使用一个文件名";Dmenu+;ubuntu上的Vim,ubuntu,vim,Ubuntu,Vim,在ec2/ubuntu上尝试使用vim的dmenu。Git已安装 按照此处的步骤进行操作: 知道我为什么会在vim中出错吗 Error detected while processing function DmenuOpen: line 5: E172: Only one file name allowed: tabe dmenu: cannot open display 出于某种原因,您的函数将多个文件名或Vim理解为多个文件名传递给只能处理一个文件名的:tabe或:e 也许文件名中有空格
Error detected while processing function DmenuOpen:
line 5:
E172: Only one file name allowed: tabe dmenu: cannot open display
出于某种原因,您的函数将多个文件名或Vim理解为多个文件名传递给只能处理一个文件名的
:tabe
或:e
也许文件名中有空格
替换
execute a:cmd . " " . fname
与
要查看传递给
:tabe
的内容,主要问题在于您的环境:无法打开显示。Dmenu需要访问X服务器才能显示其完成菜单。在终端中,您需要定义如下内容
$ export DISPLAY=:0.0
您可以通过执行dmenu
(或xclock
,或gvim
,或任何其他X应用程序)来检查该功能是否正常工作
第二,Vim集成中的命令
execute a:cmd . " " . fname
是错过了适当的逃避;这就是为什么会出现E172错误。要处理各种文件名,请使用
execute a:cmd . " " . fnameescape(fname)
最重要的是,一点防御性的编程就可以阻止这一切。在system()
之后,最好检查v:shell\u error
外部命令是否实际成功。仅弹出“dmenu:cannot open display”。也许我遗漏了一些关于echo的信息,它是否应该显示在vim内部?echo
应该回显dmenu
的过滤输出,但它看起来像dmenu
无论如何都无法运行。由于dmenu
输出dmenu:cannot open display
,Vim尝试执行:tabe dmenu:cannot open display
,这显然无法工作。您必须调查导致dmenu
失败的原因。或者,这就是我的理解。你拿到文件清单了吗?谢谢你的回答。在终端中运行导出行后无法执行dmenu。寻找其他东西…啊,当我在ec2上通过终端远程运行时,我开始了解dmenu需要额外的魔法?我需要学习如何打开x显示,使其与putty一起工作?当您在Windows上(使用putty)时,您必须安装x服务器,例如Cygwin-x,它是Cygwin的一部分。不过,这是一个主要的软件安装。如果你在Linux上的话会容易得多。我渐渐明白了这一点。它通过MobaXterm和gvim工作,但速度慢得可笑。谢谢,Linux在很多方面都会更好。谢谢!在lawrencium上有问题,我的.vim在一个带有空格的文件夹中。在Windows上直接使用vim穿透腻子。没有意识到dmenu需要X服务器,或者需要什么才能让它在putty中工作。其他终端都配有X服务器,但到目前为止,它们的运行速度太慢,无法发挥作用。
execute a:cmd . " " . fnameescape(fname)