Intereting Posts
Код для ограничения регистрации пользователя – скрыть / показать форму php Создание временной метки PHP / MySQL выглядит более привлекательно Отображение данных из двух разных таблиц в index () с использованием cakephp. Загрузка страницы – белая «вспышка» между страницами Netbeans 8.0 Композитор с Laravel 5 Шаблон DataMapper PHP: моему классу нужен экземпляр PDO, я хочу обернуть его внутри класса Db move_uploaded_file () не удалось открыть поток: нет такого файла или каталога .env и файлы mail.php не будут обновляться – Laravel 5.1 Рекурсивный запрос MySQL? Невозможно получить невыносимый запрос HMVC для работы в FuelPHP Laravel 5 Auth Logout не уничтожает сеанс Не удается отправить заголовки; заголовки, уже отправленные в /home/zk/public_html/lib/Zend/Cache/Backend/File.php, строка 1 Как я могу запустить сценарий, когда субдомен достигнет определенного уровня пропускной способности? Дата PHP ('W') против MySQL YEARWEEK (теперь ()) Каков правильный способ использования Guzzle 6 для создания пула асинхронных запросов json для отправки конечным точкам API?

Исправлен отбор HTML и PHP с помощью Vim

Я некоторое время использую Vim, и я не могу получить правильное отступы HTML, работающие в файлах PHP.

Например, я хочу, чтобы для каждого дочернего элемента была отступом одна вкладка больше, чем родительская, как показано ниже.

<?php if(isset($sports)) { //Do something ?> <div> <label>Uniform Size</label> <ul> <li class="left"><label for="s" class="small">S</label><input type="radio" name="size[]" value="S" id="s" class="radio" /></li> <li class="left"><label for="m" class="small">M</label><input type="radio" name="size[]" value="M" id="m" class="radio" /></li> <li class="left"><label for="l" class="small">L</label><input type="radio" name="size[]" value="L" id="l" class="radio" /></li> <li class="left"><label for="xl" class="small">XL</label><input type="radio" name="size[]" value="XL" id="xl" class="radio" /></li> </ul> </div> <?php } ?> 

Используя скрипт PHP-correct-Indent , код приводит к форматированию следующим образом:

 <?php if(isset($sports)) { //Do something ?> <div> <label>Uniform Size</label> <ul> <li class="left"><label for="s" class="small">S</label><input type="radio" name="size[]" value="S" id="s" class="radio" /></li> <li class="left"><label for="m" class="small">M</label><input type="radio" name="size[]" value="M" id="m" class="radio" /></li> <li class="left"><label for="l" class="small">L</label><input type="radio" name="size[]" value="L" id="l" class="radio" /></li> <li class="left"><label for="xl" class="small">XL</label><input type="radio" name="size[]" value="XL" id="xl" class="radio" /></li> </ul> </div> <?php } ?> 

Даже с отступом HTML, который я затем добавляю в PHP-код, отступ игнорируется, перемещая новые строки HTML-кода без каких-либо отступов.

Итак, есть ли способ получить формат отступа, который я хочу работать с HTML в файлах PHP, используя Vim?

Это все еще беспокоит меня. Я только решил, что лучшая работа (для меня лично) такова:

 :set filetype=html 

Затем выделите текст и нажмите = . БУМ! Форматирование HTML успешно. (Не знаю, знаю, но, по крайней мере, это работает.)

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

http://www.vim.org/scripts/script.php?script_id=604

Кажется, я решил свои проблемы !!!!!

В Vim Wiki имеется набор инструкций vimrc, называемый Better indent для PHP с HTML, который будет использовать правильный плагин в зависимости от блока.

Существует также плагин Vundle / Pathogen, который использует один и тот же код, но его проще установить и сохраняет ваш .vimrc чистоте.

патогенный микроорганизм

 cd ~/.vim/bundle git clone https://github.com/captbaritone/better-indent-support-for-php-with-html.git 

Vundle

Место в .vimrc

 Bundle 'captbaritone/better-indent-support-for-php-with-html' 

Запуск в vim

 :BundleInstall 

В php + html я нашел следующее для меня хорошо.

 :set ft=html # Change the file type to html =G # to indent all lines :set ft=phtml # Change the file type to phtml =G # to indent all php lines 

Для меня это работает хорошо, если я сначала сделаю :set ft=html а затем :set syn=php .

php-correct-indenting заботится только о вашем PHP и предполагает, что читаемость HTML не представляет интереса. Индентор XML позиционирует теги красиво, но не сможет отступать от содержимого инструкции обработки <? Php>. Возможно, есть сценарий отступов, который понимает как синтаксис C-типа PHP, язык программирования, так и [X] [HT] ML, язык шаблона разметки, который был шаблонизирован, но я никогда не встречал его еще – извините.

Тем не менее, я хотел бы возиться с отступом в вашем примере, даже до того, как php-correct-indenting измотал его! Элемент <div> находится внутри внешнего оператора if, но у меня нет способа увидеть это из отступа. Я бы предложил что-то вроде:

 <?php if(isset($sports)) { ?> <?php // Do something ?> <div> <label>Uniform Size</label> <ul> <li>etc. etc.</li> </ul> </div> <?php } ?> и <?php if(isset($sports)) { ?> <?php // Do something ?> <div> <label>Uniform Size</label> <ul> <li>etc. etc.</li> </ul> </div> <?php } ?> и <?php if(isset($sports)) { ?> <?php // Do something ?> <div> <label>Uniform Size</label> <ul> <li>etc. etc.</li> </ul> </div> <?php } ?> 

Я нашел это решение намного лучше. http://www.vim.org/scripts/script.php?script_id=1120

поддерживая стиль HEREDOC html. которые часто встречаются в моем коде.
BTW: у него больше версий, чем у старого (скрипт id 604, alex отправил его выше)

внутри вашего .vimrc:

 :function IndentPHPHTML() : set ft=html : normal gg=G : set ft=php :endfunction 

используйте ctrl-shift-L (или что-то еще) в отступ

 nnoremap <CSl> :call IndentPHPHTML()<cr> 

После поиска дней для решения ничего не получилось и, наконец, это сработало, добавьте это в свой vimrc

 au BufEnter,BufNew *.php :set filetype=html 

В файле ~/.vimrc :

 set expandtab set sw=4 set ts=4 

Опция expandtab будет конвертировать вкладки в пробелы, параметр sw устанавливает ширину сдвига на 4, а вкладка ts sets останавливается до 4 пробелов.