Я иногда пытался вызвать Vim, используя xargsэто:
find . -name '*.java' | xargs vim
… Какие работы:
Когда Vim запускается, я вижу следующее предупреждение:
Vim: Warning: Input is not from a terminal- Редактирование работает -
:filesправильно перечисляет все.javaфайлы, как и ожидалось. - Я могу сохранить и выйти.
Однако после выхода из Vim мой терминал пропал:
- Все, что я печатаю в командной строке, не отражается.
- Возврат каретки вообще не появляется, а переводы строки появляются только иногда.
Это продолжается до тех пор, пока я не выполню reset(1)команду для повторной инициализации терминала.
Это ошибка Vim, или есть более удовлетворительное объяснение, почему он так взаимодействует с терминалом? Я видел, как это происходит в Vim до версии 7.3 (версия, кажется, не имеет значения) в Linux и различных Unices.
Я знаю один обходной путь, а именно vim $(find . -name '*.java'). Другие обходные пути будут приветствоваться, хотя это не мой главный вопрос.
xargsиспользуется пустышкаstdin, которую Vim не может использовать, и перерывы все потом.