【发布时间】:2017-09-08 18:46:11
【问题描述】:
我打开了两个终端窗口,分别是 A 和 B。
我在终端 A 中打开了 vim。我想去终端 B 并获取终端 A 中当前 vim 中的缓冲区列表。
【问题讨论】:
我打开了两个终端窗口,分别是 A 和 B。
我在终端 A 中打开了 vim。我想去终端 B 并获取终端 A 中当前 vim 中的缓冲区列表。
【问题讨论】:
您需要知道另一个 vim 会话的服务器名称(它需要使用正确的选项编译您的 vim 风格),从那里您应该能够询问您想要的任何内容。
要了解每个实例中的服务器名称,请输入:echo v:servername。你也可以通过:echo serverlist()获取所有vim服务器的列表。
当我读到:h x11-clientserver 时,正如你所说的终端,这意味着你需要使用--servername 选项显式运行vim——我总是尽可能使用gvim,所以我不确定了解用例中的每一个细节。这意味着,您必须知道其他服务器名称。
假设您在终端 B 中使用 $> vim --servername=termB whateverotheroptions 启动了 vim
因为打开的缓冲区列表(不是窗口)可以通过
获得:echo filter(map(range(1, bufnr('$')), 'bufname(v:val)'), '!empty(v:val)')
从终端 A 中的 Vim,您可以执行:
:echo remote_expr('termB', "filter(map(range(1, bufnr('$')), 'bufname(v:val)'), '!empty(v:val)')")
【讨论】: