2015-11-23 61 views
0

我得到了以下熱鍵映射:Vim中打開當前文件夾中團結

nnoremap <leader>f Unite file -path=~/Workspace

這個偉大的工程,但是,我希望讓這個路徑等於當前文件夾我在(這將與工作目錄分開)。

任何人都知道我可以做到這一點嗎? :S

+0

你試過%:P:H爲當前文件夾? – gaetanoM

+0

我有,似乎把'-path ='後面的所有內容當作一個字符串來處理。 –

+0

@RobinHeggelundHansen我注意到了一些事情:(1)你在'Unite'開始時不需要':'嗎? (2)如果地圖末尾沒有「」,則必須手動按Enter鍵。這是期望的行爲? – sidyll

回答

3

如何使用:

:UniteWithBufferDir file 

:UniteWithCurrentDir file 

(取決於你想要什麼)

+1

我完全不理解_Unite_,並給出了一個通用答案。但是,這似乎是一個確切的解決方案! – sidyll

4

可以使用expand()功能在沒有預期的文件名的地方使用%:p:h(這些擴展的文件名參數,而不是其他人一樣出現在命令中發生了什麼)

:echo expand('%:p:h') 

但是你不能直接映射。這是需要建立「上即時」的命令,所以你可以使用:execute建立並執行計算的表達式:

nnoremap <leader>f :exec "Unite file -path=" . expand('%:p:h') 
+1

⚠️@ RobinHeggelundHansen請檢查其他答案以獲取更合適的解決方案,我會保留我的,因爲它是「Vim通用」,以防您或未來的瀏覽器,需要知道這種技術。 – sidyll

2

團結允許動態參數使用backtick,作爲團結幫助文檔記載:

You don't have to use |:execute| for dynamic arguments. 
You can use evaluation cmdline by ``. 
Note: In the evaluation, The special characters(spaces, "\" and ":") 
are escaped automatically. 
> 
    :Unite -buffer-name=search%`bufnr('%')` line:forward:wrap<CR> 
你的情況

因此,映射將是:

:nnoremap <leader>f :Unite file -path=`expand('%:p:h')` 
+0

優秀的答案,以及我正在考慮刪除我的,因爲它清楚地顯示了一個非_Unite_適當的解決方案 – sidyll

+2

以及@sidyll,你的答案是讓我查找文檔的那個。所以你確實有助於我的回答:-D –

+0

謝謝......我保留它並向提問者添加了一條便條:-) – sidyll