Скажем, у меня есть более одного буфера, открытого в другом окне.

Как я могу выполнить внешнюю команду с определенным буфером в качестве аргумента?

Скажи, что я хочу выполнить :!g++ "buffer no"

Как это сделать?

1 ответ1

2

Ваша внешняя команда не сможет ничего сделать с номером буфера, вам нужно будет передать ей имя файла в качестве аргумента. Вы можете использовать bufname() чтобы получить имя буфера определенного буфера:

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

Смотрите :help bufname() .

Обратите внимание, что из-за разных вещей (главным образом, вашего path но также и параметров вашего компилятора) имя буфера может быть, а может и не совпадать с тем, что вы хотите. Вы можете использовать fnamemodify() чтобы удалить части своего пути или превратить относительный путь в абсолютный или что угодно:

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

Смотрите :help fnamemodify() и связанные с ним :help filename-modifiers .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .