如何在终端直接启动nvim并显示当前带色终端内容?
终端内实现类Kitty scrollback_pager功能的方案
问题说明
Kitty终端的scrollback_pager功能有如下最简配置:
scrollback_pager bash -c "nvim 64<&0 0</dev/null -c 'terminal sed </dev/fd/64 -e "" '"
该配置通过将终端回滚内容重定向至/dev/fd/64,再经sed传入nvim终端模式,可正常显示带终端配色的回滚内容。但切换至无原生scrollback_pager功能的Wezterm后,直接在终端运行上述命令会失效(甚至在Kitty终端内直接运行也无法正常工作)。现需在终端中直接实现等效功能,同时满足以下要求:
- 不生成任何临时文件
- 不使用AnsiEsc等nvim插件(此类插件会强制使用nvim自身配色,而非终端配色)
- 不依赖系统剪贴板(避免覆盖原有剪贴板内容)
解决方法
针对Wezterm终端
利用Wezterm自带的scrollback capture命令捕获回滚内容,通过管道传递给处理脚本:
wezterm scrollback capture | bash -c 'nvim 64<&0 0</dev/null -c "terminal sed </dev/fd/64"'
针对Kitty终端(直接在终端运行场景)
使用Kitty的scrollback get命令捕获回滚内容,同样通过管道传递:
kitty scrollback get | bash -c 'nvim 64<&0 0</dev/null -c "terminal sed </dev/fd/64"'
原理说明
- 终端自带的scrollback捕获命令(
wezterm scrollback capture/kitty scrollback get)直接将回滚内容输出至标准输出,无需临时文件或剪贴板 - 通过文件描述符64承接标准输入的内容,在nvim的终端模式下用sed读取该描述符内容,保留终端原生配色,无需额外插件
内容的提问来源于stack exchange,提问作者aj3423
相关产品推荐
相关产品推荐

