gpt4 book ai didi

windows - 如何移动到某个选项卡上某个窗口中存在的非隐藏缓冲区?

转载 作者:可可西里 更新时间:2023-11-01 13:55:05 25 4
gpt4 key购买 nike

我在 Vim 中工作,在各种选项卡的各种窗口中有很多打开的缓冲区。我知道将现有缓冲区之一加载到当前窗口很简单。但是,我的一些大文件缓冲区使用折叠表达式,在将它们加载到新窗口时会导致几秒钟的延迟。另一方面,如果它们已经在标签页的窗口中打开,我只需要跳转到那个标签页和那个窗口。

我知道没有直接执行此操作的命令。或者有吗?

要找到具有所需缓冲区的窗口,我可以编写一个函数来执行此操作:

  1. 对于每个标签
  2. 针对每个选项卡上的每个窗口
  3. 检查每个窗口是否加载了我想要的缓冲区
  4. 将光标移动到找到的窗口,如果没有找到,则在新选项卡的窗口中打开缓冲区

有人写过吗?还是我错过了获得我想要的东西的更简单方法?

更新:'switchbuf' 的答案正是我要找的,但我仍然可能最终使用自定义函数,因为 (1) 我不理解 'newtab' 选项的行为,因为窗口仍在拆分, (2) 我的函数可以搜索卸载的文件:

function! Sbuf(filename)
let myvar = ''
tabdo let myvar = bufwinnr(a:filename) > 0 ? tabpagenr()
\ . ' ' . bufwinnr(a:filename) : myvar
if myvar > ''
silent execute split(myvar)[0] . "tabn"
silent execute split(myvar)[1] . "wincmd w"
else
execute 'tab drop ' . a:filename
endif
endfunction

最佳答案

只需设置 switchbuf选项:

:set switchbuf=useopen,usetab
:sbuf [filename]

如果您不想要 switchbuf选项一直打开,那么您将需要编写一个函数来更改然后重置 switchbuf选项。

function MySwitchBuf(filename)
" remember current value of switchbuf
let l:old_switchbuf = &switchbuf
try
" change switchbuf so other windows and tabs are used
set switchbuf=useopen,usetab
execute 'sbuf' a:filename
finally
" restore old value of switchbuf
let &switchbuf = l:old_switchbuf
endtry
endfunction

关于windows - 如何移动到某个选项卡上某个窗口中存在的非隐藏缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com