2012-07-01 37 views
0

我在Vim遇到了一個奇怪的問題。我想將文件從桌面或文件管理器拖放到Vim中並對其進行編輯。 Gvim正確處理這種行爲。在Vim文件名中用單引號編輯一個文件

當我嘗試在控制檯Vim中執行相同的操作時,將插入文件名的路徑。例如,如果我拖放文件/home/myuser/foo.matic,則會將文本字符串'/home/myuser/foo.matic'應用於當前緩衝區。

如果我輸入:edit,然後拖放文件名,Vim將'/home/myuser/foo.matic'視爲新目錄。

我相信這裏的問題是文件路徑前後的引號。這些似乎是由gnome-terminal和terminator插入的。有沒有辦法在拖放時從文件名中去掉這些引號?或者,Vim有沒有辦法忽略引號?

+3

在終端vim中使用拖放看起來有點不可思議。對於圖形用途,有gVim。我寧願在vim或'vim foo.matic'中輸入終端中的':e foo.matic'。另一種方法是使用'gvim -p --remote-tab-silent foo.matic'在gvim中的新選項卡中打開文件。 – epsilonhalbe

+0

我最近發現,屏幕重繪奇怪發生在終端Vim少得多。由於我只使用gVim的額外GUI功能,所以我嘗試使用終端Vim代替它。只要有意義,我將把一個文件拖到編輯器中,而不是用e或NERD樹打開它。 – rustushki

+0

它看起來像我可以使用終端Vim的--remote-tab-silent。這可能是一個不錯的選擇。 – rustushki

回答

2

你不能讓vim自己的:e命令來做你所需要的,但你可以定義你自己的一個。最簡單的解決方案 - 使shell解析shell意圖解析的內容 - 列出如下:

command -nargs=? -bang -bar E :execute "e<bang> ".fnameescape(system("echo -n ".<q-args>)) 

。該命令僅接受:e[!] {file}變體,不允許使用+cmd++opts

+0

這似乎解決了我將文件拖入Vim的問題。它要求我在拖動之前鍵入:e,但這是可以接受的,儘管我實際上需要拖動文件。謝謝ZyX。 – rustushki

+0

@rustushki在拖動之前不鍵入':e',而是':E'。我不相信可能有更好的東西(儘管在gnome-terminal文檔中可能有一個指針,與舊終端和幀緩衝區相比,終端仿真器具有相當多的功能)。絕對不是沒有修補vim:文檔指出drag'n'drop只能在GTK,win16和win32 GUI中使用。 – ZyX