В моем текущем задании у нас есть стандарты стиля кодирования, которые отличаются от тех, я обычно следую. К счастью, у нас есть консервированный файл RC для perltidy
то, что я могу подать заявку для переформатирования файлов, прежде чем я подвергну их нашему процессу рассмотрения.
У меня есть код для emacs, который я использую, чтобы выполнить команду по буферу и заменить буфер выводом, который я адаптировал к этому. Но я иногда чередуюсь между emacs и энергией, и хотел бы иметь те же возможности там. Я уверен, что это или что-то подобное просты и были сделаны и восстановлены много раз. Но у меня не было большой удачи при нахождении любых примеров сценария энергии, которые, кажется, делают то, в чем я нуждаюсь. Который должен, в сущности, смочь поразить ключевую комбинацию (как Ctrl-F6, что я использую в emacs), и имейте буфер быть переформатированными оперативные perltidy
. В то время как я - удобный пользователь энергии, я абсолютно невежествен при записи этого вида вещи для энергии.
Команда для фильтрации всего буфера через внешнюю программу:
:%!command
Поместите следующее в ~ / .vimrc
, чтобы привязать его к Ctrl-F6 в обычном режиме:
:nmap <C-F6> :%!command<CR>
Для дополнительного развлечения:
:au Filetype perl nmap <C-F6> :%!command<CR>
Это отобразит фильтр только при редактировании файла Perl.
Я привык выделять текст с помощью линейно ориентированного визуального элемента Shift + V , а затем нажимаю : и у меня есть ! Perltidy -pbp -et4
где-то в истории, поэтому я нажимал один или несколько раз стрелку вверх ⇧ .
Моя команда tidy:
command -range=% -nargs=* Tidy <line1>,<line2>!
\perltidy (your default options go here) <args>
Если вы используете визуальное выделение или указываете диапазон, то будет обработан выбранный диапазон, иначе будет использован весь файл. Вы можете поместить набор опций по умолчанию (если они у вас есть) в точку, где я написал (ваши опции по умолчанию идут здесь)
, но любые аргументы, которые вы предоставите :Tidy
, будут добавлены в командную строку perltidy
, переопределяя ваши опции по умолчанию. (Если вы используете .perltidyrc
, у вас может не быть args по умолчанию - это нормально, но с другой стороны, вы можете захотеть иметь значение по умолчанию вроде --profile=vim
, которое устанавливает значения по умолчанию только для работы в vim. Все, что угодно.)
Сделав следующий шаг к ответу Хоббса, вы можете сопоставить эту команду с сочетанием клавиш:
command -range=% -nargs=* Tidy <line1>,<line2>!perltidy -q
noremap <C-F6> :Tidy<CR>
И еще один шаг: сопоставляйте команду только тогда, когда вы находятся в буфере Perl (поскольку вы, вероятно, не захотите запускать perltidy на любом другом языке):
autocmd BufRead,BufNewFile *.pl,*.plx,*.pm command! -range=% -nargs=* Tidy <line1>,<line2>!perltidy -q
autocmd BufRead,BufNewFile *.pl,*.plx,*.pm noremap <C-F6> :Tidy<CR>
Теперь вы можете нажать Ctrl-F6 без активного выделения для форматирования всего файла или с активным выделением для форматирования только этот раздел.