Przy użyciu wtyczki VIM NERDTree.remap NERDTree Kliknij dwukrotnie, aby "T"
Czy istnieje sposób na remapowanie dwukrotnego kliknięcia akcji pliku, aby otworzyć plik po cichu w nowej zakładce (T)?
Przy użyciu wtyczki VIM NERDTree.remap NERDTree Kliknij dwukrotnie, aby "T"
Czy istnieje sposób na remapowanie dwukrotnego kliknięcia akcji pliku, aby otworzyć plik po cichu w nowej zakładce (T)?
1 Wprowadzenie
Działa to dla NERD drzewa wersji 4.2.0.
2 Otwartych katalogów i plików w nowej karcie
Jeśli planujesz otworzyć katalogi i pliki w nowej karcie można po prostu dodać następującą linię do ~/.vimrc
.
let g:NERDTreeMapOpenInTabSilent = '<2-LeftMouse>'
3 otwarte tylko pliki w nowej karcie
Jeśli tylko chcą otworzyć plików w nowej karcie trzeba zrobić coś bardziej wyrafinowane.
Dodaj tę funkcję gdzieś w 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
i zamienić linię
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>activateNode(0)<cr>
z:
nnoremap <silent> <buffer> <2-leftmouse> :call <SID>openInTabAndCurrent(0,1)<cr>
można znaleźć ten wiersz w funkcji s:bindMappings()
w pliku NERD_tree.vim
.
Chociaż moja wersja NERDtree jest również zgłaszana jako 4.2.0 (git sklonowany 2015-07-22), wydaje się, że w międzyczasie nastąpiło kilka istotnych zmian, stąd rozwiązanie wg Jeny-na w sekcji (3) nie zostały przeniesione (ale nadal nie wygląda na gotowe rozwiązanie). Musiałem zamienić wiersz w autoload/nerdtree/ui_glue.vim, jak na poniższym rysunku. (Uwaga: przetestowano na komputerze 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" })
Wydaje się, że jest to jedyny sposób na zrobienie tego dla aktualnego NERDTree, nie ma też problemów z dwukrotnym kliknięciem na dirs (używając Linuksa z GVimem). – kjyv
Shift + t na dowolnym pliku w NERDTree. Och, przepraszam, po prostu przeczytaj ponownie pytanie. Wymagane jest mapowanie, a nie tylko ciche otwarcie pliku. Próbowanie – kiddorails
Najprawdopodobniej będziesz musiał samodzielnie zmodyfikować kod [NERDTree's code] (https://github.com/scrooloose/nerdtree/blob/master/plugin/NERD_tree.vim#L2869). – romainl