调整NERDTree窗口上vim表格的大小调整大小
我将vim(终端/控制台vim而非gui vim)与NERDTree和NerdTreeTab一起使用。 您可能已经猜到了,我喜欢使用vim的选项卡功能来跟踪多个打开的文件 我从来没有真正喜欢标签从小报的“开始”开始的方式(在NERDTree窗口的顶部会有标签)。我想让选项卡从NERDTree窗口的末端(即右边缘)开始,类似于IDE。所以我给自己的小报下了这样的定义:调整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
" 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保证经常触发,如光标移动
。这正是我需要的。谢谢!