Как я могу написать сценарий энергии для выполнения perltidy на буфере?

В моем текущем задании у нас есть стандарты стиля кодирования, которые отличаются от тех, я обычно следую. К счастью, у нас есть консервированный файл RC для perltidy то, что я могу подать заявку для переформатирования файлов, прежде чем я подвергну их нашему процессу рассмотрения.

У меня есть код для emacs, который я использую, чтобы выполнить команду по буферу и заменить буфер выводом, который я адаптировал к этому. Но я иногда чередуюсь между emacs и энергией, и хотел бы иметь те же возможности там. Я уверен, что это или что-то подобное просты и были сделаны и восстановлены много раз. Но у меня не было большой удачи при нахождении любых примеров сценария энергии, которые, кажется, делают то, в чем я нуждаюсь. Который должен, в сущности, смочь поразить ключевую комбинацию (как Ctrl-F6, что я использую в emacs), и имейте буфер быть переформатированными оперативные perltidy. В то время как я - удобный пользователь энергии, я абсолютно невежествен при записи этого вида вещи для энергии.

13
задан brian d foy 16 March 2010 в 13:46
поделиться

4 ответа

Команда для фильтрации всего буфера через внешнюю программу:

:%!command

Поместите следующее в ~ / .vimrc , чтобы привязать его к Ctrl-F6 в обычном режиме:

:nmap <C-F6> :%!command<CR>

Для дополнительного развлечения:

:au Filetype perl nmap <C-F6> :%!command<CR>

Это отобразит фильтр только при редактировании файла Perl.

9
ответ дан 1 December 2019 в 19:40
поделиться

Я привык выделять текст с помощью линейно ориентированного визуального элемента Shift + V , а затем нажимаю : и у меня есть ! Perltidy -pbp -et4 где-то в истории, поэтому я нажимал один или несколько раз стрелку вверх .

0
ответ дан 1 December 2019 в 19:40
поделиться

Моя команда tidy:

command -range=% -nargs=* Tidy <line1>,<line2>!
  \perltidy (your default options go here) <args>

Если вы используете визуальное выделение или указываете диапазон, то будет обработан выбранный диапазон, иначе будет использован весь файл. Вы можете поместить набор опций по умолчанию (если они у вас есть) в точку, где я написал (ваши опции по умолчанию идут здесь), но любые аргументы, которые вы предоставите :Tidy, будут добавлены в командную строку perltidy, переопределяя ваши опции по умолчанию. (Если вы используете .perltidyrc, у вас может не быть args по умолчанию - это нормально, но с другой стороны, вы можете захотеть иметь значение по умолчанию вроде --profile=vim, которое устанавливает значения по умолчанию только для работы в vim. Все, что угодно.)

9
ответ дан 1 December 2019 в 19:40
поделиться

Сделав следующий шаг к ответу Хоббса, вы можете сопоставить эту команду с сочетанием клавиш:

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 без активного выделения для форматирования всего файла или с активным выделением для форматирования только этот раздел.

4
ответ дан 1 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

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