我注意到的几个变化:
drop python2 支持。
remote TUI 初步支持。
filetype.lua
global statusline。
augroup、autocmd、user command 的 lua 接口。
新增 Recording、RecordingLeave、DirChangedPre 等自动事件。
新增 vim.keymap, nvim(_buf)_set_keymap 可添加描述。
lsp、treesitter 的改进。
uv.thread 异步线程支持。
precompile embeded lua to bytecode
vim.diff,粘贴的异步支持(更希望有 pum 的)
…
还有啥应该注意到的?
对了,Neovim 上游依赖 libvterm 有 bug 没解决,最新版编译不了,目前仍在用 0.1.4 版本。
3 个赞
neovim的版本演进真快,跟不上了,目前也没用到neovim强相关的特性,准备回到vim
关注的人只会觉得演进太慢了。。。remote TUI 搞了几年还没搞完。
chenyidao110:
也没用到neovim强相关的特性
怎么会呢?比如 copilot.vim 插件需要 Neovim 的 virtual text 特性支持,vim 上要用很费劲。还有其它一堆特性,最近新出的插件也是优先支持 Neovim 的 。GitHub - rockerBOO/awesome-neovim: Collections of awesome neovim plugins.
2 个赞
remote tui是啥?类似vscode的remote?
neovim:master
← hlpr98:praveen_gsoc_2019
已打开 04:44PM - 27 May 19 UTC
The aim of the project can be summarized as:
Whenever the user starts Nvim as … `nvim --connect {addr}` the Nvim will connect to the Nvim server listening to `{addr}`, here `{addr}` can either be a `pipe` address (`a.b.c.d`) or a `tcp` address (`a.b.c.d:port`). The Nvim client instance would send input to the remote Nvim server and reflects the UI of the remote Nvim server. So the Nvim client acts like any other external GUI.
The final goal of this project is to make `TUI` and `nvim server` to run as separate processes and communicate with each other over `RPC` channel. This also results in removal of `ui_bridge` completely.
**TODO**
- [x] support for `--connect`
- [x] TUI to send `nvim_attach` call through `rpc channel`
- [x] Send user inputs to Nvim server through the rpc channel
- [x] Handlers for `redraw` events from Nvim server
- [x] generate methods to handle each individual ui events
- [x] make/generate dictionary to store the ui event handler methods
- [x] make the `handle_ui_redraw`
- [x] convert `grid_line` to `raw_line` before feeding it into `tui`
- [x] handle client resizing
- [x] client exits with server
- [x] check conversion of grid_line to raw_line
- [x] Add functional-tests for `--connect` feature.
- [ ] Removal of `ui_bridge` to make TUI a `rpc client`
- [x] TUI client (when started with `--connect`) works without `ui_bridge`
- [x] correcting the anomalies seen
- [x] `Abort trap 6`: when no server is present
- [x] `:set termguicolors` makes blank part of screen white --checked only on iTerm)
- [ ] Making builtin TUI work without `ui_bridge`
- [x] Starting `nvim --embed` job from TUI and connecting to it as a client
- [x] Passthrough arguments to `nvim --embed` instance
- [x] Make sure application stops even if the `--embed` is killed
- [x] Add `nvim_read_stdin()` API to support reading from a non-tty `stdin`
- [x] Allow GUI-client to let server know when focus is gained
- [x] Allow setting of the options: `term_name`, `term_colors` and `term_background`
- [x] Get the exit code of `server` at the `client`
- [x] Get bracketed paste for large inputs working
- [x] Get `echo xxx | nvim` to work (now `echo xxx | nvim -` works)
- [x] Get `suspend`-`restart` of TUI to work
The final goal of this project is to make TUI
and nvim server
to run as separate processes and communicate with each other over RPC
channel. This also results in removal of ui_bridge
completely.
这个版本的实现还仅是类似 vim 的 client-server,很早就有 nvr 能做到。要实现以上引用的目标还有很多要做。
不支持。协作方面单机用 tmate、wemux,共用 ssh 主机是老技能了。
相对 vscode 的主要劣势是不支持多人同时编辑,其它基本 ok。
1 个赞
正常。个人需求不一样,好些人只用 vim/nvim 编辑基本的配置文件。
录了个 tmate 的简单演示,IP 地址打个码发上来。
左边是本地,右边是只读 ssh session。
3 个赞
嗯,确实,我用coc.nvim,基本上没什么自定义内容
内置 lsp 客户端主要是轻便,自定义强。到哪找内存不到 80 M 功能齐全的 lsp 客户端呢。
[-]─82399 wezterm-gui 24 ashfinal 122M ⣀⣀⣀⣀⣀ 1.2 │
│ [-]─82411 zsh (-zsh) 1 ashfinal 8.4M ⣀⣀⣀⣀⣀ 0.0 │
│ │ [-]─82499 nvim 6 ashfinal 30M ⣀⣀⣀⣀⣀ 0.4 │
│ │ │ └─ 82562 lua-language-se (lua-language-server) 6 ashfinal 46M ⡀⣀⣀⣀⡀ 0.0 │
│ [-]─82604 zsh (-zsh) 1 ashfinal 8.2M ⣀⣀⣀⣀⣀ 0.0 │
│ │ └─ 82675 btop 3 ashfinal 5.8M ⡀⣀⣀⣀⢀ 0.4 │
│ └─ 82747 zsh (-zsh) 1 ashfinal 8.1M ⣀⣀⣀⣀⣀ 0.0 │
最近几天的体验是:不管用什么编辑器,你得试试 copilot 插件。完全没有之前担心的网络卡顿,猜测很准。
3 个赞
意外解决了一个困扰许久的小问题。wezterm 的边角字形很细,多少看上去有些奇怪。
设置 custom_block_glyphs = false
就可以了 。
作者文档中提到默认 true 是为了规避 freetype 的一个 bug。不过多数 nerd 字体并不需要。
Alacritty、kitty 也不需要这个。
有点没太明白tui remote的用处是?我理解现在直接用tmux分屏然后不是随便ssh不同的server么?
挺感兴趣的,emacs 有合适的copilot 方案吗
与 ssh 不相同。ssh 连接的 server 是不同的 nvim instance,而 tui remote 是同一个 instance。
后者显然信息共享协作更方便,用户体验更协调统一。允许 nvim 以 headless 的形式运行,允许与内嵌 terminal 更深的融合,允许 rust、swift、python、javascript 等 10 多种语言以异步或队列的形式与 nvim instance 交互,允许将 nvim editor view 的一部分同步绘制到 GUI 客户端其它需要的地方,editor 文字的改变在其它地方以 button、slider、switch、图像甚至 3D 的形式呈现,而 GUI 控件的变化也能同步回 editor view … …等等。
个人有限的理解:这个是前后端分离的继续,是实现 nvim 嵌入 everywhere 愿景的一步。