Как мне форматировать PHP-код, который выглядит так
class SomeClass { function insideclass() { } }
в этом, используя Vim без внешнего инструмента?
class SomeClass { function insideclass() { } }
Я не утверждаю, что это лучший способ форматировать код, но это то, что мы следуем в команде.
Изменить : Удалена ссылка на добавление фрагмента, что вызвало некоторую путаницу в вопросе.
У вас есть две несвязанные проблемы, и вы не найдете уникального решения для обоих.
Вам не нравится фрагмент class
по умолчанию.
Нет проблем. Если он еще не существует, создайте ~/.vim/snippets/php.snippets
и настройте его в соответствии с правилами вашей команды, следуя другим ответам. Snipmate недостаточно умен, чтобы адаптироваться к вашему стилю кодирования.
Некоторые из ваших существующих кодов не соответствуют вашим правилам кодирования.
Snipmate не поможет вообще, поскольку он касается только вставки , а не преобразования . Вам понадобится какой-то внешний декодер или несколько макросов.
РЕДАКТИРОВАТЬ
Вот очень простая команда, которая делает именно то, что вы хотите на своем примере . Я не гарантирую, что он будет работать во всем везде. Возьмите его как наивную отправную точку.
:g/^\s*{\s*$/normal kJ
:g/pattern
действует на все строки, содержащие pattern
, см . :h :global
.
^\s*{\s*$
соответствует всем одиночным {
независимо от количества пробелов между ними и началом строки.
normal
выполняет normal
команды, см . :h :normal
.
kJ
поднимается на одну линию, а J
линия этой линии совпадает с соответствующей строкой.
Готово.
EndEdit
Почему бы не изменить исходный код этого аддона?
Например, измените их:
snippet class /** * ${1} */ class ${2:ClassName} { ${3} function ${4:__construct}(${5:argument}) { ${6:// code...} } }
в
snippet class /** * ${1} */ class ${2:ClassName}{ ${3} function ${4:__construct}(${5:argument}){ ${6:// code...} } }
Al snipmate snippets хранится в каталоге. Перейдите в этот каталог и отредактируйте нужный файл.
Директив хранится в каталоге vim и называется snippets
. Там вы видите файл php.snippets
. Перейдите к этому файлу и в строке 70 вы можете отредактировать фрагмент для этого класса.