Открыть все файлы в каталоге с помощью vim в обратном порядке

Открыть все файлы в каталоге с помощью vim в обратном порядке

Как открыть все файлы в указанном каталоге с помощью vim в обратном алфавитном порядке? Команда -

vim *

откроет все файлы в алфавитном порядке. Как мне перебрать файлы, используя :nв обратном порядке? Я нашел использованиеtac здесь, еще одно решение, которое отображает содержимое файлаздесь, и решение для emacsздесь, но они не являются решениями для vim.

решение1

Общая идея может заключаться в том, чтобы поменять местами то, что *получается:

printf '%s\n' * | tac

и использовать это с xargsдля создания vim. Две проблемы с этим:

  1. В общем случае имена файлов могут содержать символы новой строки, поэтому лучше разделять их нулевыми символами и использовать xargs -0.

  2. vimпорожденный xargsв конвейере будет жаловаться на ввод не с терминала. Могут произойти странные вещи. Если ваш xargsподдерживает -o(переоткрыть stdin как /dev/ttyв дочернем процессе перед выполнением команды), то используйте его.

Тогда полное решение:

printf '%s\0' * | tac -s "" | xargs -0o vim

Примечания:

  • tacне требуется POSIX; xargsможет не поддерживать используемые опции. Весь подход непереносим.
  • Пустая строка в качестве аргумента-опции, по tac -s-видимому, устанавливает нулевой символ в качестве разделителя без явной передачи нулевого символа (это может быть проблематично).
  • ЕстьARG_MAXпредел, вы не можете запустить команду, которая длиннее. Если файлов много, расширение *может превысить лимит, вы можете получить Argument list too long. Если printfэто встроенная команда в вашей оболочке, то лимит может не применяться в этой точке. Тем не менее, он применяется, когда xargsпытается породить vim. xargsобнаружит это и запустит два или более vimпроцессов последовательно, если это необходимо. Однако это может быть не то, что вам нужно. Надеюсь, поскольку вы собираетесь вручную выполнять итерацию с :n, я ожидаю, что количество файлов не так уж и велико, так что это ARG_MAXне будет проблемой.

Связанный контент