У меня есть папка, содержащая сотни TTL (TeraTermLanguage) файлы. Теперь я хотел отступ все эти файлы.
Я создал teraterm.vim для добавления отступа, и я открываю файл с помощью VIM и делаю "gg=G" и целый файл располагаются с отступом правильно.
Но есть ли любой путь, где я могу расположить все файлы с отступом в папке.
Я хотел сделать со справкой Shell. Но в VIM я не мог передать команду отступа файла как аргумент VIM.
Предложите, который является лучшим способом, которым я могу сделать добавление отступа во все файлы в VIM.
Гораздо проще, чем писать сценарии 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)
Откройте терминал. Введите:
$ 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
, не ожидайте сохранения резервной копии.