Расположение с отступом в VIM со всеми файлами в Папке

У меня есть папка, содержащая сотни TTL (TeraTermLanguage) файлы. Теперь я хотел отступ все эти файлы.

Я создал teraterm.vim для добавления отступа, и я открываю файл с помощью VIM и делаю "gg=G" и целый файл располагаются с отступом правильно.

Но есть ли любой путь, где я могу расположить все файлы с отступом в папке.

Я хотел сделать со справкой Shell. Но в VIM я не мог передать команду отступа файла как аргумент VIM.

Предложите, который является лучшим способом, которым я могу сделать добавление отступа во все файлы в VIM.

34
задан hari 10 July 2010 в 08:46
поделиться

2 ответа

Гораздо проще, чем писать сценарии vim из командной строки bash, использовать vimscript внутри vim (или, возможно, гораздо более простой one-liner для написания сценариев vim из командной строки). Я лично предпочитаю использовать список arg для всех многофайловых манипуляций. Например:

:args ~/src/myproject/**/*.ttl | argdo execute "normal gg=G" | update
  • args задает список arg, используя подстановочные знаки (** будет соответствовать текущему каталогу, а также подкаталогам)
  • | позволяет нам запускать несколько команд на одной строке
  • argdo запускает следующие команды на каждом arg (он поглотит второй |)
  • execute предотвращает normal от поглощения следующей трубы.
  • normal запускает следующие команды нормального режима (то, с чем вы работали в первую очередь)
  • update похож на :w, но сохраняет только при изменении буфера.

Это :args ... | argdo ... | update очень полезен для любых манипуляций с файлами в рамках проекта (например, поиск и замена через %s/foo/bar/ge или установка единого fileformat или fileencoding).

(другие люди предпочитают аналогичную схему с использованием списка буферов и :bufdo, но со списком arg мне не нужно беспокоиться о закрытии текущих буферов или открытии новой сессии vim)

.
60
ответ дан 27 November 2019 в 16:29
поделиться

Откройте терминал. Введите:

$ vim -w indentme.scr foo.c

Затем введите это точно (в командном режиме):

gg=G:wq

Это закроет vim, сохраняя процесс отступа всех строк в файле в сценарий Vim с именем indentme.scr .

Примечание: indentme.scr будет содержать запись всех набранных ключевых команд, поэтому, когда вы закончите делать отступ в файле, не тратьте много времени, используя клавиши со стрелками, чтобы осматривать файл. , потому что это приведет к созданию сценария гораздо большего размера и сильно замедлит пакетные операции.

Теперь, чтобы сделать отступ для всех строк в файле, просто введите следующую команду:

$ vim -s indentme.scr unindented-file.c

Vim будет мигать при открытии-закрытии (если вы работаете на быстром компьютере и не редактируете большой файл), делая отступ для всех строк, а затем сохраните файл на месте.

К сожалению, это будет работать только с одним файлом за раз, но вы можете легко масштабировать функциональность, используя sh для цикла :

for filename in *.ttl ; do
    vim -s indentme.scr "$filename"
done

Примечание: Это сохранит любой файл. Если set bk не находится в вашем ~ / .vimrc , не ожидайте сохранения резервной копии.

12
ответ дан 27 November 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: