Я не полностью уверен, что понимаю, что вы делаете. Если вы просто хотите отредактировать все файлы *my_file.txt*
, используйте:
vim *my_file.txt*
Не нужно возиться с find
или xargs
. Единственная проблема, с которой вы столкнетесь, - это если у вас будет столько файлов такой формы, что вы выйдете за пределы командной строки. Но, если серьезно, вы все равно не хотите редактировать столько файлов.
Согласно этому обсуждению здесь , vim
не относится к числу тех программ, в которые вы можете легко играть со стандартным вводом и выводом (по крайней мере, в режиме vi - режим ex может отличаться).
Вы можете увидеть похожую проблему с такими вещами, как:
`vi filename`
$(vi filename)
vi filename </dev/null
По сути, vim
не предназначен для работы со своим stdin / stdout, это интерактивный редактор, который ожидает терминальное устройство. Следующие эффекты, которые вы видите, вероятно, либо curses
, либо vim
, сами по себе не очищают настройки stty
должным образом.
Если у вас есть более сложная сложная команда , которая генерирует имена файлов для редактирования, вы можете использовать что-то вроде:
vim $(arbitrarily_bizarre_command_which_outputs_filenames)
с учетом того, что выводом является простая подстановка текста, поэтому он не будет легко обрабатывать файлы типа my list of porn sites.txt
(с пробелами в них). vim
увидит это как пять разных аргументов.