ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Neovim 如何用 --remote 把文件直接打开到已运行的实例中?

Neovim 如何用 --remote 把文件直接打开到已运行的实例中? Neovim 如何用 --remote 把文件直接打开到已运行的实例中【免费下载链接】neovimVim-fork focused on extensibility and usability项目地址: https://gitcode.com/GitHub_Trending/ne/neovim当你已经在一个 Neovim 实例里工作比如带着 LSP、terminal 或未保存的修改又不想再开一个独立窗口而是希望用命令行直接把某个文件送进那个正在运行的实例——这就是 Neovim 的 client-server 机制要解决的场景。通过--remote系列参数命令行里的文件会经 RPC 发给已运行的 Nvim 服务器由服务器执行:drop打开文件文档参考 runtime/doc/remote.txt。确认服务器已就绪Nvim 在启动流程的第 4 步会启动服务器除非已给定--listen并设置v:servername也就是说普通启动的 Nvim 默认就带有 RPC 服务器见 runtime/doc/starting.txt 的 Initialization 一节。如果要用一个自己控制的地址可以用--listen {addr}启动nvim --listen ~/.cache/nvim/server.pipe--listen会在管道或 TCP 地址上启动 RPC 服务器并把主监听地址v:servername设置为该地址|serverstart()|等价。{addr}由你自行指定。启动后可以在实例内部查看当前地址v:servername是主监听地址即serverlist()返回的第一项通常是启动时创建的命名管道或--listen给定的地址见 runtime/doc/vvars.txt 的*v:servername*一节。把它的值取出来作为下一条命令里--server的参数。另外Nvim 从 0.11 起对无效地址会直接启动失败而不是像以前那样静默跳过见 runtime/doc/news-0.11.txt所以--listen给出的地址格式不合法会立刻暴露出来。用 --remote 把文件打开到远程实例文档给出的标准用法来自 runtime/doc/remote.txt 的 Examples 一节nvim --server ~/.cache/nvim/server.pipe --remote file.txt在~/.cache/nvim/server.pipe监听的 Nvim 服务器中编辑file.txt。注意两个顺序与语义上的坑--server必须放在--remote之前。文档明确说下面这种写法不成立--remote之后的所有参数都会被当作文件名nvim --remote --server ~/.cache/nvim/server.pipe file.txt--remote会吃掉其后整个命令行剩余参数一律视为文件列表不能在里面放任何选项。执行后发生的事情--remote会用剩余命令行构造一条:drop命令发送给服务器。:drop的语义是见 runtime/doc/windows.txt 的*:drop*一节文件已经在某个窗口打开——切换到那个窗口没有打开——在当前窗口编辑若当前缓冲区无法放弃|abandon|则先分屏参数列表会像:next一样被设置。同时文档说明远程 Vim 会被 raise前置。如果不想让它抢占前台文档给出的替代写法是用--remote-send发一条 Ex 命令nvim --remote-send C-\C-N:n filenameCR{filename}替换为你要打开的文件。可用的变体与替代命令remote.txt 列出的参数及含义如下按需选用参数含义--remote [{cmd}] {file} ...在远程实例打开文件列表没有服务器时会在本地执行--remote-silent同上但服务器不存在、文件在本地打开时不给出提示--remote-tab/--remote-tab-silent同上但每个文件在新 tabpage 打开--remote-send {keys}向服务器发送按键后退出按键不经过映射识别CR等特殊键名--remote-expr {expr}在服务器中求值表达式把结果打印到 stdout--remote-ui在当前终端显示服务器 UI键鼠输入转发到服务器--server {addr}指定要连接的命名管道或 socket 地址文档里还给了一个用--remote-send让远程服务器保存全部文件并退出的例子nvim --server ~/.cache/nvim/server.pipe --remote-send C-\C-N:wqaCR已知限制{cmd}初始化命令形式--remote虽在签名里带[{cmd}]但文档标注Vim 允许一条 Ex 命令 {cmd}Nvim 尚不支持。所有--remote-wait变体--remote-wait、--remote-wait-silent、--remote-tab-wait、--remote-tab-wait-silent在 Nvim 中尚未实现对应错误码E5600*clientserver-missing*。不能用这种方式编辑 stdin|-|。--remote之后的位置不能放任何非文件参数否则会被当作文件名。结果判断没有统一的日志输出按行为判断即可文件出现在远程实例中已打开则切到对应窗口未打开则在当前窗口或新分屏中打开参数列表被更新且命令行进程本身立刻退出。若本地没有可连的服务器--remote会退化为在本地打开文件用--remote-silent可以抑制这条提示。【免费下载链接】neovimVim-fork focused on extensibility and usability项目地址: https://gitcode.com/GitHub_Trending/ne/neovim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表