6

Допустим, у меня есть JavaScript в someRandomFile.js, и я хочу выполнить команду вроде:

formatMyCode someRandomFile.js

Тогда внутри файла это просто делает отступ в хорошем виде.

Я хочу сделать формат PHP или HTML тоже. В VIM вы можете выделить некоторый текст и нажать =, и он автоматически отформатирует его (даже если это смешанный HTML/PHP/JavaScript). Есть ли простой способ сделать это?

2 ответа2

5

Если вам нравится vim, вы можете вызвать его действие из командной строки.

echo -e "G=gg\n:wq\n" | vim ./myfile.php 

Предупреждение, приведенная выше команда изменит ваш файл без запроса. Сделайте резервную копию раньше.
Можно найти примеры, интегрированные с find для выполнения той же работы с кучей файлов [ 0 ].

Если посмотреть дальше, то можно найти множество утилит, созданных для этого, и это число будет расти со временем; вы можете искать их обновленные версии в Интернете, и вы можете начать, например, с:

  • Художественный стиль [ 1 ], astyle, для языков программирования C, C++, C++/CLI, Objective-C, C # и Java.
  • tidy [ 2 ] для HTML
  • Решения IDE, вызываемые из командной строки, начиная с kate [ 3 ], для которой существует только что созданный плагин; Вы также можете создавать свои собственные сценарии отступов [ 4 ], продолжая UniversalIndentGUI [ 5 ], eclipse [ 5 ]...
1
vim -c "execute 'normal! =G' | :wq! out.js" input.js

Вы также можете использовать альтернативный синтаксис + вместо -c . Это то же самое.

vim +"execute 'normal! =G' | :wq! out.js" input.js
  1. Он выполняет обычную команду =G , которая автоматически форматирует / отступает (=) каждую строку до конца файла (G).

  2. Тогда :wq! out.js записывает его в файл и выходит из vim. Если вы просто хотите перезаписать один и тот же файл, удалите out.js

Кроме того, вам нужно иметь эту строку в вашем ~/.vimrc для работы плагина отступа автоформатов:

filetype plugin indent on

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .