Vim 逃犯:切换“:Gblame”功能
Vim Fugitive: toggling ":Gblame" function
我在 vim 还是个新手所以我希望这个问题不是太基础,但我在逃犯的文档中找不到答案..
我希望添加一个执行以下操作的切换功能:
if :Gblame buffer is open:
close buffer
else
execute "normal :Gblame<CR>"
endif
map gb :call (the above function)<CR>
我正在考虑添加一个变量,该变量根据我使用 "gb" 映射的次数在 1 或 0 之间变化。
但我真正想要的是一种检查缓冲区是否打开的方法。这可能吗?
Fugitive 插件在侧边栏责备缓冲区中设置自定义 'filetype'
(至 fugitiveblame
;通过 :setlocal filetype?
查询,或在 Vimscript 中通过 &l:filetype
特殊变量查询) .这仅在您当前位于侧边栏中时有效。为了让主 window 也能正常工作,您必须检查缓冲区名称(例如通过 bufwinnr('fugitiveblame') != -1
),然后在调用 window 之前返回 window =16=](或使用 :bdelete
和通过 bufnr('fugitiveblame')
获得的缓冲区编号)。
function! s:ToggleBlame()
if &l:filetype ==# 'fugitiveblame'
close
else
Gblame
endif
endfunction
nnoremap gb :call <SID>ToggleBlame()<CR>
备注
:Gblame
是一个(自定义)Ex 命令;你可以在 Vimscript 中按原样调用它;这里不需要:normal
。
- 关闭侧边栏只是
:close
当你在其中时,如上所述。
- 我定义了一个脚本局部函数; cp。
:help <SID>
.
- You should use
:noremap
;它使映射不受重新映射和递归的影响。
我在 vim 还是个新手所以我希望这个问题不是太基础,但我在逃犯的文档中找不到答案.. 我希望添加一个执行以下操作的切换功能:
if :Gblame buffer is open:
close buffer
else
execute "normal :Gblame<CR>"
endif
map gb :call (the above function)<CR>
我正在考虑添加一个变量,该变量根据我使用 "gb" 映射的次数在 1 或 0 之间变化。
但我真正想要的是一种检查缓冲区是否打开的方法。这可能吗?
Fugitive 插件在侧边栏责备缓冲区中设置自定义 'filetype'
(至 fugitiveblame
;通过 :setlocal filetype?
查询,或在 Vimscript 中通过 &l:filetype
特殊变量查询) .这仅在您当前位于侧边栏中时有效。为了让主 window 也能正常工作,您必须检查缓冲区名称(例如通过 bufwinnr('fugitiveblame') != -1
),然后在调用 window 之前返回 window =16=](或使用 :bdelete
和通过 bufnr('fugitiveblame')
获得的缓冲区编号)。
function! s:ToggleBlame()
if &l:filetype ==# 'fugitiveblame'
close
else
Gblame
endif
endfunction
nnoremap gb :call <SID>ToggleBlame()<CR>
备注
:Gblame
是一个(自定义)Ex 命令;你可以在 Vimscript 中按原样调用它;这里不需要:normal
。- 关闭侧边栏只是
:close
当你在其中时,如上所述。 - 我定义了一个脚本局部函数; cp。
:help <SID>
. - You should use
:noremap
;它使映射不受重新映射和递归的影响。