2013-02-26 92 views
1

嘗試在ec2/ubuntu上使用vim進行dmenu。 Git已安裝。錯誤「只允許一個文件名」ubuntu上的Dmenu + Vim

Follwing在這裏步驟: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 
+0

在Windows上通過膩子使用直vim。沒有意識到d服務器需要d服務器,或者需要什麼才能使它在膩子中工作。其他終端隨X Server一起提供,但到目前爲止,它們太慢而無用。 – heorling 2013-02-27 06:51:38

回答

2

主要問題在於您的環境: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外部命令是否確實成功。

+0

謝謝你的答案。在終端中運行輸出行後不能執行dmenu。尋找別的東西.. – heorling 2013-02-26 13:52:44

+0

啊,因爲我在ec2上通過終端遠程運行這個,我開始明白dmenu需要額外的魔法?我需要學習如何打開x顯示器,以便與膩子一起使用? – heorling 2013-02-26 14:06:48

+0

當您在Windows上(使用PuTTY)時,您必須安裝X服務器,例如_Cygwin-X_,它是Cygwin的一部分。不過,這是一款重要的軟件安裝。如果你在Linux上,這會更容易。 – 2013-02-26 14:19:36

1

出於某種原因,你的功能是通過多個文件名或什麼Vim理解爲多個文件名以:tabe:e只能對付一個文件名。

也許文件名中有空格?

更換

execute a:cmd . " " . fname 

echo fname 

,看看傳遞給:tabe

+0

「dmenu:無法打開顯示」只會彈出。也許我錯過了一些關於echo的內容,它不應該顯示在vim裏面嗎? – heorling 2013-02-26 08:03:53

+0

'echo'應該回顯'dmenu'的過濾輸出,但看起來像'dmenu'無法運行。由於'dmenu'輸出'dmenu:無法打開顯示器',Vim會嘗試':tabe dmenu:無法打開顯示器',這顯然無法工作。你必須調查是什麼導致'dmenu'失敗。或者,那就是我的理解。你甚至獲得文件列表? – romainl 2013-02-26 08:26:27

+0

模糊查找工程,dmenu不.. – heorling 2013-02-26 13:46:10