HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p>За 16 уроков мы рассмотрим всё, что нужно для старта работы с Vim:</p>
1 <p>За 16 уроков мы рассмотрим всё, что нужно для старта работы с Vim:</p>
2 <ul><li>историю текстовых редакторов;</li>
2 <ul><li>историю текстовых редакторов;</li>
3 <li>работу в режиме вставки, в командном режиме, режиме командной строки, визуальном режиме;</li>
3 <li>работу в режиме вставки, в командном режиме, режиме командной строки, визуальном режиме;</li>
4 <li>использование регулярных выражений и создание макросов;</li>
4 <li>использование регулярных выражений и создание макросов;</li>
5 <li>плагины, пакетные менеджеры плагинов;</li>
5 <li>плагины, пакетные менеджеры плагинов;</li>
6 <li>конфигурацию Vim, работу с файлом .vimrc (в частности, на примере файла .vimrc автора курса);</li>
6 <li>конфигурацию Vim, работу с файлом .vimrc (в частности, на примере файла .vimrc автора курса);</li>
7 <li>работу с Neovim;</li>
7 <li>работу с Neovim;</li>
8 <li>настройку автодополнения.</li>
8 <li>настройку автодополнения.</li>
9 </ul><p>Сегодня будет три видеоурока. Подробно разберём плагины, .vimrc и NERDTree.</p>
9 </ul><p>Сегодня будет три видеоурока. Подробно разберём плагины, .vimrc и NERDTree.</p>
10 <p>Мы публикуем видеоуроки и текстовые расшифровки - вы можете смотреть или читать теорию.</p>
10 <p>Мы публикуем видеоуроки и текстовые расшифровки - вы можете смотреть или читать теорию.</p>
11 <p><strong>Автор курса</strong></p>
11 <p><strong>Автор курса</strong></p>
12 <h3>Паша Калашников</h3>
12 <h3>Паша Калашников</h3>
13 <p>Тимлид в Purple Magic, продюсер видео в Red Magic, соведущий IT Way Podcast, автор курсов по этому вашему программированию. Любит Ruby.</p>
13 <p>Тимлид в Purple Magic, продюсер видео в Red Magic, соведущий IT Way Podcast, автор курсов по этому вашему программированию. Любит Ruby.</p>
14 <p>Поговорим об инфраструктуре Vim: разберём, что такое плагины, пакетные менеджеры, как их настраивать, как использовать готовые сборки для разных языков программирования, и, наконец, познакомимся с Neovim.</p>
14 <p>Поговорим об инфраструктуре Vim: разберём, что такое плагины, пакетные менеджеры, как их настраивать, как использовать готовые сборки для разных языков программирования, и, наконец, познакомимся с Neovim.</p>
15 <p>Плагины - это те самые инструменты, которые позволяют Vim не отставать от современных IDE, хоть и в своём стиле. Сразу посоветуем отличный сервис для их поиска -<a>vimawesome.com</a>. Плагины там разделены по языкам программирования, стекам технологий, фичам и так далее.</p>
15 <p>Плагины - это те самые инструменты, которые позволяют Vim не отставать от современных IDE, хоть и в своём стиле. Сразу посоветуем отличный сервис для их поиска -<a>vimawesome.com</a>. Плагины там разделены по языкам программирования, стекам технологий, фичам и так далее.</p>
16 <p>После урока вы можете перейти на сайт и попробовать плагины для своего окружения. Мы же начнём с самых общих принципов работы с ними, подробно остановившись на парочке основных.</p>
16 <p>После урока вы можете перейти на сайт и попробовать плагины для своего окружения. Мы же начнём с самых общих принципов работы с ними, подробно остановившись на парочке основных.</p>
17 <p>Пакетные менеджеры помогают устанавливать, обновлять и удалять программы. Если вы опытный пользователь Unix-подобных систем, вы точно с ними знакомы. В случае с Vim пакетными менеджерами называют плагины, которые позволяют легко устанавливать и удалять другие плагины.</p>
17 <p>Пакетные менеджеры помогают устанавливать, обновлять и удалять программы. Если вы опытный пользователь Unix-подобных систем, вы точно с ними знакомы. В случае с Vim пакетными менеджерами называют плагины, которые позволяют легко устанавливать и удалять другие плагины.</p>
18 <p>Большинство пакетных менеджеров просто скачивают плагины с GitHub и выполняют установочные скрипты, которые в них заложены. Управление версиями в данном случае - не самая сильная их сторона, потому что конфликты версий в инфраструктуре Vim-плагинов очень редки.</p>
18 <p>Большинство пакетных менеджеров просто скачивают плагины с GitHub и выполняют установочные скрипты, которые в них заложены. Управление версиями в данном случае - не самая сильная их сторона, потому что конфликты версий в инфраструктуре Vim-плагинов очень редки.</p>
19 <p>Самый популярный пакетный менеджер для Vim - Vundle. Рассмотрим его более современный аналог под названием<a>vim-plug</a>. У него есть несколько преимуществ. Во-первых, он лучше совмещается с Neovim. Во-вторых, он более отзывчив к пользователю, то есть лучше описывает ошибки, которые могут возникнуть в процессе установки. Приведём один пример его использования.</p>
19 <p>Самый популярный пакетный менеджер для Vim - Vundle. Рассмотрим его более современный аналог под названием<a>vim-plug</a>. У него есть несколько преимуществ. Во-первых, он лучше совмещается с Neovim. Во-вторых, он более отзывчив к пользователю, то есть лучше описывает ошибки, которые могут возникнуть в процессе установки. Приведём один пример его использования.</p>
20 <p>Сначала установим vim-plug. В его Readme на GitHub есть подробная инструкция по установке в разных операционных системах:</p>
20 <p>Сначала установим vim-plug. В его Readme на GitHub есть подробная инструкция по установке в разных операционных системах:</p>
21 <em>Скриншот: Skillbox Media</em><p>Установка не всегда проходит без проблем; если что-то пошло не так, перейдите в Issues репозитория и поищите описание ситуации, похожей на вашу:</p>
21 <em>Скриншот: Skillbox Media</em><p>Установка не всегда проходит без проблем; если что-то пошло не так, перейдите в Issues репозитория и поищите описание ситуации, похожей на вашу:</p>
22 <em>Скриншот: Skillbox Media</em><p>Скорее всего, нечто подобное уже с кем-то случалось - и благополучно разрешилось.</p>
22 <em>Скриншот: Skillbox Media</em><p>Скорее всего, нечто подобное уже с кем-то случалось - и благополучно разрешилось.</p>
23 <p>А мы тем временем открываем файл .vimrc:</p>
23 <p>А мы тем временем открываем файл .vimrc:</p>
24 <em>Скриншот: Skillbox Media</em><p>В Linux-системах он по умолчанию находится в домашней директории. Загуглите, где он в вашей ОС. Это несложно.</p>
24 <em>Скриншот: Skillbox Media</em><p>В Linux-системах он по умолчанию находится в домашней директории. Загуглите, где он в вашей ОС. Это несложно.</p>
25 <p>В файле вводим строку call plug#begin ():</p>
25 <p>В файле вводим строку call plug#begin ():</p>
26 <em>Скриншот: Skillbox Media</em><p>Данная команда означает начало блока, который исполнится плагином vim-plug. Мы хотим установить плагин vim-sensible. Вводим название в поиске на сервисе<a>vimawesome.com</a>. Переходим по ссылке на GitHub. Берём из ссылки имя пользователя GitHub и название репозитория:</p>
26 <em>Скриншот: Skillbox Media</em><p>Данная команда означает начало блока, который исполнится плагином vim-plug. Мы хотим установить плагин vim-sensible. Вводим название в поиске на сервисе<a>vimawesome.com</a>. Переходим по ссылке на GitHub. Берём из ссылки имя пользователя GitHub и название репозитория:</p>
27 <em>Скриншот: Skillbox Media</em><p>Вызываем в .vimrc метод Plug и набираем в кавычках через слеш имя пользователя и название репозитория:</p>
27 <em>Скриншот: Skillbox Media</em><p>Вызываем в .vimrc метод Plug и набираем в кавычках через слеш имя пользователя и название репозитория:</p>
28 <em>Скриншот: Skillbox Media</em><p>Вводим команду : PlugInstall. Видим статус установки:</p>
28 <em>Скриншот: Skillbox Media</em><p>Вводим команду : PlugInstall. Видим статус установки:</p>
29 <em>Скриншот: Skillbox Media</em><p>Плагин установлен!</p>
29 <em>Скриншот: Skillbox Media</em><p>Плагин установлен!</p>
30 <p>По такому же принципу устанавливают практически все плагины в Vim. Конечно, есть и те, что не поддерживают установку через vim-plug, Vundle или иные пакетные менеджеры. Но с годами их становится всё меньше: люди реже пользуются плагинами, которые нельзя установить легко.</p>
30 <p>По такому же принципу устанавливают практически все плагины в Vim. Конечно, есть и те, что не поддерживают установку через vim-plug, Vundle или иные пакетные менеджеры. Но с годами их становится всё меньше: люди реже пользуются плагинами, которые нельзя установить легко.</p>
31 <p>Пройдёмся по самым часто используемым плагинам, которые может использовать каждый специалист вне зависимости от стека технологий.</p>
31 <p>Пройдёмся по самым часто используемым плагинам, которые может использовать каждый специалист вне зависимости от стека технологий.</p>
32 <p><strong>vim-sensible.</strong>Плагин vim-sensible применяет общепринятые настройки Vim. Также он хорош, если вам нужно копаться на сервере в Vim, но вы там не один. Позже, если настройки этого плагина вас перестанут устраивать, можно его удалить.</p>
32 <p><strong>vim-sensible.</strong>Плагин vim-sensible применяет общепринятые настройки Vim. Также он хорош, если вам нужно копаться на сервере в Vim, но вы там не один. Позже, если настройки этого плагина вас перестанут устраивать, можно его удалить.</p>
33 <p><strong>vim-surround.</strong>Помогает легко работать с парными символами (скобки или кавычки). Например, с его помощью вы можете заменить любые парные символы на другие. Допустим, в этом коде нам нужно использовать интерполяцию в строке. В Ruby принято строки без интерполяции обрамлять в одинарные кавычки, а с интерполяцией - в двойные. Vim-surround позволяет, находясь внутри блока, нажать<strong>cs ‘ ‘’.</strong>Сначала идёт символ одинарных кавычек - их нужно заменить, потом символ двойных - на них нужно заменить:</p>
33 <p><strong>vim-surround.</strong>Помогает легко работать с парными символами (скобки или кавычки). Например, с его помощью вы можете заменить любые парные символы на другие. Допустим, в этом коде нам нужно использовать интерполяцию в строке. В Ruby принято строки без интерполяции обрамлять в одинарные кавычки, а с интерполяцией - в двойные. Vim-surround позволяет, находясь внутри блока, нажать<strong>cs ‘ ‘’.</strong>Сначала идёт символ одинарных кавычек - их нужно заменить, потом символ двойных - на них нужно заменить:</p>
34 <em>Скриншот: Skillbox Media</em><p>Замена кавычек произошла, теперь можем легко использовать интерполяцию:</p>
34 <em>Скриншот: Skillbox Media</em><p>Замена кавычек произошла, теперь можем легко использовать интерполяцию:</p>
35 <em>Скриншот: Skillbox Media</em><p><strong>NERDTree</strong> - плагин для работы с деревом файлов. Мы подробно рассмотрим его в следующих уроках.</p>
35 <em>Скриншот: Skillbox Media</em><p><strong>NERDTree</strong> - плагин для работы с деревом файлов. Мы подробно рассмотрим его в следующих уроках.</p>
36 <p><strong>vim-commentary</strong> - плагин для комментирования кода в разных языках программирования.</p>
36 <p><strong>vim-commentary</strong> - плагин для комментирования кода в разных языках программирования.</p>
37 <p><strong>FZF</strong>- плагин для нечёткого поиска по проекту. Ищет не только по коду и файлам, но и по коммитам, по буферам и так далее.</p>
37 <p><strong>FZF</strong>- плагин для нечёткого поиска по проекту. Ищет не только по коду и файлам, но и по коммитам, по буферам и так далее.</p>
38 <p><strong>vim-airline</strong>- строка статуса внизу экрана. Другие плагины любят использовать эту строку для отображения информации. Да и в целом ориентироваться по файлу с помощью этой строки становится легче.</p>
38 <p><strong>vim-airline</strong>- строка статуса внизу экрана. Другие плагины любят использовать эту строку для отображения информации. Да и в целом ориентироваться по файлу с помощью этой строки становится легче.</p>
39 <p>Остальные плагины и готовые сборки для языков программирования мы обсудим на следующих уроках.</p>
39 <p>Остальные плагины и готовые сборки для языков программирования мы обсудим на следующих уроках.</p>
40 <p><strong>.vimrc</strong> - по умолчанию основной файл, в котором хранятся все настройки вашего редактора. Как правило, в нём пишут команды Vim, которые можно вызывать в режиме командной строки. То есть, по сути, настройка Vim через .vimrc - это выполнение всех команд, которые написаны в .vimrc. Исключение составляют команды, которые относятся к конкретным плагинам, - например, vim-plug (см. предыдущий урок).</p>
40 <p><strong>.vimrc</strong> - по умолчанию основной файл, в котором хранятся все настройки вашего редактора. Как правило, в нём пишут команды Vim, которые можно вызывать в режиме командной строки. То есть, по сути, настройка Vim через .vimrc - это выполнение всех команд, которые написаны в .vimrc. Исключение составляют команды, которые относятся к конкретным плагинам, - например, vim-plug (см. предыдущий урок).</p>
41 <p>Попробуем с вами основные настройки, которые можно делать в .vimrc.</p>
41 <p>Попробуем с вами основные настройки, которые можно делать в .vimrc.</p>
42 <p><strong>Команда</strong><strong>: set hlsearch</strong>изменяет настройки подсветки поиска в редакторе: после её ввода любой поиск будет подсвечиваться до момента закрытия редактора. Добавим эту команду в .vimrc - и теперь эта настройка будет включаться в редакторе по умолчанию:</p>
42 <p><strong>Команда</strong><strong>: set hlsearch</strong>изменяет настройки подсветки поиска в редакторе: после её ввода любой поиск будет подсвечиваться до момента закрытия редактора. Добавим эту команду в .vimrc - и теперь эта настройка будет включаться в редакторе по умолчанию:</p>
43 <em>Скриншот: Skillbox Media</em><p>Проверяем! Закрываем редактор. Открываем заново и выполняем поиск. Работает!</p>
43 <em>Скриншот: Skillbox Media</em><p>Проверяем! Закрываем редактор. Открываем заново и выполняем поиск. Работает!</p>
44 <em>Скриншот: Skillbox Media</em><p>В предыдущих уроках<a>мы уже сетовали</a>, что переход между окнами в Vim довольно сложный: комбинация<strong>Ctrl + w и направление</strong>. Переназначим этот переход на просто<strong>Ctrl и направление</strong>. Назначим другой набор клавиш для перехода между окнами. Как нам это сделать?</p>
44 <em>Скриншот: Skillbox Media</em><p>В предыдущих уроках<a>мы уже сетовали</a>, что переход между окнами в Vim довольно сложный: комбинация<strong>Ctrl + w и направление</strong>. Переназначим этот переход на просто<strong>Ctrl и направление</strong>. Назначим другой набор клавиш для перехода между окнами. Как нам это сделать?</p>
45 <p>В режиме командной строки есset есть команда для перехода между окнами : wincmd. В качестве аргумента она принимает направление перехода. Воспользуемся этой командой для настройки в нашем .vimrc:</p>
45 <p>В режиме командной строки есset есть команда для перехода между окнами : wincmd. В качестве аргумента она принимает направление перехода. Воспользуемся этой командой для настройки в нашем .vimrc:</p>
46 <em>Скриншот: Skillbox Media</em><p>Для назначения клавиш в Vim существует команда map, которая принимает два аргумента: коллекция клавиш, которые надо нажать, и действие, которое нужно выполнить:</p>
46 <em>Скриншот: Skillbox Media</em><p>Для назначения клавиш в Vim существует команда map, которая принимает два аргумента: коллекция клавиш, которые надо нажать, и действие, которое нужно выполнить:</p>
47 <em>Скриншот: Skillbox Media</em><p>Вы можете назначить комбинацию клавиш отдельно для каждого режима:</p>
47 <em>Скриншот: Skillbox Media</em><p>Вы можете назначить комбинацию клавиш отдельно для каждого режима:</p>
48 <ul><li><strong>nmap</strong>(normal mode) назначается только для командного режима;</li>
48 <ul><li><strong>nmap</strong>(normal mode) назначается только для командного режима;</li>
49 <li><strong>imap</strong>(insert mode) - для режима ввода;</li>
49 <li><strong>imap</strong>(insert mode) - для режима ввода;</li>
50 <li><strong>vmap</strong>(visual mode) - для визуального режима;</li>
50 <li><strong>vmap</strong>(visual mode) - для визуального режима;</li>
51 <li><strong>smap</strong>(select mode) - для режима выделения;</li>
51 <li><strong>smap</strong>(select mode) - для режима выделения;</li>
52 <li><strong>cmap</strong>(command-line mode) - для режима командной строки.</li>
52 <li><strong>cmap</strong>(command-line mode) - для режима командной строки.</li>
53 </ul><p>Мы хотим назначить переход между окнами только в командном режиме, поэтому вводим nmap &lt;C-k&gt;: wincmd k&lt;CR&gt;, где nmap - назначение для командного режима, а &lt;C-k&gt; -комбинация клавиш<strong>Ctrl + k</strong>.</p>
53 </ul><p>Мы хотим назначить переход между окнами только в командном режиме, поэтому вводим nmap &lt;C-k&gt;: wincmd k&lt;CR&gt;, где nmap - назначение для командного режима, а &lt;C-k&gt; -комбинация клавиш<strong>Ctrl + k</strong>.</p>
54 <em>Скриншот: Skillbox Media</em><p>Далее идёт команда, которая вызывается комбинацией клавиш : wincmd k&lt;CR&gt;. &lt;CR&gt; - это по умолчанию обозначение клавиши<strong>Enter</strong>. Она тут нужна, потому что после ввода команды нужно нажать<strong>Enter</strong>. Пробуем. Перезапускаем редактор. Открываем два окна. Нажимаем<strong>Ctrl + k</strong>. Работает!</p>
54 <em>Скриншот: Skillbox Media</em><p>Далее идёт команда, которая вызывается комбинацией клавиш : wincmd k&lt;CR&gt;. &lt;CR&gt; - это по умолчанию обозначение клавиши<strong>Enter</strong>. Она тут нужна, потому что после ввода команды нужно нажать<strong>Enter</strong>. Пробуем. Перезапускаем редактор. Открываем два окна. Нажимаем<strong>Ctrl + k</strong>. Работает!</p>
55 <em>Скриншот: Skillbox Media</em><p>Но мы видим, что команда : wincmd k отобразилась внизу. Это не обязательно - ведь нам не хочется, чтобы постоянно висело напоминание о переходе между окнами. Возвращаемся в .vimrc и добавляем аргумент &lt;silent&gt;:</p>
55 <em>Скриншот: Skillbox Media</em><p>Но мы видим, что команда : wincmd k отобразилась внизу. Это не обязательно - ведь нам не хочется, чтобы постоянно висело напоминание о переходе между окнами. Возвращаемся в .vimrc и добавляем аргумент &lt;silent&gt;:</p>
56 <em>Скриншот: Skillbox Media</em><p>Этот аргумент убирает вывод команды, которая исполняется в редакторе. Пробуем:</p>
56 <em>Скриншот: Skillbox Media</em><p>Этот аргумент убирает вывод команды, которая исполняется в редакторе. Пробуем:</p>
57 <em>Скриншот: Skillbox Media</em><p>Переход работает, команда не отображается. Остаётся только повторить эту настройку для переходов в другие стороны.</p>
57 <em>Скриншот: Skillbox Media</em><p>Переход работает, команда не отображается. Остаётся только повторить эту настройку для переходов в другие стороны.</p>
58 <p>Теперь назначим комбинацию клавиш, которая будет отвечать за сохранение. Вводим: map &lt;F2&gt; &lt;Esc&gt;: w&lt;CR&gt;.</p>
58 <p>Теперь назначим комбинацию клавиш, которая будет отвечать за сохранение. Вводим: map &lt;F2&gt; &lt;Esc&gt;: w&lt;CR&gt;.</p>
59 <em>Скриншот: Skillbox Media</em><p>Нажатие<strong>Esc</strong>по умолчанию будет вызывать переход в командный режим, после чего нужно будет ввести : w и нажать<strong>Enter</strong>. Делаем аналогичные назначения на закрытие без сохранения:</p>
59 <em>Скриншот: Skillbox Media</em><p>Нажатие<strong>Esc</strong>по умолчанию будет вызывать переход в командный режим, после чего нужно будет ввести : w и нажать<strong>Enter</strong>. Делаем аналогичные назначения на закрытие без сохранения:</p>
60 <em>Скриншот: Skillbox Media</em><p>И на сохранение с закрытием:</p>
60 <em>Скриншот: Skillbox Media</em><p>И на сохранение с закрытием:</p>
61 <em>Скриншот: Skillbox Media</em><p>Отображение номеров строк в Vim можно написать как set nu и как set number:</p>
61 <em>Скриншот: Skillbox Media</em><p>Отображение номеров строк в Vim можно написать как set nu и как set number:</p>
62 <em>Скриншот: Skillbox Media</em><p>Следующая настройка, set nocompatible, отключает совместимость Vim с Vi:</p>
62 <em>Скриншот: Skillbox Media</em><p>Следующая настройка, set nocompatible, отключает совместимость Vim с Vi:</p>
63 <em>Скриншот: Skillbox Media</em><p>Этого требуют многие современные плагины, потому что такая совместимость приводит к непредсказуемым последствиям в их работе. Дело в том, что поддержкой совместимости именно с Vi практически никто не занимается. Советуем добавить эту настройку, если не вы не ярый фанат Vi.</p>
63 <em>Скриншот: Skillbox Media</em><p>Этого требуют многие современные плагины, потому что такая совместимость приводит к непредсказуемым последствиям в их работе. Дело в том, что поддержкой совместимости именно с Vi практически никто не занимается. Советуем добавить эту настройку, если не вы не ярый фанат Vi.</p>
64 <p>Следующие настройки, filetype on и syntax on, регулируют подсветку кода в Vim:</p>
64 <p>Следующие настройки, filetype on и syntax on, регулируют подсветку кода в Vim:</p>
65 <em>Скриншот: Skillbox Media</em><p>Без первой из них большинство плагинов отлично справляются сами, включая специальные функции для расширений файлов. Некоторые даже требуют её отключить - например, в наших настройках Vim написано filetype off. Советуем оставить filetype on до тех пор, пока не потребуется обратное.</p>
65 <em>Скриншот: Skillbox Media</em><p>Без первой из них большинство плагинов отлично справляются сами, включая специальные функции для расширений файлов. Некоторые даже требуют её отключить - например, в наших настройках Vim написано filetype off. Советуем оставить filetype on до тех пор, пока не потребуется обратное.</p>
66 <p>Вы также можете настроить подсветку строки и колонки, в которой находится курсор, с помощью set cursorline и set cursorcolumn:</p>
66 <p>Вы также можете настроить подсветку строки и колонки, в которой находится курсор, с помощью set cursorline и set cursorcolumn:</p>
67 <em>Скриншот: Skillbox Media</em><p>Выглядит это так:</p>
67 <em>Скриншот: Skillbox Media</em><p>Выглядит это так:</p>
68 <em>Скриншот: Skillbox Media</em><p>В нашем случае эти настройки не добавлены, потому что лишние линии отвлекают. Правда, для set cursorcolumn можно добавить назначение на клавишу<strong>F8</strong>, чтобы иногда проверять выравнивание форматировании кода. Это полезно, например, когда требуется найти потерявшуюся закрывающую скобку. Как именно включать и отключать настройки по клавише, мы обсудим на следующих уроках.</p>
68 <em>Скриншот: Skillbox Media</em><p>В нашем случае эти настройки не добавлены, потому что лишние линии отвлекают. Правда, для set cursorcolumn можно добавить назначение на клавишу<strong>F8</strong>, чтобы иногда проверять выравнивание форматировании кода. Это полезно, например, когда требуется найти потерявшуюся закрывающую скобку. Как именно включать и отключать настройки по клавише, мы обсудим на следующих уроках.</p>
69 <p>Команда set nowrap не будет переносить длинные строки:</p>
69 <p>Команда set nowrap не будет переносить длинные строки:</p>
70 <em>Скриншот: Skillbox Media</em><p>Команда set history=1000 сохраняет историю стольких команд командной строки, сколько вы укажете:</p>
70 <em>Скриншот: Skillbox Media</em><p>Команда set history=1000 сохраняет историю стольких команд командной строки, сколько вы укажете:</p>
71 <em>Скриншот: Skillbox Media</em><p>По умолчанию их 20.</p>
71 <em>Скриншот: Skillbox Media</em><p>По умолчанию их 20.</p>
72 <p>Следующая наша задача - установка цветовой схемы. Предлагаем скачать одну из самых популярных цветовых схем для Vim - Molokai:</p>
72 <p>Следующая наша задача - установка цветовой схемы. Предлагаем скачать одну из самых популярных цветовых схем для Vim - Molokai:</p>
73 <em>Скриншот: Skillbox Media</em><p>Цветовые схемы Vim хранятся в директории<strong>~/.vim/colors</strong>:</p>
73 <em>Скриншот: Skillbox Media</em><p>Цветовые схемы Vim хранятся в директории<strong>~/.vim/colors</strong>:</p>
74 <em>Скриншот: Skillbox Media</em><p>Скачаем и положим в эту папку файл цветовой схемы. В Linux это делается с помощью команды curl -o molokai.vim https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim:</p>
74 <em>Скриншот: Skillbox Media</em><p>Скачаем и положим в эту папку файл цветовой схемы. В Linux это делается с помощью команды curl -o molokai.vim https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim:</p>
75 <em>Скриншот: Skillbox Media</em><p>Переходим в наш файл .vimrc и задаём нашу цветовую схему. Закрываем и открываем Vim. Цветовая схема применилась. Красота!</p>
75 <em>Скриншот: Skillbox Media</em><p>Переходим в наш файл .vimrc и задаём нашу цветовую схему. Закрываем и открываем Vim. Цветовая схема применилась. Красота!</p>
76 <em>Скриншот: Skillbox Media</em><p>Вы можете не только скачивать готовые цветовые схемы, но и изменять их, а также создавать свои. Откроем файл, который мы скачали:</p>
76 <em>Скриншот: Skillbox Media</em><p>Вы можете не только скачивать готовые цветовые схемы, но и изменять их, а также создавать свои. Откроем файл, который мы скачали:</p>
77 <em>Скриншот: Skillbox Media</em><p>Первые строки кода - в основном про совместимость схемы с редактором. А вот со строки 47 начинается сама цветовая схема. Как видим, здесь есть знакомые каждому программисту обозначения: Boolean, Character, Constant и так далее:</p>
77 <em>Скриншот: Skillbox Media</em><p>Первые строки кода - в основном про совместимость схемы с редактором. А вот со строки 47 начинается сама цветовая схема. Как видим, здесь есть знакомые каждому программисту обозначения: Boolean, Character, Constant и так далее:</p>
78 <em>Скриншот: Skillbox Media</em><p>Поменяем, например, цвет Boolean-значений на белый. Так как у нас 256-цветный терминал, поменяем цвет именно в модуле, который отвечает за его поддержку:</p>
78 <em>Скриншот: Skillbox Media</em><p>Поменяем, например, цвет Boolean-значений на белый. Так как у нас 256-цветный терминал, поменяем цвет именно в модуле, который отвечает за его поддержку:</p>
79 <em>Скриншот: Skillbox Media</em><p>Закрываем Vim, открываем заново Ruby-файл. Вводим Boolean-значения true и false. Они стали белыми:</p>
79 <em>Скриншот: Skillbox Media</em><p>Закрываем Vim, открываем заново Ruby-файл. Вводим Boolean-значения true и false. Они стали белыми:</p>
80 <em>Скриншот: Skillbox Media</em><p>Аналогично можно поменять всю цветовую схему на ваше усмотрение. С этим можно играться несколько часов!</p>
80 <em>Скриншот: Skillbox Media</em><p>Аналогично можно поменять всю цветовую схему на ваше усмотрение. С этим можно играться несколько часов!</p>
81 <p>Теперь настроим статус-бар. Можно сразу накатить кучу фич с помощью плагина vim-airline, но для того, чтобы понимать, как его настраивать, попробуем сперва настроить бар самостоятельно. Вводим : help statusline:</p>
81 <p>Теперь настроим статус-бар. Можно сразу накатить кучу фич с помощью плагина vim-airline, но для того, чтобы понимать, как его настраивать, попробуем сперва настроить бар самостоятельно. Вводим : help statusline:</p>
82 <em>Скриншот: Skillbox Media</em><p>Разберём лишь несколько очевидных фич, которые уже реализованы в vim-airline.</p>
82 <em>Скриншот: Skillbox Media</em><p>Разберём лишь несколько очевидных фич, которые уже реализованы в vim-airline.</p>
83 <p>Открываем .vimrc-файл. Вначале нужно очистить статуслайн. Для этого пишем строку кода set statusline=:</p>
83 <p>Открываем .vimrc-файл. Вначале нужно очистить статуслайн. Для этого пишем строку кода set statusline=:</p>
84 <em>Скриншот: Skillbox Media</em><p>Теперь на следующей строке пишем set statusline += set statusline+=\ %F\ %R:</p>
84 <em>Скриншот: Skillbox Media</em><p>Теперь на следующей строке пишем set statusline += set statusline+=\ %F\ %R:</p>
85 <em>Скриншот: Skillbox Media</em><p>Параметр<strong>F</strong>здесь означает вывод полного адреса файла, а параметр<strong>R</strong>показывает RO, если файл имеет статус read-only. Далее добавим текущую ветку Git. Сперва нам нужно получить название текущей ветки. Создадим переменную внутри .vimrc: let gitBranch=system ("git rev-parse --abbrev-ref HEAD"):</p>
85 <em>Скриншот: Skillbox Media</em><p>Параметр<strong>F</strong>здесь означает вывод полного адреса файла, а параметр<strong>R</strong>показывает RO, если файл имеет статус read-only. Далее добавим текущую ветку Git. Сперва нам нужно получить название текущей ветки. Создадим переменную внутри .vimrc: let gitBranch=system ("git rev-parse --abbrev-ref HEAD"):</p>
86 <em>Скриншот: Skillbox Media</em><p>С помощью такой команды можно получить текущую ветку в Git-репозитории. Как таковой интерполяции в .vimrc нет, поэтому будем использовать лайфхак. Он помогает выполнить действия при отсутствии важных функций типа интерполяции.</p>
86 <em>Скриншот: Skillbox Media</em><p>С помощью такой команды можно получить текущую ветку в Git-репозитории. Как таковой интерполяции в .vimrc нет, поэтому будем использовать лайфхак. Он помогает выполнить действия при отсутствии важных функций типа интерполяции.</p>
87 <p>Вводим следующую строку execute "set statusline +=". gitBranch:</p>
87 <p>Вводим следующую строку execute "set statusline +=". gitBranch:</p>
88 <em>Скриншот: Skillbox Media</em><p>Проверяем! Значение из переменной gitBranch добавлены в статус-бар:</p>
88 <em>Скриншот: Skillbox Media</em><p>Проверяем! Значение из переменной gitBranch добавлены в статус-бар:</p>
89 <em>Скриншот: Skillbox Media</em><p>Теперь давайте в правую часть статус-бара добавим следующие данные: set statusline+=\ Row:\ %l\ Col:\ %c\ Percent:\ %p%%:</p>
89 <em>Скриншот: Skillbox Media</em><p>Теперь давайте в правую часть статус-бара добавим следующие данные: set statusline+=\ Row:\ %l\ Col:\ %c\ Percent:\ %p%%:</p>
90 <em>Скриншот: Skillbox Media</em><p>Здесь %l - номер строки, %c - номер столбца, а %p выводит местонахождение курсора в процентном соотношении к размеру файла.</p>
90 <em>Скриншот: Skillbox Media</em><p>Здесь %l - номер строки, %c - номер столбца, а %p выводит местонахождение курсора в процентном соотношении к размеру файла.</p>
91 <p>Впрочем, лучше действительно поставить vim-airline и использовать его. Давайте так и сделаем. Добавляем Plug 'vim-airline/vim-airline и вводим команду : PlugInstall:</p>
91 <p>Впрочем, лучше действительно поставить vim-airline и использовать его. Давайте так и сделаем. Добавляем Plug 'vim-airline/vim-airline и вводим команду : PlugInstall:</p>
92 <em>Скриншот: Skillbox Media</em><p>Всё, готово! Красивый статус-бар!</p>
92 <em>Скриншот: Skillbox Media</em><p>Всё, готово! Красивый статус-бар!</p>
93 <em>Скриншот: Skillbox Media</em><p>Это все настройки, которые мы хотели вам показать в этом уроке. Но их существует ещё множество. Можно сохранять их, переносить на разные компьютеры, устанавливать заново после обновления системы. Просто сложите нужные файлы в нужные места и перезагрузите редактор! Не во всех современные IDE есть такая возможность.</p>
93 <em>Скриншот: Skillbox Media</em><p>Это все настройки, которые мы хотели вам показать в этом уроке. Но их существует ещё множество. Можно сохранять их, переносить на разные компьютеры, устанавливать заново после обновления системы. Просто сложите нужные файлы в нужные места и перезагрузите редактор! Не во всех современные IDE есть такая возможность.</p>
94 <p>Также советуем создать собственный репозиторий для настройки рабочего окружения. Такие репозитории (их ещё называют dotfiles) обычно имеют одну команду для установки всего, что нужно, на свежую ОС. Например, у автора этого курса есть собственный репозиторий dotfiles, в котором сохранены все нужные настройки Vim. Хранятся они в файле .vimrc.</p>
94 <p>Также советуем создать собственный репозиторий для настройки рабочего окружения. Такие репозитории (их ещё называют dotfiles) обычно имеют одну команду для установки всего, что нужно, на свежую ОС. Например, у автора этого курса есть собственный репозиторий dotfiles, в котором сохранены все нужные настройки Vim. Хранятся они в файле .vimrc.</p>
95 <p>Советуем сразу добавлять в глобальный файл<strong>.gitignore</strong>файлы с расширением<strong>.swp</strong>и <strong>.swn</strong>. Это типы файлов, которые Vim создаёт, когда вы редактируете другие файлы. Чтобы случайно не закоммитить их в репозиторий, лучше сразу сделать глобальную настройку на всю систему.</p>
95 <p>Советуем сразу добавлять в глобальный файл<strong>.gitignore</strong>файлы с расширением<strong>.swp</strong>и <strong>.swn</strong>. Это типы файлов, которые Vim создаёт, когда вы редактируете другие файлы. Чтобы случайно не закоммитить их в репозиторий, лучше сразу сделать глобальную настройку на всю систему.</p>
96 <p>Добавлять эти файлы в настройки конкретного репозитория - очень плохой тон: не факт, что в вашем проекте все будут использовать Vim. Такие настройки должны быть настроены у каждого лично.</p>
96 <p>Добавлять эти файлы в настройки конкретного репозитория - очень плохой тон: не факт, что в вашем проекте все будут использовать Vim. Такие настройки должны быть настроены у каждого лично.</p>
97 <p>NERDTree - самый популярный плагин для просмотра дерева файлов в проекте и управления им. Разберём, как им пользоваться.</p>
97 <p>NERDTree - самый популярный плагин для просмотра дерева файлов в проекте и управления им. Разберём, как им пользоваться.</p>
98 <p>Устанавливаем плагин с помощью vim-plug (это займёт секунд пять):</p>
98 <p>Устанавливаем плагин с помощью vim-plug (это займёт секунд пять):</p>
99 <em>Скриншот: Skillbox Media</em><p>Перезагружаем редактор:</p>
99 <em>Скриншот: Skillbox Media</em><p>Перезагружаем редактор:</p>
100 <em>Скриншот: Skillbox Media</em><p>Чтобы открыть окно с деревом файлов, вводим команду : NERDTree:</p>
100 <em>Скриншот: Skillbox Media</em><p>Чтобы открыть окно с деревом файлов, вводим команду : NERDTree:</p>
101 <em>Скриншот: Skillbox Media</em><p>Вы можете забиндить её на любую комбинацию клавиш. Более того, существует команда : NERDTreeToggle, которая откроет NERDTree, если он закрыт, и закроет, если открыт. У нас эта команда находится на комбинации<strong>Ctrl + f</strong>:</p>
101 <em>Скриншот: Skillbox Media</em><p>Вы можете забиндить её на любую комбинацию клавиш. Более того, существует команда : NERDTreeToggle, которая откроет NERDTree, если он закрыт, и закроет, если открыт. У нас эта команда находится на комбинации<strong>Ctrl + f</strong>:</p>
102 <em>Скриншот: Skillbox Media</em><p>По умолчанию NERDTree считает корневой директорией ту, откуда запустили vim. Папки и файлы открываются нажатием на клавишу<strong>о</strong>. По умолчанию файлы откроются в окне справа, а папки развернутся. Если хотите открыть файл в новом окне, нажмите<strong>i</strong>:</p>
102 <em>Скриншот: Skillbox Media</em><p>По умолчанию NERDTree считает корневой директорией ту, откуда запустили vim. Папки и файлы открываются нажатием на клавишу<strong>о</strong>. По умолчанию файлы откроются в окне справа, а папки развернутся. Если хотите открыть файл в новом окне, нажмите<strong>i</strong>:</p>
103 <em>Скриншот: Skillbox Media</em><p>Те же правила работают при нажатии клавиши<strong>s</strong>, только разделение окон будет вертикальным. Комбинация<strong>Shift + i</strong>показывает скрытые файлы:</p>
103 <em>Скриншот: Skillbox Media</em><p>Те же правила работают при нажатии клавиши<strong>s</strong>, только разделение окон будет вертикальным. Комбинация<strong>Shift + i</strong>показывает скрытые файлы:</p>
104 <em>Скриншот: Skillbox Media</em><p>Повторное нажатие снова их скроет. Добавление файла или папки делается следующим образом: перейдите в директорию, в которой хотите их создать, нажмите<strong>ma</strong>. Вводите название файла. Если в конце названия поставить слеш, будет создана папка:</p>
104 <em>Скриншот: Skillbox Media</em><p>Повторное нажатие снова их скроет. Добавление файла или папки делается следующим образом: перейдите в директорию, в которой хотите их создать, нажмите<strong>ma</strong>. Вводите название файла. Если в конце названия поставить слеш, будет создана папка:</p>
105 <em>Скриншот: Skillbox Media</em><p>Если вы хотите создать файл в папке, которой не существует, вводите полный адрес файла, и папки будут созданы автоматически.</p>
105 <em>Скриншот: Skillbox Media</em><p>Если вы хотите создать файл в папке, которой не существует, вводите полный адрес файла, и папки будут созданы автоматически.</p>
106 <p>Чтобы изменить название или адрес файла, вводим<strong>mm</strong>и новое название:</p>
106 <p>Чтобы изменить название или адрес файла, вводим<strong>mm</strong>и новое название:</p>
107 <em>Скриншот: Skillbox Media</em><p>Для копирования вводим<strong>mc</strong>и новое название:</p>
107 <em>Скриншот: Skillbox Media</em><p>Для копирования вводим<strong>mc</strong>и новое название:</p>
108 <em>Скриншот: Skillbox Media</em><p>Для удаления файла вводим<strong>md</strong>и подтверждаем нажатием на <strong>Enter</strong>или<strong>y</strong>:</p>
108 <em>Скриншот: Skillbox Media</em><p>Для удаления файла вводим<strong>md</strong>и подтверждаем нажатием на <strong>Enter</strong>или<strong>y</strong>:</p>
109 <em>Скриншот: Skillbox Media</em><p>Важное отличие NERDTree от большинства деревьев файлов, к которым мы привыкли, - оно не обновляется автоматически. Если у вас появился или удалился файл или обновилось его имя, нужно нажать<strong>Shift + r</strong>, чтобы файлы обновились:</p>
109 <em>Скриншот: Skillbox Media</em><p>Важное отличие NERDTree от большинства деревьев файлов, к которым мы привыкли, - оно не обновляется автоматически. Если у вас появился или удалился файл или обновилось его имя, нужно нажать<strong>Shift + r</strong>, чтобы файлы обновились:</p>
110 <em>Скриншот: Skillbox Media</em><p>Вот и все основные фичи этого плагина. В следующем уроке мы поговорим о плагинах для языков программирования.</p>
110 <em>Скриншот: Skillbox Media</em><p>Вот и все основные фичи этого плагина. В следующем уроке мы поговорим о плагинах для языков программирования.</p>