资讯专栏INFORMATION COLUMN

使用 neovim 的浮动窗口让你再次爱上 fzf

msup / 2349人阅读

摘要:自从的浮动窗口被合到以后,很多插件都利用了这个特性实现了很多很酷的功能,比如,另外和也利用了这一特性。首先是个配置项让输入上方,搜索列表在下方打开的方式选择还有个函数指定如何打开浮动窗口设置浮动窗口打开的位置,大小等。

fzf 是一个非常高效实用且美观的命令行工具,并且配置有对应的 vim 插件 fzf.vim, 相信很多人都用过。这里就不在赘述,如果你还没有用过,很推荐一试。

自从 neovim 的浮动窗口 PR https://github.com/neovim/neovim/pull/6619 被合到 master 以后,很多插件都利用了这个特性实现了很多很酷的功能,比如 coc.nvim,另外 vim-which-key 和 vista.vim 也利用了这一特性 。

浮动窗口的一个很大的特点就是不会像之前 split 的方式扰动你的窗口布局,晃动你的视线,而 fzf 也可以利用这一特性进一步提升体验!

比如下面这个效果图,我们可以让 fzf 在中间进行显示,有点类似于 IDEA 的搜索窗口:

要实现上面的效果,需要配置 3 个地方。首先是 2 个配置项:

    " 让输入上方,搜索列表在下方
    let $FZF_DEFAULT_OPTS = "--layout=reverse"

    " 打开 fzf 的方式选择 floating window
    let g:fzf_layout = { "window": "call OpenFloatingWin()" }

还有 1 个函数指定如何打开浮动窗口:

function! OpenFloatingWin()
  let height = &lines - 3
  let width = float2nr(&columns - (&columns * 2 / 10))
  let col = float2nr((&columns - width) / 2)

  " 设置浮动窗口打开的位置,大小等。
  " 这里的大小配置可能不是那么的 flexible 有继续改进的空间
  let opts = {
         "relative": "editor",
         "row": height * 0.3,
         "col": col + 30,
         "width": width * 2 / 3,
         "height": height / 2
         }

  let buf = nvim_create_buf(v:false, v:true)
  let win = nvim_open_win(buf, v:true, opts)

  " 设置浮动窗口高亮
  call setwinvar(win, "&winhl", "Normal:Pmenu")

  setlocal
         buftype=nofile
         nobuflisted
         bufhidden=hide
         nonumber
         norelativenumber
         signcolumn=no
endfunction

关于浮动窗口的更多信息,可以 :help api-floatwin.

另外,如果你的浮动窗口设置高亮无效,看看是否有设置 g:fzf_colors,这可能会重置浮动窗口的高亮,有浮动窗口的话就不用设置了。

因为还没有 release, 目前要体验这个特性的话需要自己从 neovim master 编译,macOS 用户直接 安装 HEAD 版本的 neovim 就行了。安装好 neovim,然后进行如上配置应该就可以了,对于 https://github.com/liuchengxu/space-vim 用户直接升级 space-vim 即可。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25092.html

相关文章

  • VIM与模糊搜索神器FZF集成用法 - 从简单到高级

    摘要:比如下表是它可用的所有选项是一个函数,用来创建自己的自动补全功能。如果第一个参数是一个命令字符或一个那么它会被用作对于高级用户,可以传入一个字典选项。希望大家可以结合创造出更多的使用方法。 FZF and VIM 前言 fzf本身并不是一个vim 插件,本来作者只提供了基本的wrapper函数(比如fzf#run). 但后来作者发现很多人并不熟悉VIMScript, 所以就创建一个默认...

    OldPanda 评论0 收藏0
  • VIM与模糊搜索神器FZF集成用法 - 从简单到高级

    摘要:比如下表是它可用的所有选项是一个函数,用来创建自己的自动补全功能。如果第一个参数是一个命令字符或一个那么它会被用作对于高级用户,可以传入一个字典选项。希望大家可以结合创造出更多的使用方法。 FZF and VIM 前言 fzf本身并不是一个vim 插件,本来作者只提供了基本的wrapper函数(比如fzf#run). 但后来作者发现很多人并不熟悉VIMScript, 所以就创建一个默认...

    ?xiaoxiao, 评论0 收藏0
  • SpaceVim - 一个模块化加载vim配置

    摘要:是一个社区驱动的模块化配置集合,其中包含了多种功能模块,并且针对做了功能优化。有多种功能模块可供选择,用户只需要选择需要的模块,就可以配置出一个适合自己的开发环境。 SpaceVim 中文手册 showImg(https://segmentfault.com/img/remote/1460000007968382);showImg(https://segmentfault.com/im...

    megatron 评论0 收藏0
  • Vim模糊文件搜索fzf

    摘要:参考官网参考使用全指南安装直接在插件管理器中其中会把命令行软件安装到本机的目录中,然后在中就可以直接通过执行来使用命令搜索文件了。使用最简单的话,直接在中输入命令就会弹出当前目录下的所有文件列表,然后可以各种模糊搜索,按和上下选择。 不同于Command-T只能用于VIM,大名鼎鼎的fzf是命令行工具,而且只在VIM中使用的话也不需要手动去编译任何依赖,直接用插件管理器安装即可立马使用...

    lavor 评论0 收藏0
  • 如何让 Vim 美观又实用(1)

    摘要:比如,由于的一些命令,比如默认是在当前目录下进行,实际就变成了在项目根目录下搜索。如果使用,那么也是必不可少。比如一个比较实用的就是用查找当前光标下的词。今天就先讲这么多了,下一篇可能更多讲讲如何配置更美观的一些小细节。 我学习计算机不久就开始用了 vim,到现在也三四年了,且算是对 vim 有了一定的控制力。在这里分享一下使用过程中的一些心路历程,说实话,要留意的小地方有很多,但是由...

    wthee 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<