vimscript:按文件名路径切换到缓冲区

Sud*_*ash 2 vim filenames buffer path

我有一个需要切换到特定缓冲区的vimscript.该缓冲区将由完整路径,部分路径或其名称指定.

例如:

我在目录中/home/user/code,我有3个vim缓冲区打开foo.py src/foo.pysrc/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上运行.

Ing*_*kat 6

bufname()/ bufnr()功能可以由部分文件名查找加载缓冲器.您可以通过附加a来将匹配锚定到最后$,如下所示:

echo bufnr('/src/foo.py$')
Run Code Online (Sandbox Code Playgroud)