Использование плагина VIM NERDTree.
Есть ли способ переназначить действие «Двойной щелчок по файлу», чтобы файл автоматически открывался на новой вкладке (T)?
Использование плагина VIM NERDTree.
Есть ли способ переназначить действие «Двойной щелчок по файлу», чтобы файл автоматически открывался на новой вкладке (T)?
1 Введение
Это работает для версии дерева NERD 4.2.0.
2 Открывать папки и файлы в новой вкладке
Если вы хотите открывать каталоги и файлы на новой вкладке, вы можете просто добавить следующую строку в файл ~/.vimrc
.
let g:NERDTreeMapOpenInTabSilent = '<2-LeftMouse>'
3 Открывать файлы только в новой вкладке
Если вы только хотите открывать файлы в новой вкладке, вам нужно сделать что-то более сложное.
Добавьте эту функцию где-нибудь в NERD_tree.vim
:
" opens a file in a new tab
" KeepWindowOpen - dont close the window even if NERDTreeQuitOnOpen is set
" stayCurrentTab: if 1 then vim will stay in the current tab, if 0 then vim
" will go to the tab where the new file is opened
function! s:openInTabAndCurrent(keepWindowOpen, stayCurrentTab)
if getline(".") ==# s:tree_up_dir_line
return s:upDir(0)
endif
let currentNode = s:TreeFileNode.GetSelected()
if currentNode != {}
let startToCur = strpart(getline(line(".")), 0, col("."))
if currentNode.path.isDirectory
call currentNode.activate(a:keepWindowOpen)
return
else
call s:openInNewTab(a:stayCurrentTab)
return
endif
endif
endfunction
и заменить строку
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>activateNode(0)<cr>
с:
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>openInTabAndCurrent(0,1)<cr>
Вы можете найти эту строку в функции s:bindMappings()
в файле NERD_tree.vim
.
Хотя моя версия NERDtree также указана как 4.2.0 (git cloned 22 июля 2015 г.), похоже, что в то же время был проведен серьезный рефакторинг, поэтому решение jens-na в разделе (3) не было перенесено ( но, похоже, готового решения все еще нет). Мне пришлось заменить строку в autoload/nerdtree/ui_glue.vim, как показано ниже. (Примечание: проверено на MacVim)
--- .vim/bundle/nerdtree/autoload/nerdtree/ui_glue.vim.backup 2015-07-22 19:39:53.000000000 +0200
+++ .vim/bundle/nerdtree/autoload/nerdtree/ui_glue.vim 2015-07-22 19:40:44.000000000 +0200
@@ -10,7 +10,7 @@
call NERDTreeAddKeyMap({ 'key': '<MiddleRelease>', 'scope': "all", 'callback': s."handleMiddleMouse" })
call NERDTreeAddKeyMap({ 'key': '<LeftRelease>', 'scope': "all", 'callback': s."handleLeftClick" })
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "DirNode", 'callback': s."activateDirNode" })
- call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "FileNode", 'callback': s."activateFileNode" })
+ call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "FileNode", 'callback': s."openInNewTab" })
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "Bookmark", 'callback': s."activateBookmark" })
call NERDTreeAddKeyMap({ 'key': '<2-LeftMouse>', 'scope': "all", 'callback': s."activateAll" })