Uso de VIM NERDTree Plugin.reasignación NERDTree Doble clic en 'T'
¿Hay alguna forma de reasignar el doble clic en una acción de archivo para abrir el archivo de forma silenciosa en una nueva pestaña (T)?
Uso de VIM NERDTree Plugin.reasignación NERDTree Doble clic en 'T'
¿Hay alguna forma de reasignar el doble clic en una acción de archivo para abrir el archivo de forma silenciosa en una nueva pestaña (T)?
1 Introducción
Esto funciona para NERD versión árbol 4.2.0.
2 directorios y archivos abiertos en una nueva pestaña
Si desea abrir directorios y archivos en una nueva pestaña simplemente puede añadir la siguiente línea a su ~/.vimrc
.
let g:NERDTreeMapOpenInTabSilent = '<2-LeftMouse>'
3 archivos sólo está abierto en una pestaña nueva
Si única desea abrir archivos en una nueva pestaña que tiene que hacer algo más sofisticado.
Añadir esta función en algún lugar de 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
y reemplazar la línea
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>activateNode(0)<cr>
con:
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>openInTabAndCurrent(0,1)<cr>
puede encontrar esta línea en la función s:bindMappings()
en el archivo NERD_tree.vim
.
Aunque mi versión de NERDtree también se informa como 4.2.0 (git clonado el 2015-07-22), parece haber habido algunas refactorizaciones importantes mientras tanto, de ahí la solución de jens-na en la sección (3) no se transfirió (pero tampoco parece haber una solución lista para usar). Tuve que reemplazar una línea en autocarga/nerdtree/ui_glue.vim, según la diferencia a continuación. (Nota: probado en 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" })
Esta parece ser la única forma de hacerlo para el NERDTree actual, tampoco tiene problemas con hacer doble clic en directorios (usando Linux con GVim). – kjyv
Shift + t en cualquier archivo en NERDTree. Oh, lo siento, solo vuelve a leer la pregunta. Necesitabas mapear y no solo abrir silenciosamente el archivo. Probando – kiddorails
Es probable que necesite editar [código de NERDTree] (https://github.com/scrooloose/nerdtree/blob/master/plugin/NERD_tree.vim#L2869) usted mismo. – romainl