(Re) форматирование PHP-кода в Vim

Как мне форматировать PHP-код, который выглядит так

class SomeClass { function insideclass() { } } 

в этом, используя Vim без внешнего инструмента?

 class SomeClass { function insideclass() { } } 

Я не утверждаю, что это лучший способ форматировать код, но это то, что мы следуем в команде.

Изменить : Удалена ссылка на добавление фрагмента, что вызвало некоторую путаницу в вопросе.

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

  1. Вам не нравится фрагмент class по умолчанию.

    Нет проблем. Если он еще не существует, создайте ~/.vim/snippets/php.snippets и настройте его в соответствии с правилами вашей команды, следуя другим ответам. Snipmate недостаточно умен, чтобы адаптироваться к вашему стилю кодирования.

  2. Некоторые из ваших существующих кодов не соответствуют вашим правилам кодирования.

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