Vim逃犯:切换“开关”:Gblame“;作用

Vim逃犯:切换“开关”:Gblame“;作用,vim,vim-fugitive,Vim,Vim Fugitive,我对vim还是有点陌生,所以我希望这个问题不是太基本,但我在《逃犯的文档》中找不到答案。。 我希望添加一个切换功能,该功能可执行以下操作: if :Gblame buffer is open: close buffer else execute "normal :Gblame<CR>" endif map gb :call (the above function)<CR> 如果:Gblame缓冲区打开: 闭合缓冲区 其他的 执行“正常:Gblam

我对vim还是有点陌生,所以我希望这个问题不是太基本,但我在《逃犯的文档》中找不到答案。。 我希望添加一个切换功能,该功能可执行以下操作:

if :Gblame buffer is open:
     close buffer
else 
     execute "normal :Gblame<CR>"
endif

map gb :call (the above function)<CR>
如果:Gblame缓冲区打开:
闭合缓冲区
其他的
执行“正常:Gblame”
恩迪夫
map gb:call(上述函数)
我正在考虑添加一个变量,该变量根据我使用“gb”映射的次数在1或0之间变化。

但我真正想要的是一种检查缓冲区是否打开的方法。这可能吗?

逃犯插件在边栏缓冲区中设置一个自定义的
'filetype'
(到
逃犯缓冲区;通过
:setlocalfiletype?
查询,或通过
&l:filetype
特殊变量在Vimscript中设置)。这仅在当前处于侧边栏中时有效。为了使主窗口也能使用此功能,您必须检查缓冲区名称(例如,通过
bufwinnr('sentivedull')!=-1
),然后在调用
:close
(或使用
:bdelete
,通过
bufnr('sentivedull')
获得缓冲区编号)

函数!s:toggledull()
if&l:filetype==#“文件类型”
关
其他的
Gblame
恩迪夫
端功能
nnoremap gb:call-togglebull()
笔记
  • :Gblame
    是一个(自定义)Ex命令;您可以像在Vimscript中一样调用它;这里不需要
    :正常
  • 关闭侧边栏只需
    :如上所述,当您在侧边栏中时关闭
  • 我已经定义了一个脚本本地函数;cp
  • );它使映射不受重映射和递归的影响

可能希望在
窗口内使用
:normal gq
,因为它将关闭“责备”窗口,然后将文件恢复到工作树(如
:Gedit
)。请参见
:h逃犯-:Gblame
。然而,我想我应该只做一个映射到
:Gblame
,然后学会在窗口内使用
gq
function! s:ToggleBlame()
    if &l:filetype ==# 'fugitiveblame'
        close
    else
        Gblame
    endif
endfunction

nnoremap gb :call <SID>ToggleBlame()<CR>