这样的一套 ui 实现下来还是非常麻烦...
看 leaderf 的 cli.py 的代码, 看懵了 😂
1
IgniteWhite 2021-06-03 05:38:39 +08:00
不会写……介绍一下 Neovim 的浮窗现状吧。
LeaderF 除了用 vimscript,大部分用 Python 写,性能比 fzf 要好。 后面 Neovim 0.5+会着力发展 LuaJIT,参见 https://github.com/neovim/neovim/wiki/FAQ#why-embed-lua-instead-of-x 根据官方说法:Lua 会和 Neovim 深度融合,作为 C 的后备语言。LuaJIT 是最快的运行环境之一,达 Python 速度的十倍以上。可想而知,以后用 Lua 开法 Neovim 插件是原生而且快速的。 一个(几乎完全)使用 Lua 开法的 Neovim 插件 telescope: https://github.com/nvim-telescope/telescope.nvim 可以说是目前最酷炫的浮窗插件,在 Neovim core 的基础上扩展出了文件浏览,Git,LSP,集成了 Treesitter (下一代的 parser )。作者经常在油管上直播解说写代码,厉害的同志们可以去理解一下。 |
2
BBCCBB OP |
3
BBCCBB OP 等 Big old
|
4
IgniteWhite 2021-06-03 15:35:23 +08:00 via iPhone
|
6
BBCCBB OP 从 fzf 仓库的 fzf.vim 来看, 这种效果是通过 terminal 库实现的, fzf 用 golang 写的 terminal ui. 在 vim 里只是通过调用 termopen("fzf --prompt 'Line>'") 这种方式来用. 就是一个 terminal 的包装.
但还有很多库有这种效果, 怎样实现还要继续看. |
7
BBCCBB OP 1. 没有 terminal 特性之前, 应该是通过 quickfix 来实现的, 前缀占位符可以通过 input('>') 函数设置.
2. 有了 terminal 特性后, 就直接通过 terminal 实现. |
8
BBCCBB OP 第一个关于使用 quickfix 的说法是错误的 .. 擦
|
9
BBCCBB OP 按照 ctrlp 的实现方式, 应该就是 new 一个 buf, 然后给这个 buf 绑定各种快捷键和事件. 用完 close 掉.
|