在 vim 中使用特定缓冲区执行外部

在 vim 中使用特定缓冲区执行外部

假设我在不同的窗口中打开了多个缓冲区。

如何使用特定缓冲区作为参数来执行外部命令?

说我想执行:!g++ "buffer no"

如何做?

答案1

您的外部命令无法对缓冲区编号执行任何操作,您需要将文件名作为参数传递给它。您可以使用它bufname()来获取特定缓冲区的缓冲区名称:

:execute "!g++ " . bufname(2)

:help bufname()

请注意,由于各种因素(path主要是您的选项,还有您的编译器选项),缓冲区名称可能完全符合您的要求,也可能不完全符合您的要求。您可以使用fnamemodify()删除其路径的部分内容,或将相对路径转换为绝对路径,或者其他方式:

:execute "!g++ " . fnamemodify(bufname(2), ':p:h')

查看:help fnamemodify()并链接:help filename-modifiers

相关内容