Как автоматически отформатировать код из командной строки?

2068
Clay

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

formatMyCode someRandomFile.js 

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

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

6
Вы можете попробовать [`astyle`] (http://astyle.sourceforge.net/) (sudo apt-get install astyle), но, возможно, лучше использовать некоторую IDE Hastur 8 лет назад 1

2 ответа на вопрос

5
Hastur

If you like vim you can invoke its action from the command-line.

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

Warning the above command will modify your file without prompting. Do a backup before.
It's possible to find examples integrated with find to accomplish the same work on a bunch of files [0].

Looking beyond it's possible to find a lot of utilities build for this, and this number will continue to grow in time; you can search for their updated versions on internet and you can start for example from:

  • Artistic Style [1], astyle, for C, C++, C++/CLI, Objective‑C, C# and Java programming languages.
  • tidy [2] for Html
  • IDE solutions invoked by command line starting from kate [3] for which there exists just made plug-in; you can built your own indentation scripts [4] too, continuing with UniversalIndentGUI [5], eclipse [5]...
Я втайне надеялся, что кто-нибудь подаст пример! благодарю вас Clay 8 лет назад 0
Пожалуйста. Просто предложение, в следующий раз попробуйте задать это напрямую, это может быть еще быстрее! (В общем, старайтесь избегать проблем, похожих на [xy one] (http://xyproblem.info/), это может упростить вашу и чужую жизнь ;-)) Hastur 8 лет назад 0
1
wisbucky
vim -c "execute 'normal! =G' | :wq! out.js" input.js 

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

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

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

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

filetype plugin indent on

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