Попробуйте:
quickedit() ( trap 'rm ~/temp$$' exit; vim ~/temp$$ >/dev/tty; cat ~/temp$$ )
Ключ в том, что для нормального использования vim
vim
требует, чтобы стандартный вывод был терминалом. Мы достигаем этого с помощью перенаправления > / dev / tty
.
В целях безопасности я помещаю временный файл в домашний каталог пользователя. Для получения дополнительной информации см. Часто задаваемый вопрос Грега 062 . Это избавляет от необходимости использовать непонятное имя файла.
Когда открывается vim
, я набираю Эта функция выполнена успешно.
и сохраните файл.Результат на экране выглядит следующим образом:
$ quickedit | grep succeeded
This function succeeded.
Несмотря на то, что вывод quickedit
перенаправлен в конвейер, vim
по-прежнему работает нормально, потому что мы предоставили ему прямой доступ к / dev / tty
.
Как я упоминал в комментариях, vim может передать файл команде по конвейеру. Например, из vim введите команду : w! Pandoc -o file.pdf
(Примечание: пробел между w и! Обязателен).