vim NERDTree collegamento a una funzione esistente


1

Voglio usare il tasto freccia destra per aprire un nodo in NERDtree. Vedo che c'è NERDTreeAddKeyMap, ma sono troppo un newb di vimscript per sapere come richiamarlo correttamente. Voglio che la freccia destra invochi activateNode. L'ho fatto aggiungendo questa riga in NERD_tree.vim stesso:

exec "nnoremap <silent> <buffer> <Right> :call <SID>activateNode(0)<cr>"

ma voglio farlo nel modo giusto nel mio .vimrc

Risposte:


0

:help NERDTreeAddKeyMap() ti mostrerà come scrivere un piccolo plugin per NERDTree. Perché stai chiamando una funzione NERDTree integrata non hai nemmeno bisogno di una personalizzata.


Speravo in ulteriori dettagli qui ... Non so nulla di vimScript.
Ned Batchelder

0

Penso che, salvo una limitazione nella versione che sto usando (4.2.0), quanto segue farà quello che vuoi.

In un mymapping.vim, in ~ / .vimfiles / nerdtree_plugin /

" -*- vim -*-
call NERDTreeAddKeyMap({ 'key': "Right", 'scope': "Node", 'callback': "<SID>activateNode" })

Ora, per fare in modo che "Right" funzioni correttamente, dovrai modificare NERD_tree.vim, in:

"FUNCTION: KeyMap.bind() {{{3
function! s:KeyMap.bind()

Modificare:

if mapkey =~? '^\([CM]-\|middlerelease\|2-leftmouse\|leftrelease\)'

a:

if mapkey =~? '^\([CM]-\|middlerelease\|2-leftmouse\|leftrelease\|right\)'

Il vecchio codice non eseguiva una gestione speciale per le chiavi di mappatura che non lo erano & lt; MiddleRelease & gt ;, & lt; 2-LeftMouse & gt ;, oppure & lt; LeftRelease & gt;


Probabilmente dovresti aggiungere che non penso che tu possa farlo esattamente "nel tuo .vimrc". Poiché la mappatura dipende dal caricamento del plugin, penso che l'unico modo per farlo sia in un file separato come descritto sopra.
pottsdl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.