我对 vim 还很陌生,所以我希望这个问题不是太基本,但我在 fugitive 的 DOC 中找不到答案。我希望添加一个执行以下操作的切换函数:
if :Gblame buffer is open:
close buffer
else
execute "normal :Gblame<CR>"
endif
map gb :call (the above function)<CR>
Run Code Online (Sandbox Code Playgroud)
我正在考虑添加一个在 1 或 0 之间变化的变量,具体取决于我使用“gb”映射的次数。
但我真正想要的是一种检查缓冲区是否打开的方法。那可能吗?
Fugitive 插件'filetype'在侧边栏指责缓冲区中设置自定义(通过fugitiveblame; 查询:setlocal filetype?,或在 Vimscript 中通过&l:filetype特殊变量查询)。仅当您当前位于侧边栏中时,此功能才有效。要使此功能也适用于主窗口,您必须检查缓冲区名称(例如 via bufwinnr('fugitiveblame') != -1),然后在调用之前返回到该窗口:close(或使用:bdelete通过 获得的缓冲区编号bufnr('fugitiveblame'))。
function! s:ToggleBlame()
if &l:filetype ==# 'fugitiveblame'
close
else
Gblame
endif
endfunction
nnoremap gb :call <SID>ToggleBlame()<CR>
Run Code Online (Sandbox Code Playgroud)
:Gblame是一个(自定义)Ex 命令;您可以在 Vimscript 中按原样调用它;不需要:normal这里。:close如上所述,当您处于侧边栏时,:help <SID>。:noremap; 它使映射不受重新映射和递归的影响。| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |