В энергии можно выполнить команду оболочки в командном режиме с и !
вначале. Таким образом в Вашем случае можно сделать что-то вроде этого: :!chmod +x %
. %
текущий файл в Vim.
Я надеюсь, что это решает Вашу проблему.
Вы должны знать, что "задержка" может включать в себя буферизацию stdio системы, достаточную для "эффективной" записи файловой системы. Дополнительную информацию см. в man 3 setbuf
. Буферизация выполняется на основе FILE *
, поэтому stderr
обычно не буферизируется, в то время как stdout
обычно буферизируется. Поэтому вывод на stderr
и вывод на stdout
в конечном итоге оказывается неупорядоченным, когда они оба направлены в один и тот же файл, как это показано в вашем примере.
Если у вас есть экземпляр FILE *
, который ваша программа открыла, если только вы не сделали setbuf()
или не выполняли регулярные вызовы 'fflush()`, то "латентность" предсказать невозможно.
Я закончил тем, что поместил много вызовов fflush()
в программы, которые приводят к аварийному завершению работы, так что вывод stdout фактически превращает его в лог-файл перед аварийным завершением работы. Дешево, но грязно.