我有一个需要切换到特定缓冲区的 vimscript。该缓冲区将由完整路径、部分路径或仅其名称指定。
例如:
我在目录 /home/user/code
中,我打开了 3 个 vim 缓冲区 foo.py
src/foo.py
和 src/bar.py
。
如果脚本被告知切换到缓冲区
/home/user/code/foo.py
,它将切换到缓冲区foo.py
。如果它被告知切换到
user/code/src/foo.py
它会切换到缓冲区src/foo.py
如果它被告知切换到
foo.py
它会切换到缓冲区foo.py
如果它被告知切换到
bar.py
,它将切换到缓冲区src/bar.py
我能看到的最简单的解决方案是以某种方式获取存储在变量中的缓冲区列表并使用试错法。
如果解决方案是跨平台的就好了,但它至少需要在 Linux 上运行。
最佳答案
bufname()
/bufnr()
函数可以通过部分文件名查找加载的缓冲区。您可以通过附加 $
将匹配锚定到末尾,如下所示:
echo bufnr('/src/foo.py$')
关于path - 脚本 : switch to buffer by filename path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576691/