(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를 전환하기 전에 탭 표시줄을 닫습니다. 이는 구현하기가 더 쉽습니다.