错误“只允许一个文件名”Ubuntu上的Dmenu + Vim

时间:2013-02-26 05:39:26

标签: ubuntu vim

在ec2 / ubuntu上尝试使用vim进行dmenu。 Git已安装。

完成此处的步骤:http://leafo.net/posts/using_dmenu_to_open_quickly.html

我知道为什么我在vim中遇到这个错误?

Error detected while processing function DmenuOpen:
line 5:
E172: Only one file name allowed: tabe dmenu: cannot open display

2 个答案:

答案 0 :(得分:3)

主要问题出在您的环境中:cannot open display。 Dmenu需要访问您的X服务器以显示其完成菜单。在您的终端中,您需要定义类似

的内容
$ export DISPLAY=:0.0

您可以通过执行dmenu(或xclock,或gvim或任何其他X应用来检查这是否有效。


其次,Vim集成中的命令

execute a:cmd . " " . fname

缺少正确的逃避;这就是你得到E172错误的原因。要处理各种文件名,请使用

execute a:cmd . " " . fnameescape(fname)

最重要的是,一点点的防御性编程就会阻止这一切。在system()之后,最好检查v:shell_error外部命令是否实际成功。

答案 1 :(得分:2)

出于某种原因,您的功能是将多个文件名或Vim理解为多个文件名的内容传递给:tabe:e,这些文件名只能处理一个文件名。

也许名字中有空格的文件?

替换

execute a:cmd . " " . fname

echo fname

查看传递给:tabe的内容。