(g) vim - NerdTree e tagbar acima uns dos outros deixaram o arquivo editado?

0

Qualquer chance de obter (g) vim exibindo NerdTree e tagbar acima um do outro para o arquivo editado?

+-----------+-------------+
| nerd tree | edited file |
| contents  |             |
+-----------+             |
| tagbar    |             |
| contents  |             |
+-----------+-------------+

Gostaria de tê-lo feito em .vimrc de alguma forma.

Até agora, a seção relevante no meu .vimrc é assim:

" NERDTree shortcut
:nmap \e :NERDTreeToggle<CR>
" tagbar settings
let g:tagbar_left=1
nnoremap <silent> <F9> :TagbarToggle<CR>

No entanto, quando exibidos, são exibidos assim:

+----------+-----------+-------------+
| tagbar   | nerd tree | edited file |
| contents | contents  |             |
|          |           |             |
|          |           |             |
|          |           |             |
+----------+-----------+-------------+
    
por Peter Butkovic 30.09.2013 / 09:50

2 respostas

2

Isso será difícil. Tanto :NERDTreeToggle como :TagbarToggle usam :vsplit internamente, e não há como simplesmente reconfigurar ou ligar a ele.

Você teria que escrever wrappers para seus gatilhos \e e <F9> que detectam o layout da janela atual, fazem a alternância e, em seguida, sacodem as janelas para atender aos seus requisitos. Esse último passo já está bastante envolvido. Você tem que empurrar uma das janelas da barra lateral para baixo com :wincmd J e, em seguida, fazer com que a janela de arquivo correta, altura completa, ganhe novamente :wincmd L .

Você vê, não é fácil. O que eu faço em vez disso é sempre ter apenas um desses plugins ativos. Os meus mapeamentos pessoais verificam as barras laterais abertas e fecham-se, e. Tagbar antes de alternar na NERD_tree. Isso é muito mais fácil de implementar.

    
por 30.09.2013 / 17:06
3

Eu fiz uma função vim escrita por Jan Larres na pergunta " Como abrir ou fechar o NERDTree e o Tagbar com < líder > \? " e modifiquei (eu adicionei apenas os comandos wincmd) para fazer meu vim ficar assim:

+-----------+-------------+ 
| Tagbar    |    file     |
| contents  |             |
+-----------+             |
| NERDTree  |             | 
| contents  |             |
+-----------+-------------+

função! ToggleNERDTreeAndTagbar ()     vamos w: jumpbacktohere = 1

" Detect which plugins are open
if exists('t:NERDTreeBufName')
    let nerdtree_open = bufwinnr(t:NERDTreeBufName) != -1
else
    let nerdtree_open = 0
endif
let tagbar_open = bufwinnr('__Tagbar__') != -1

" Perform the appropriate action
if nerdtree_open && tagbar_open
    NERDTreeClose
    TagbarClose
elseif nerdtree_open
    TagbarOpen
    wincmd J
    wincmd k
    wincmd L
elseif tagbar_open
    NERDTree
    wincmd J
    wincmd k
    wincmd L
else
    NERDTree
    TagbarOpen
    wincmd J
    wincmd k
    wincmd L
endif

" Jump back to the original window
for window in range(1, winnr('$'))
    execute window . 'wincmd w'
    if exists('w:jumpbacktohere')
        unlet w:jumpbacktohere
        break
    endif
endfor  
 endfunction
 nnoremap <leader>\ :call ToggleNERDTreeAndTagbar()<CR>
    
por 20.03.2014 / 17:34

Tags