我打开了两个终端窗口,比如 A 和 B。
我在终端 A 中打开了 vim。我想转到终端 B 并获取当前在终端 A 中的 vim 中的缓冲区列表。
最佳答案
你需要知道另一个 vim session 的服务器名(它需要你的 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)')")
关于linux - 在终端 bash 中列出 vim 中打开的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46122821/