如何在 select 没有任何结果的情况下关闭 FZF VIM

How to close FZF without select any result in VIM

我使用 fzf.vim 在我的 neovim 项目中快速查找文件。

有时因为我找不到我要找的东西或者因为我忘记在打开新文件之前做某事,我需要取消并关闭弹出窗口 window 而不选择任何结果.

目前,我按 <Esc> 进入正常模式,然后按 :q,但理想情况下,将其映射到组合键(例如 <C-x>

如何映射仅针对 FZF window 的键绑定?或者是否有任何组合键已经关闭弹出窗口 window 而无需任何进一步操作?

提前致谢

To vim 我仍然对这样的解决方案感到好奇,但在我的 zsh 中我有这个功能:

# source:
function vif() {
    local fname
    fname=$(fzf) || return
    vim "$fname"
}

如果 $fname 从 fzf 接收到文件名 zsh 运行下一行,即 vim 调用 $fname,否则 zsh 只是 returns 就好像什么都没有完成。

我没有找到合适的方法,但是我找到了一个解决方法,可能适用于遇到相同问题的其他人。

使用变量 g:fzf_action 我们可以将键映射到 fzf 中的操作。这样,我们就可以编写命令,fzf 会将选择的路径附加到命令中。 在这种情况下最重要的是作为副作用它会关闭 window.

对我有用的解决方案是将键映射到命令 silent exec "!echo"

!echo 只会在命令行中打印选择。由于命令是静默执行的,结果是只有 window 被关闭。

不确定此解决方案是否会产生一些副作用,但是,到目前为止一切似乎都正常。

这是我的按键映射:

let g:fzf_action = {
  \ 'ctrl-x': 'silent exec "!echo"',
  \ 'ctrl-h': 'split',
  \ 'ctrl-v': 'vsplit' }

此解决方案似乎默认有效:https://www.reddit.com/r/neovim/comments/4fxsdq/fzfvim_terminal_integration_questions/

简述:

ESC , CTRL-C , CTRL-G and CTRL-Q close fzf by default, no need to go to normal mode and delete the buffer. You can even customize the key bindings with --bind option of fzf; for example, :FZF --bind ctrl-p:abort or you can put it in your $FZF_DEFAULT_OPTS .