Каков наилучший (переносимый и быстрый) способ чтения вывода команды оболочки в Vim? Этот вывод может быть двоичным и, следовательно, содержать нули и (не) иметь завершающую новую строку, что имеет значение. Текущие решения, которые я вижу:
system ()
. Проблемы: не работает с NULL. : прочтите!
. Проблемы: не сохраняет завершающий символ новой строки, пытается интеллектуально определять выходной формат (dos / unix / mac). !
с перенаправлением во временный файл, затем readfile (, "b")
для его чтения. Проблемы: два вызова fs, опция shellredir
также перенаправляет stderr по умолчанию, и он должен быть менее переносимым ( 'shellredir'
здесь упоминается, потому что он, вероятно, будет установлен на допустимое значение ). ()
и отфильтруйте выходные данные через xxd
. Проблемы: очень медленный, наименее переносимый (нет эквивалента 'shellredir'
для каналов). Есть ли другие идеи?