2013-05-03 87 views
9

有沒有辦法在Vim的NERDtree插件中複製文件的路徑?使用NERDtree Vim插件複製路徑文件

更好:是否有一些插件可以使Sublime Text的插件SideBarEnhancements執行相同的操作?

+0

請編輯您的問題來解釋a)ST插件的功能和b)爲什麼Vim中的等效功能不適合該法案。另外,複製後你想用這個文件名做什麼?將它插入當前緩衝區?將它粘貼到另一個程序中?謹防XY問題。 – romainl 2013-05-04 05:46:23

回答

8

NERD_tree帶有自己的擴展系統;只要把下面的代碼片段到~/.vim/nerdtree_plugin/yank_mapping.vim

call NERDTreeAddKeyMap({ 
     \ 'key': 'yy', 
     \ 'callback': 'NERDTreeYankCurrentNode', 
     \ 'quickhelpText': 'put full path of current node into the default register' }) 

function! NERDTreeYankCurrentNode() 
    let n = g:NERDTreeFileNode.GetSelected() 
    if n != {} 
     call setreg('"', n.path.str()) 
    endif 
endfunction 

當然,你可以適應默認鍵(yy)和寄存器(";使用+爲剪貼板)。

+0

偉大的提示,** Ingo **!它可以工作,但是有一些方法可以從項目根目錄複製路徑而不是'/ home'? – 2013-07-24 20:56:52

+1

@TárcioZemel:你是說,相對於項目根目錄的路徑?您可以通過內置的'fnamemodify()'函數(在上面的'setr​​eg()'調用中)對其進行轉換。 – 2013-07-25 06:32:36

+1

太好了,就是這樣!我剛把這行改成了'call setreg(''',(fnamemodify(n.path.str(),':。')))'和魔法發生了! 再次謝謝! – 2013-07-25 17:36:46

5

這是我發現NERDTree一個快速谷歌:CopyPath

但它聽起來就像你正試圖使VIM到崇高的文本。與大多數文本編輯器相比,Vim在文本編輯方面往往有着截然不同的理念。在我個人看來,使用vim總比反對它好。這是Drew Neil Vimcasts的一個不錯的帖子,解釋了benefit to split explorers

可能更多的vim插入路徑的方式是使用文件完成。在插入模式下,您可以通過按<c-x><c-f>來觸發該完成,然後通過<c-p><c-n>(分別爲上一個和下一個)的菜單進行操作。如果您想要插入當前的緩衝區路徑,您可以通過%寄存器將其粘貼,例如"%p或在插入/命令行模式下按<c-r>%

如需更多幫助,請參見:

:h ins_completion 
:h i_CTRL-R 
:h quote% 
:h registers 
2

我猜你真正需要的是這樣的崇高插件上下文菜單?

這是與NERDTree內置。

只需在您突出顯示的節點上點擊m,您就會看到一個新窗口,彈出詢問您想要執行的操作。基本功能是:添加,刪除,移動,複製。

還有一個插件可讓您搜索(使用grep),無論是單個文件還是整個目錄突出顯示。

NERDTree還爲您在該上下文窗口中輕鬆構建的任何自定義操作提供了API。

+0

還有(l)列表選項,這可能是什麼被問到關於 – valk 2016-08-30 13:15:51

相關問題