使用 neovim 的浮动窗口让你再次爱上 fzf
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 windowlet g:fzf_layout = { 'window': 'call OpenFloatingWin()' }
还有 1 个函数指定如何打开浮动窗口:
function! OpenFloatingWin()let height = &lines - 3let 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 即可。
使用 neovim 的浮动窗口让你再次爱上 fzf相关推荐
- h5 右下角浮动按钮_【js】右下角浮动窗口
右下角浮动窗口 #msg_win{position:absolute;right:0px;overflow:hidden;z-index:99;border:1px solid #c00;backgr ...
- 浮动窗口代码(带关闭按钮+全屏漂浮)
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 类似flashget的浮动窗口的实现
作者:苍竹先生下载源代码一.简介:象flashget.迅雷.BT等都有浮动窗口,能详细地显示下载的详细信息,该类型的窗口有一下几个特点:1.窗口无标题栏,窗口的大小跟位图一样大.2.前端显示.3.在客 ...
- html全局浮窗,Html 实现浮动窗口
今天在写一个html代码时,需要用到浮动窗口,通知信息,网站找了一下,代码如下 带关闭按钮的浮动窗口代码(全屏漂浮) #fdck {border:1px solid #c0c0c0;margin:0 ...
- 【Qt教程】1.9 - Qt5菜单栏、工具栏、状态栏、核心窗口、浮动窗口、QMainWindow
1. 窗口应用布局样式及组成 PC端软件,最基本的一个窗口应用布局样式,如下: 大体可分为菜单栏.工具栏.状态栏.核心窗口.浮动窗口,使用时按需相互组合. 2. Qt中调用这些控件 1)新建一个工程: ...
- 7、菜单栏、工具栏、状态栏、浮动窗口、TextEdit
新建项目,基类选择QMainWindow,不勾选ui mainwindow.cpp代码: #include "mainwindow.h" #include <QMenu ...
- qt android 浮动窗口,QT+ 状态栏+核心控件+浮动窗口
#include "mainwindow.h" #include #include #include #include //浮动窗口所需的头文件 MainWindow::MainW ...
- Qt开源库-顶级浮动窗口系统-Advanced-Docking-System【01】
一.序言 顶级浮动窗口是大型软件中的常备组件,例如Visual Studio Code软件界面: 在上图中,将软件界面划分为不同的功能区,每个功能区负责显示软件的一部分功能.在上图中有项目工程管理窗口 ...
- 如臂使指——Dojo框架下让浮动窗口跟随鼠标而动
介绍 在web应用的很多场合,需要让浮动窗口跟随鼠标而动.比如这儿举的一个例子:当用户选中网页上一段内容时,弹出工具条让用户进行标记.可以想象一下,有一个在线看书的应用,支持读者在阅读的时候随时做笔记 ...
最新文章
- 云供应商安全评估:小心落入陷阱
- 像@Transactional一样利用注解自定义aop切片
- 网站部署后Parser Error Message: Could not load type 的解决方案
- 数据库-MySQL-JDBC框架
- Android-JNI开发系列《十二》总结JNI知识体系
- TSPL学习笔记(2):过程和变量绑定
- github客户端从gitLab下拉取代码
- 如何用计算机测量图片景深,用手机也能测景深 DOF Master景深测量软件
- PLSQL 官方下载及安装
- 如何由普通用户权限获取root权限
- 常微分方程I ODE的例子3 生态学模型:Malthus增长模型、Lotka-Volterra模型
- java模仿滴滴的程序_小程序模仿滴滴打车
- 高德地图怎么画圈_高德地图 Javascript API 入门(二)
- 如何爬取商品详情页中的信息
- 魔兽DOTA高玩的自述
- 解决sublime无法下载插件问题
- 【OR】YALMIP Sum of squares(SOS)规划
- 时间序列_seasonal_decompose使用移动平均线进行季节性分解
- YouTube 十岁了,这十年里视频网站改变了什么?
- 在html文件中 url是统一资源定位器,HTML URL(统一资源定位器)