{{Laracast Vim Mastery, 16, PHP Optimizations, 23.02.2016, 11.07.2016, https://laracasts.com/series/vim-mastery/episodes/16}} (0:00) В этом эпизоде мы целиком сосредоточимся на некоторых оптимизациях PHP. Если вы не используете PHP, просто пропустите эту часть. Хорошо. Мы загрузим или установим три разных вещи. Первая - обновленный файл синтаксиса. Следующая - способ автоматического добавления оператора %%use%% вверху каждого класса. И третья - мы создадим небольшой маппинг для автоматической сортировки операторов %%use%%. Давайте начнем. Как обычно, это должен быть известный механизм для вас на этом этапе. (0:30) Откроем Vim. Отредактируем файл %%(t)vim/plugins.vim%%. Прокрутим вниз и добавим. Далее, переключусь в мой файл %%(t).vimrc%%. Сохраню его и запущу установку плагина. Теперь он у нас установлен. Он должен заработать автоматически и мы ничего не должны делать. Теперь добавлен %%(t)php.vim%%. Я бы хотел получить способ автоматического добавления %%use%% сверху любого класса. (1:00) Еще раз, - давайте добавим это вниз: %%(t):Plugin%%... Да, просто проделайте то же самое: %%(t):PluginsInstall%%. Теперь мы должны добавить несколько горячих клавиш. Вот тут мы добавим функцию %%(t)PhpInsertUse%% и установим автокоманду. Если тип файла PHP, то установим команду: когда мы нажимаем %%(t)%%... для нас это “запятая”. Возможно, вы поменяете эту клавишу, но, в любом случае, это будет означать... (1:30) В этом случае, в режиме вставки, мы вызовем функцию %%(t)PhpInsertUse%%. Но потом мы установим другую функцию для нормального режима, которая делает в точности то же самое. Давайте возьмем это, перейдем в полноэкранный режим... И, теперь, в моем файле %%(t).vimrc%%... Может быть мы позже найдем лучшее место для этого, но сейчас просто вставлю это сюда. Далее, мы поменяем %%(t)u%% на %%(t)n%%, для пространства имен. Давайте попробуем в новой вкладке. (2:00) Давайте откроем... не знаю... контроллер... Да, у нас тут есть какой-то метод. Скажем, мы хотим использовать класс %%User%%. Прямо сейчас, по крайне мере, до добавления этого пакета, мы должны сделать так: %%use App\User%% и тут внизу напишем %%$user = new User;%%. Давайте продолжим и поменяем это. Сейчас я должен иметь возможность написать %%User%% и, далее, %%(t),n%%. Вот так. Видите, вот тут, он автоматически импортировал это. Заметьте, я находился в режиме вставки. (2:30) И все потому, что мы установили маппинг для этого. Но у нас также есть маппинг для нормального режима. И он будет делать то же самое. Пока курсор находится на слове, нажмем %%(t)n%%, - теперь %%use App\User%% добавлено наверх. Весьма удобная штука. Это будет работать для чего бы то ни было. Представьте, что нам нужен один из %%Request%%-классов. Снова - %%$r = new Request%%... и пока курсор на слове %%Request%% - нажмём %%(t),n%%. В этом случае это будет несколько разных вещей. (3:00) В такой ситуации появится список. Хотите ли вы пункт 1, 2 или 3? В этом случае учитывается и файл %%(t)compiled.php%%. Пожалуй, мне нужно исключить его из моего файла tags. Теперь выполнился импорт этого конкретного класса %%Request%%. Теперь, просто запомните, - это предполагает, что у вас есть файл %%(t)tags%%. Мы уже рассматривали, как создать его. Быстро повторим - мы должны выполнить %%(sh)ctags -R --exclude%%. Вы можете сделать еще одну вещь. Например, можем исключить папку. (3:30) Возможно, вы хотите исключить %%(t)node_modules%%, поскольку это очень большая директория. И вам, возможно, часто не потребуются расположенные в ней файлы. Вы можете исключить %%(t)vendor%% также. Или исключить какую-то определенную папку внутри %%(t)vendor%%. Если мы вернемся в Chrome, то, скорее всего, найдем советы. Да, вот тут. Вы можете вставить что-то вроде этого. Или вы также можете установить %%(t)traits%% (типажи). Кстати, возможно, вы захотите сохранить это, как псевдоним в bash, чтобы не запоминать. (4:00) Еще кое-что. Мы преуспели в автоматическом добавлении оператора %%use%% вверху класса. Но мы также хотим иногда расширить имя класса до абсолютного. Это указано прямо здесь. Если вам нужно абсолютное имя класса, возьмем это. Перейдем в файл %%(t).vimrc%%. Вставлю сюда. И в этот раз я поменяю команду на %%(t)nf%% (namespace fully qualified). (4:30) Теперь вы увидите различие. Давайте избавимся от этого. Сначала %%(t)n%%, 1 - импортирует %%use%% наверх. Нажму %%(t)u%% для отмены. Но теперь, если я нажму %%(t)nf%% и сделаю выбор, вы увидите, имя превратилось в абсолютное. И знаете что? Вообще-то, тут должно начинаться со слэша . Удивлен, что это не так. Давайте попробуем еще одно %%User%%, %%(t)nf%%... Да, в большинстве случаев вам, возможно, нужен обратный слэш в начале. (5:00) На самом деле, это не важно. Сейчас важно то, что вам не нужно переживать о расширении до абсолютного пути. Вы можете просто написать %%use AughorizesRequests%% и, далее, %%(t),nf%% для мгновенного расширения. А если вы попробуете ввести что-то несуществующее, кстати, редактор, конечно, сообщит вам. “Ни один тег не найден для данного класса”. Это существенная помощь. И наконец - это дело вкуса - но мне нравятся мои %%use%% операторы, расположенные от короткого к длинному. (5:30) Здесь они расположены правильно. Другие предпочитают сортировку по алфавиту или что-то подобное. Позвольте добавить еще кое-что сюда. Вставлю это вниз. Может быть, еще что-то. Как насчет еще одного класса %%Request%%? Вот так. Если вы предпочитаете сортировку по алфавиту, вам не нужно ничего менять, но только выделить их все и ввести %%(t)sort%%. Хорошо, теперь %%(t)A%% вверху, а %%(t)I%% внизу. Многие предпочитают делать так. Ничего плохого в этом нет. (6:00) Но, опять же, для меня удобнее сортировка от короткого к длинному. Чтобы обеспечить это, мы можем использовать небольшой маппинг. Скопирую это. Переключусь в файл %%(t).vimrc%%. И, снова, - вставьте пока это сюда. Вам не обязательно в это вдумываться. Все, что нужно знать, - если вы введете %%(t)su%%, будет использовано %%(t)awk%%, чтобы выяснить длину каждой строчки и вызвать сортировку. Теперь, выделю это и нажму %%(t),su%%. Готово. (6:30) Порядок изменился от короткого к длинному. Достаточно для этого урока. Мы установили 3 вещи. Первая - %%(t)php.vim%%, которая обновляет файл синтаксиса PHP. Потом мы узнали, как автоматически добавлять импорт %%use%% наверх. И, наконец, мы разобрали, как сортировать фразы с оператором %%use%% от короткой к длинной.