首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(g)vim - NerdTree和标题栏在彼此上方,留给编辑的文件?

(g)vim - NerdTree和标题栏在彼此上方,留给编辑的文件?
EN

Unix & Linux用户
提问于 2013-09-30 07:50:23
回答 2查看 3K关注 0票数 1

是否有机会让(g)vim将NerdTree标题栏显示在彼此之上,留给编辑的文件?

代码语言:javascript
复制
+-----------+-------------+
| nerd tree | edited file |
| contents  |             |
+-----------+             |
| tagbar    |             |
| contents  |             |
+-----------+-------------+

我想以某种方式用.vimrc来做。

到目前为止,我的.vimrc中的相关部分如下所示:

代码语言:javascript
复制
" NERDTree shortcut
:nmap \e :NERDTreeToggle<CR>
" tagbar settings
let g:tagbar_left=1
nnoremap <silent> <F9> :TagbarToggle<CR>

然而,当显示时,它们会如下所示:

代码语言:javascript
复制
+----------+-----------+-------------+
| tagbar   | nerd tree | edited file |
| contents | contents  |             |
|          |           |             |
|          |           |             |
|          |           |             |
+----------+-----------+-------------+
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2013-09-30 15:06:45

那会很困难的。:NERDTreeToggle:TagbarToggle都在内部使用:vsplit,没有办法简单地重新配置或连接到它。

您必须为您的\e<F9>触发器编写包装器,以检测当前窗口布局,进行切换,然后左右摆动窗口以满足您的需求。仅最后一步就已经相当复杂了。您必须按下一个侧边栏窗口与:wincmd J,然后使正确的文件窗口完全高度再次赢得:wincmd L

你看,这不容易。我所做的是,总是只有其中一个插件是活跃的。我的个人映射检查打开的侧边栏,在切换NERD_tree之前关闭例如Tagbar。实现起来要容易得多。

票数 2
EN

Unix & Linux用户

发布于 2014-03-20 16:34:31

在“如何用\打开或关闭NERDTree和Tagbar?”问题中,我使用了Jan编写的vim函数。并修改它(我只添加了wincmd命令),使我的vim看起来如下:

代码语言:javascript
复制
+-----------+-------------+ 
| Tagbar    |    file     |
| contents  |             |
+-----------+             |
| NERDTree  |             | 
| contents  |             |
+-----------+-------------+

功能!ToggleNERDTreeAndTagbar()让w:jumpbacktohere =1

代码语言:javascript
复制
" 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>
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/92942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档