调整NERDTree窗口上vim表格的大小调整大小

调整NERDTree窗口上vim表格的大小调整大小,vim,Vim,我将vim(终端/控制台vim而非gui vim)与NERDTree和NerdTreeTab一起使用。 您可能已经猜到了,我喜欢使用vim的选项卡功能来跟踪多个打开的文件 我从来没有真正喜欢标签从小报的“开始”开始的方式(在NERDTree窗口的顶部会有标签)。我想让选项卡从NERDTree窗口的末端(即右边缘)开始,类似于IDE。所以我给自己的小报下了这样的定义: " Globals " NERDTree width let g:ntw = 25 set showtabline=2 " Al

我将vim(终端/控制台vim而非gui vim)与NERDTree和NerdTreeTab一起使用。 您可能已经猜到了,我喜欢使用vim的选项卡功能来跟踪多个打开的文件

我从来没有真正喜欢标签从小报的“开始”开始的方式(在NERDTree窗口的顶部会有标签)。我想让选项卡从NERDTree窗口的末端(即右边缘)开始,类似于IDE。所以我给自己的小报下了这样的定义:

" Globals
" NERDTree width
let g:ntw = 25

set showtabline=2 " Always show tabs
function! Tabline(width)
    let s = '%#String#'. repeat(' ', a:width).'|'
    for i in range(tabpagenr('$'))
        let tab = i + 1
        let bufnr = tabpagebuflist(tab)[tabpagewinnr(tab) - 1]
        let bufname = bufname(bufnr)
        let s .= '%' . tab . 'T'
        let s .= (tab == tabpagenr() ? '%#TabLineSel#' : '%#TabLine#')
        let s .= ' '.(bufname != '' ? fnamemodify(bufname, ':t') : 'New ').' '
        if getbufvar(bufnr, "&mod") " If buf is modified
            let s .= '+ '
        endif
    endfor
    let s .= '%#TabLineFill#'
    return s
endfunction
set tabline=%!Tabline(g:ntw)
let g:NERDTreeWinSize = g:ntw
基本上,我所做的就是在任何标签开始之前在小报中插入空格。空白空间的宽度将与NordDead的宽度匹配。现在的问题是当我调整NERDTree窗口的大小时。显然,制表符行的额外间距不会自动调整大小,从而导致严重的不匹配

我在想我能找到一种方法来执行'set tabline=%!Tabline(g:ntw)“其中g:btw是调整NERDTree窗口大小时NERDTree的当前宽度。但我无法找到一种方法来实现这一点

作为补充说明,由于我使用的是NerdTreeTab插件,您可以假设NERDTree窗口将始终存在。您也可以假设NERDTree窗口将始终位于左侧

那么我的问题是:

1) 有没有更优雅的方式来完成这件事

2) 如果否为1),我如何实现我正在尝试的目标?(请输入示例代码)


提前感谢!

假设NERD_树窗口始终位于左侧,占据整个高度,其窗口编号为1。然后您可以通过
winwidth(1)查询当前宽度
而不是在
g:ntw
变量中对其进行硬编码。

没有
WindowResized
事件,Vim无法执行异步代码使得轮询NERDTree窗口相对困难。您可能应该研究一个通过python提供异步的插件/lib。另一个解决方案是挂接aut某些事件上的ocmd保证经常触发,如
光标移动
。这正是我需要的。谢谢!