Скажем, у меня есть более одного буфера, открытого в другом окне.
Как я могу выполнить внешнюю команду с определенным буфером в качестве аргумента?
Скажи, что я хочу выполнить :!g++ "buffer no"
Как это сделать?
Ваша внешняя команда не сможет ничего сделать с номером буфера, вам нужно будет передать ей имя файла в качестве аргумента. Вы можете использовать bufname()
чтобы получить имя буфера определенного буфера:
:execute "!g++ " . bufname(2)
Смотрите :help bufname()
.
Обратите внимание, что из-за разных вещей (главным образом, вашего path
но также и параметров вашего компилятора) имя буфера может быть, а может и не совпадать с тем, что вы хотите. Вы можете использовать fnamemodify()
чтобы удалить части своего пути или превратить относительный путь в абсолютный или что угодно:
:execute "!g++ " . fnamemodify(bufname(2), ':p:h')
Смотрите :help fnamemodify()
и связанные с ним :help filename-modifiers
.