Verwendung von VIM NERDTree Plugin.remap NERDTree Doppelklick auf 'T'
Gibt es eine Möglichkeit, den Doppelklick auf eine Dateiaktion erneut zuzuordnen, um die Datei automatisch in einem neuen Register zu öffnen (T)?
Verwendung von VIM NERDTree Plugin.remap NERDTree Doppelklick auf 'T'
Gibt es eine Möglichkeit, den Doppelklick auf eine Dateiaktion erneut zuzuordnen, um die Datei automatisch in einem neuen Register zu öffnen (T)?
1 Einleitung
Dies funktioniert für NERD Baum Version 4.2.0.
2 Öffnen von Verzeichnissen und Dateien in einem neuen Tab
Wenn Sie möchten, Verzeichnisse öffnen und Dateien in einem neuen Tab Sie einfach die folgende Zeile in ~/.vimrc
hinzufügen können.
let g:NERDTreeMapOpenInTabSilent = '<2-LeftMouse>'
3 Nur offene Dateien in einem neuen Tab
Wenn Sie nurDateien in einem neuen Tab Sie etwas anspruchsvollere zu tun haben, öffnen möchten.
Fügen Sie diese Funktion irgendwo in 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
und ersetzen Sie die Zeile
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>activateNode(0)<cr>
mit:
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>openInTabAndCurrent(0,1)<cr>
Sie diese Zeile in der Funktion s:bindMappings()
in der Datei finden NERD_tree.vim
.
Obwohl meine NERDtree-Version auch als 4.2.0 (Git geklont 2015-07-22) gemeldet wird, scheint es in der Zwischenzeit einige größere Umgestaltungen gegeben zu haben, daher die Lösung von jens-na in Abschnitt (3) nicht übertragen (aber es scheint immer noch keine Out-of-the-Box-Lösung zu sein). Ich musste eine Linie in autoload/nerdtree/ui_glue.vim ersetzen, wie unten das diff. (Hinweis: auf MacVim getestet)
--- .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" })
Dies scheint der einzige Weg, dies für den aktuellen NERDTree zu tun, hat auch keine Probleme mit Doppelklick auf Dirs (mit Linux mit GVim). – kjyv
Shift + t auf eine beliebige Datei in NERDTree. Oh Entschuldigung, lies einfach die Frage noch einmal. Sie benötigten eine Zuordnung und öffneten die Datei nicht einfach im Hintergrund. Versuchen Sie – kiddorails
Sie müssen wahrscheinlich [NERDTree-Code] (https://github.com/scroloose/nerdtree/blob/master/plugin/NERD_tree.vim#L2869) selbst bearbeiten. – romainl