假设我在不同的窗口中打开了多个缓冲区。
如何使用特定缓冲区作为参数来执行外部命令?
说我想执行:!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
。