我面临的问题是我已经映射了一些键和鼠标事件,以便在编辑文件时在 vim 中进行搜索。但是如果quickfix 缓冲区,这些映射会影响功能。
我想知道是否可以根据使用它们的缓冲区来映射键。
EDIT- 我正在为这个问题添加更多信息让我们考虑一个场景。我想映射<C-F4>以关闭缓冲区/窗口。现在这种行为可能取决于很多事情。
如果我正在编辑缓冲区,它应该关闭该缓冲区而不更改窗口的布局。我正在为此使用buffkil插件。
它不取决于文件的扩展名,而是取决于缓冲区的类型。我在 vim 文档中看到有未列出和列出的缓冲区。所以如果它被列出缓冲区,它应该使用 bufkill 命令关闭。
如果它不是列出的缓冲区,则应使用<c-w>c命令关闭缓冲区并更改窗口布局。
我是编写 vim 函数/脚本的新手,有人能帮我开始这个吗
function KillBuffer()
if &buflisted
" bufkill command here
else
execute "normal! \<C-w>c"
endif
endfunction
noremap <C-F4> :call KillBuffer()<CR>
Run Code Online (Sandbox Code Playgroud)
把它放在你的 .vimrc 或者,如果你想将 quickfix 窗口作为未列出的缓冲区处理(在我的 Vim 中它被列出):
function KillBuffer()
if &buflisted && !&filetype=="qf"
" bufkill command here
else
execute "normal! \<C-w>c"
endif
endfunction
noremap <C-F4> :call KillBuffer()<CR>
Run Code Online (Sandbox Code Playgroud)
根据手册,您可以在上述脚本中替换execute "normal! \<C-w>c"为更简单close!的。