是否有机会让(g)vim将NerdTree和标题栏显示在彼此之上,留给编辑的文件?
+-----------+-------------+
| 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 | |
| | | |
| | | |
| | | |
+----------+-----------+-------------+发布于 2013-09-30 15:06:45
那会很困难的。:NERDTreeToggle和:TagbarToggle都在内部使用:vsplit,没有办法简单地重新配置或连接到它。
您必须为您的\e和<F9>触发器编写包装器,以检测当前窗口布局,进行切换,然后左右摆动窗口以满足您的需求。仅最后一步就已经相当复杂了。您必须按下一个侧边栏窗口与:wincmd J,然后使正确的文件窗口完全高度再次赢得:wincmd L。
你看,这不容易。我所做的是,总是只有其中一个插件是活跃的。我的个人映射检查打开的侧边栏,在切换NERD_tree之前关闭例如Tagbar。实现起来要容易得多。
发布于 2014-03-20 16:34:31
在“如何用\打开或关闭NERDTree和Tagbar?”问题中,我使用了Jan编写的vim函数。并修改它(我只添加了wincmd命令),使我的vim看起来如下:
+-----------+-------------+
| Tagbar | file |
| contents | |
+-----------+ |
| NERDTree | |
| contents | |
+-----------+-------------+功能!ToggleNERDTreeAndTagbar()让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>https://unix.stackexchange.com/questions/92942
复制相似问题