能否用nvim --remote替代nvr?临时文件兼容问题求助
用Neovim内置特性替代nvr解决嵌套实例问题
原nvr配置(正常运行)
之前使用neovim-remote/nvr避免集成终端中出现嵌套Neovim实例,对应的fish配置如下:
# config.fish if set -q NVIM # 用neovim-remote避免嵌套neovim实例 set -gx EDITOR "nvr --remote-wait" alias nvim nvr else set -gx EDITOR nvim end set -gx VISUAL $EDITOR
其中--remote-wait参数是关键,它会阻塞进程直到对应缓冲区被删除,确保依赖读取临时文件的程序(如git提交、通过Alt-E编辑fish命令行)能正常获取编辑后的内容。
替换内置--remote后的异常问题
为消除外部依赖,改用Neovim内置的--remote特性,配置修改为:
# config.fish if set -q NVIM # 用nvim --remote避免嵌套neovim实例 set -gx EDITOR "nvim --server $NVIM --remote" alias nvim $EDITOR else set -gx EDITOR nvim end set -gx VISUAL $EDITOR
但该配置无法处理临时文件场景:git提交会提示提交信息为空并终止,fish命令行编辑后内容未更新。问题根源在于nvim --remote不会阻塞进程,而nvr --remote-wait会等待缓冲区删除后才退出,确保依赖程序能读取到更新后的临时文件。
解决方法:改用内置--remote-wait参数
Neovim内置提供了与nvr --remote-wait等效的--remote-wait参数,只需将配置中的--remote替换为--remote-wait即可:
# config.fish if set -q NVIM # 用nvim --remote-wait避免嵌套neovim实例 set -gx EDITOR "nvim --server $NVIM --remote-wait" alias nvim $EDITOR else set -gx EDITOR nvim end set -gx VISUAL $EDITOR
该参数会让Neovim客户端保持阻塞,直到远程服务器中的目标缓冲区被删除,完全复刻nvr --remote-wait的行为,可正常处理git提交、fish命令行编辑等依赖临时文件的场景。
内容的提问来源于stack exchange,提问作者itxp
相关产品推荐
相关产品推荐

