VIM 脚本 NERDTree-<CR> 重新映射条件



我正在寻找映射NERDTree-<CR>在某种条件下
如果当前窗口为空,则NERDTree-<CR>被映射到NERDTree-o。如果不是,则映射到NERDTree-t。

我是vimscript的初学者,所以很难找到如何做到这一点。
我试图制作下面这样的函数和在"NERDTreeCustomArgsOpen"上调用的函数,但没能成功。

" Couldn't make 'IsBufferModifiable' function
" and mapping 'MyNERDTree_CR' to 'NERDTreeCustomOpenArgs'
function! IsBufferModifiable(numBuffer)
function! IsBufferEmpty(numBuffer)
return bufname(a:numBuffer) == ''
endfunction
function! IsModifiableBufferEmpty()
let emptyModifiableBuffers = filter(range(1, bufnr('$')), 'IsBufferModifiable(v:val) && IsBufferEmpty(v:val)')
if len(emptyModifiableBuffers) == 0
return 1
else
return 0
endfunction
function! MyNERDTree_CR()
if IsModifiableBufferEmpty()
call feedkeys('o')
else
call feedkeys('t')
endfunction
" Not sure it works or not
let NERDTreeCustomOpenArgs = {'file':{'where':'MyNERDTree_CR', 'reuse':'all', 'keepopen':1, 'stay':1}}

有什么办法让它们发挥作用吗?

检查给定缓冲区是否可修改通常通过检查缓冲区本地:help 'modifiable'选项的值来完成:

function! IsBufferModifiable(numBuffer)
return getbufvar(a:numBuffer, '&modifiable')
endfunction

参见:help getbufvar()

相关内容

  • 没有找到相关文章

最新更新