(g)vim - NerdTree와 태그바가 서로 겹쳐서 편집할 파일을 남겨두나요?

(g)vim - NerdTree와 태그바가 서로 겹쳐서 편집할 파일을 남겨두나요?

(g)vim을 표시할 수 있는 기회괴상한 나무그리고탭바편집 파일을 서로 겹쳐서 두시겠습니까?

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

.vimrc어떻게든 끝내고 싶어요 .

지금까지 내 관련 부분은 .vimrc다음과 같습니다.

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

그러나 표시되면 다음과 같이 나타납니다.

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

답변1

"<리더>\를 사용하여 NERDTree 및 Tagbar를 열거나 닫는 방법"이라는 질문에서 Jan Larres가 작성한 vim 함수를 사용했습니다. 내 vim이 다음과 같이 보이도록 수정했습니다(wincmd 명령만 추가했습니다).

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

기능! ToggleNERDTreeAndTagbar() let 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>

답변2

그건 어려울 것입니다. 둘 다 내부적으로 사용되며 :NERDTreeToggle간단히 재구성하거나 연결할 수 없습니다.:TagbarToggle:vsplit

현재 창 레이아웃을 감지하고 이를 전환한 다음 요구 사항에 맞게 창을 지터링하는 \e트리거 용 래퍼를 작성해야 합니다 . <F9>마지막 단계만으로도 꽤 복잡합니다. 사이드바 창 중 하나를 아래로 밀어서 :wincmd J오른쪽 파일 창을 전체 높이로 다시 만들어야 합니다 :wincmd L.

아시다시피 쉽지 않습니다. 대신에 제가 하는 일은 항상 플러그인 중 하나만 활성화하는 것입니다. 내 개인 매핑은 열린 사이드바를 확인하고 NERD_tree를 전환하기 전에 탭 표시줄을 닫습니다. 이는 구현하기가 더 쉽습니다.

관련 정보