{{Laracast Мастерство Vim, 2, Finding Your Way Around, 26.01.2015, 27.05.2016, https://laracasts.com/series/vim-mastery/episodes/1}} (0:00) Перед тем, как приступить к настройке редактора вы должны усвоить основные клавиши для перемещения. Я открою Vim или, повторюсь, я предпочитаю MacVim. Это фактически то же самое. Но этот редактор предоставляет вам хорошую GUI-оболочку. Например, вы можете нажать Command+S (на Mac) или Ctrl+S (Windows/Linux), чтобы сохранить файл. На самом деле, вы можете делать множество вещей, выполнение которых сложнее в обычном редакторе Vim. 95% или даже больше, из того, что я буду тут рассказывать, применимо к обоим редакторам. (0:30) Хорошо, давайте начнем. Лично я предпочитаю пользоваться MacVim. Да, в этом отношении люди делятся на две категории. Многие бы сказали "просто используй терминальный Vim". Почему бы и нет? Если так, просто наберите vim - я почти уверен, что он уже установлен на вашем компьютере. Но я из тех, кто предпочитает MacVim. У него привычный функционал. К примеру, вы, вероятно, использовали Command+S, чтобы сохранить файл, уже лет 10, верно? С терминальным Vim вы не сможете делать это. (1:00) В MacVim эти обычные горячие клавиши уже подразумеваются. И вам будут говорить, что вы отошли от философии или идеи Vim. Знаете что? Ключ к успеху в Vim — возможность настройки именно под ваш рабочий процесс. Т.е., чтобы удовлетворить именно вас, а не кого-то другого. Если вы работаете в MacVim, можете попробовать использовать его и дальше. В противном случае, просто используйте терминальный Vim. Сначала несколько замечаний. Я буду использовать iTerm 2. (1:30) И теперь, вы можете видеть, что это отличается от моих обычных видео-записей. Это потому, что я создал нового пользователя в своей системе. Таким образом, я могу настраивать Vim с нуля вместе с вами. Одну вещь я хотел бы сделать сразу — придать ему более приятный вид. Мне нравится пользоваться инструментом, который называется **oh-my-zsh**. Если мы прокрутим страницу вниз... давайте просто настроем по-быстрому. Мы будем использовать cURL. Я переключусь на iTerm и вставлю эту команду. И вы увидите, что тут у нас файл %%(t).zshrc%%. Это очень похоже на ваш привычный файл %%(t).bashrc%%. (2:00) Но знаете что? Всякий раз, когда мы используем Vim, или MacVim, если последний запущен и настроен в %%(t).zshrc%%, то видим несколько вещей. Мы можем установить свою %%(t)ZSH_THEME%%. Мы задействуем несколько плагинов. Их тут на самом деле много. Не останавливаясь на них долго, просто покажу, как улучшить внешний вид. Итак, давайте вернемся и посмотрим, что тут можно сделать. Мы можем включить плагины здесь. Можем выбрать тему, обновив переменную %%(t)ZSH_THEME%%. (2:30) И тут говорится, если мы откроем новое окно в терминале, настройки вступят в силу. Давайте проделаем это. Command+%%(t)~~%% открывает новое окно терминала. Да теперь вы видите, что оно выглядит немножко лучше. Далее, если я нажму Command+Enter, оно развернется на весь экран. Наконец, я зайду в свои настройки и поправлю пару вещей. Я люблю, когда текст немного крупнее. Давайте установим размер, например, 18... погодите, слишком большой... 14. Хорошо, это то, что нужно. На самом деле свой редактор я настраиваю немного больше. (3:00) Но нам хватит этого. Теперь я создаю папку %%(t)practice%%. Введем %%(t)cd%%, чтобы зайти в нее. Если мы откроем ее в Vim, мы увидим вот что. Или опять же, у вас может быть белый фон. Если выйти отсюда и зайти вместо этого в MacVim, это позволит получить некоторые более приятные настройки по умолчанию. Их не так много. К примеру, если я введу %%(t):w%%, то файл сохраниться, как %%(t)practice.php%%. Теперь я могу ввести букву %%(t)i%% и это переключит меня в режим вставки. (3:30) Я могу начать вводить %%(t)php%%... наконец, я вижу хоть какую-то подсветку синтаксиса "из коробки". Позже мы настроим здесь каждую деталь. Не переживайте. И еще раз, если мы откроем обратно Vim, я введу %%(t):e%% для правки, %%(t)practice.php%% или я могу ввести %%(t)pr%% и Tab и сработает автоподстановка. Заметьте, что в этой конфигурации у нас нет ничего из этих настроек. Мы должны добавить их вручную. (4:00) Сейчас я сделаю кое-какую начальную настройку в Vim. А потом, как только выясним, как все настраивается, я переключусь в MacVim. Таким образом, не будет путаницы из-за разницы в том, как это выглядит на моем компьютере и вашем. Резюмируем сказанное. Вы уже узнали чуть-чуть из этих первых минут. Когда я ввожу %%(t):%% — это переключает меня в режим командной строки, где я могу вводить любое число команд. Для примера %%(t):w%% — "записать". Это значит "записать файл" или "сохранить". (4:30) %%(t):q%% — чтобы выйти, %%(t):e%% — чтобы править. Также мы узнали, что есть автоподстановка в этом режиме, что весьма полезно. И, конечно, вы можете выполнить %%(t):pwd%%. Это покажет текущую директорию ("present working directory"). Вы можете быть знакомы с командой %%(t):wq%%. Вероятно, вы постоянно используете ее для выхода, даже если еще не знаете Vim - он наверняка то и дело появляется перед вами и вам нужно как-то из него выйти. Ну, теперь вы знаете, что это значит. (5:00) Мы просто говорим "записать файл и затем выйти из терминала". Ладно, попытайтесь запомнить их. Я бы даже рекомендовал иметь под рукой небольшой блокнот, чтобы записывать в него эти команды. В нем вы будете "жить", вероятно, весь следующий месяц. Теперь отредактируем файл. Я перемещусь в свою домашнюю папку и открою %%(t).vimrc%%. Но сначала мы выйдем отсюда. И если мы переключимся в домашнюю директорию и выведем список файлов, то он будет включать также скрытые папки. (5:30) Хорошо. Вам нужно знать, что у вас будет этот файл %%(t).vimrc%% в вашей домашней директории. Только здесь вы сможете его найти. Тут вы можете настраивать каждую деталь Vim'а. Если вы вернетесь в нашу директорию %%(t)practice%%, введете %%(t):e%% и откроете %%(t).vimrc%%... Обратите внимание, что я тут ссылаюсь на домашнюю директорию. Изначально он будет пустой. У нас чистая начальная конфигурация. Что, если добавить несколько настроек для начала? (6:00) Помните, что если я ввожу %%(t)n%% или %%(t)m%%... то не вижу ничего. Похоже, что у меня тут блочный курсор не работает курсор. Это потому, что я в "нормальном" режиме. И это важно для понимания Vim. Есть несколько разных режимов. К примеру, если я введу %%(t)i%%, то переключусь в режим вставки. Текущий режим виден внизу. Если нажму Escape, то выйду из режима вставки. Теперь я в нормальном режиме и могу перемещать курсор. Например, после ввода %%(t)h%% курсор перемещается влево. (6:30) Введите букву %%(t)l%% и он переместиться вправо. А если я добавлю побольше текста здесь… далее нажму Escape, чтобы вернутся в нормальный режим... Если я введу %%(t)k%%, то курсор двигается вверх. А если %%(t)j%%, то вниз. Наверное, вы спросите, почему нельзя использовать клавиши со стрелками. Дело в том, что в Vim вам не придется постоянно двигать рукой вправо, если нужно переместить курсор. (7:00) Теперь вам никогда не придется перемещать вашу правую руку. Понаблюдайте за своей рукой, когда вы перемещаете курсор. Я двигаю его, но никогда не двигаю рукой. Мои руки находятся в одном расслабленном положении. Итак, повторим. %%(t)j%% для перехода вниз, %%(t)k%% — наверх, %%(t)l%% — вправо, %%(t)h%% — влево. %%(t)h%%, %%(t)j%%, %%(t)k%%, %%(t)l%%. Теперь, что на счет визуального режима? К примеру, я хочу выделить все и удалить. Хм.. Не работает. Обратите внимание, я выделил, нажал Delete, и это не сработало. (7:30) Это именно то, сводит людей с ума в Vim. Это потому, что они на самом деле не понимают его. Не пытайтесь применять в Vim все, что знаете, из Sublime или Textmate. Помните, как я уже сказал, в MacVim есть некоторые привычные вещи. И это одна из них. В MacVim я как раз могу выделить это и удалить. Если я ввожу букву %%(t)v%%, это переключает нас в новый режим, показанный здесь внизу - в "визуальный" (visual) режим. Теперь давайте введем %%(t)l%%, чтобы перейти вправо. Обратите внимание, сейчас мы выделяем символы. (8:00) И если я захочу отменить это, то просто нажму Escape. Теперь, давайте введем заглавную %%(t)V%%. Мы снова в визуальном режиме, но сейчас мы выделяем построчно. Итак, заглавная %%(t)V%% выделяет всю строчку. Сейчас, если я введу %%(t)j%%, выделение идет вниз, а если %%(t)k%% — конечно, вверх. Ладно, давайте выделим все. Введем букву %%(t)d%%, все удалится. Вот что я имел ввиду, сказав, что это язык. (8:30) Это на самом деле не лишено здравого смысла. Если я хочу выделить что-то, то нажимаю %%(t)V%% и выделяю. Если хочу что-то удалить, то использую букву %%(t)d%% и удаляю. Это может показаться лишним и избыточным, но, поверьте, если вы будете придерживаться этого, то без сомнения полюбите. Вы найдете мало людей, которые изучали Vim и сказали бы при этом, что зря потратили время. Большинство становится его приверженцами очень быстро. Итак, мы в нашем файле %%(t).vimrc%%. Как нам добавить конфигурацию? Давайте попробуем. (9:00) Я собираюсь включить синтаксис командой %%(t)syntax enable%%. Т.е. я хочу активировать подсветку синтаксиса и установить цветовую схему. Что доступно "из коробки"? Конечно, мы можем дополнительно загрузить сотни. Я переключусь в командную строку, введя %%(t):%% и %%(t)colorscheme%%. Теперь просто нажму Tab, чтобы найти нужную схему с помощью автоподстановки. Просто посмотрим... как насчет %%(t)desert%%? Итак я введу %%(t)colorscheme desert%%. Давайте сохраним это. (9:30) Введем %%(t):w%% - чтобы сохранить файл. И теперь обратим внимание на еще одну важную вещь. Мы обновили этот конфигурационный файл, но не прочитали его ("source it"). Итак, введем %%(t):so%%. Если я ввожу процент, это просто значит текущий файл. Это, кстати, можно делать не только в Vim. Давайте выполним файл %%(t).vimrc%%. Сейчас вы можете увидеть новую подсветку синтаксиса. По мне, так она выглядит не очень хорошо, но мы вернемся к этому позже. Давайте отредактируем %%(t)practice.php%%. (10:00) Да.. опять же, какая-то уродливая подсветка синтаксиса, но это намного лучше, чем то, что было раньше. Давайте введем %%(t)i%%, чтобы перейти в режим вставки. %%(t)class foobar%%, Escape и это переводит меня обратно в нормальный режим. И важно, делать именно так, потому что, если я введу %%(t)i%% опять, то перейду в режим вставки. Если я хочу подняться наверх... %%(t)k%% вставляет букву %%(t)k%%. Итак, я хочу переключиться в нормальный режим, где %%(t)k%% фактически означает "наверх". (10:30) Escape, %%(t)k%% и теперь я наверху. Но, что если мы просто хотим удалить текст? К примеру, вернемся в режим вставки. Нажимаю клавишу Delete и ничего не происходит. Это еще одна вещь, которая сбивает людей с толку. Это потому, что, в Vim нет многих настроек по умолчанию. Все, что вам нужно сделать, это подготовить ваш файл %%(t).vimrc%% однажды и после этого можно работать. В этом смысле, да... Странно, что кнопка Backspace не работает, как я привык. Поэтому давайте добавим некоторые настройки. (11:00) Помните, что для любой задачи просто используйте Google, чтобы найти какие-то настройки, которые можно использовать. Но я уже знаю, какие мне нужны. Итак, введу %%(t):e .vimrc%%... Обратите внимание, что в этом случае он не позволит редактировать мне этот файл, потому что мы не сохранили его. Ладно, %%(t):w%%, чтобы сохранить файл. И теперь снова, я могу ввести это вручную или я могу нажать стрелку вверх и выбрать из моих предыдущих команд. Теперь мы переключились. Я хочу добавить настройку %%(t)set backspace%%. Мы установим это для работы с отступами, концом строки и началом строки. (11:30) Таким образом, это будет работать с разрывом строки и подобными вещами. Итак, %%(t):w%%, чтобы сохранить файл. Прочитаем его (source)... И теперь, если мы вернемся к нашему файлу %%(t)practice%% и я введу %%(t)i%%, Backspace, вы можете видеть, что происходит то же самое что и в любом другом редакторе. Именно так это работает в Vim. Вы ищете что-то, что кажется неудобным, что не работает, как вы хотите. Добавляете настройку, и продолжаете работать. (12:00) Потом, спустя месяц или около того, у вас будет редактор, настроенный именно под ваш вкус. В этом случае, я ввожу Еscape, чтобы перейти в нормальный режим. И %%(t)u%%, чтобы отменить. Разумно, верно? Это язык. %%(t)u%%, чтобы отменить (undo), %%(t)w%% — записать (write), %%(t)q%% — выйти (quit), %%(t)e%% — править (edit). Есть и другие команды. Как вы обнаружите, строчная %%(t)v%% и заглавная %%(t)V%% - это разные команды. Вот здесь можно поломать голову.. Но каждый раз делайте только один шаг, изучайте несколько новых вещей в день и вы продвинетесь очень быстро.