Чем особенно хорош Vim/Neovim? Тем, что твой инструментарий — это не только редактор (который сам по себе сильно расширяем плагинами и имеет богатый базовый функционал и очень гибок в области кастомизации), но и всё ваше рабочее окружение, со всем юникс-вейным прилагающимся инструментарием из gnu/coreutils и не только. Можно не уходя из редактора взять любую программу или интерпретатор ЯП и использовать его прямо в редакторе.

VIM *
Свободный текстовый редактор
История Vim и руководство по его эффективному использованию
Первая часть статьи отводится на знакомство с историей Vim как редактора и автор рассказывает ряд интересных фактов и о возможностях Vim. Во второй части перевода будут сконцентрированы все фишки и лайфхаки, которыми Джо решил поделиться с аудиторией, там повествование, как таковое, затухает и остается лишь набор руководств к действию. Так как оригинал текста обладает совершенно неприемлемыми габаритами, мы разделили эту историю на две примерно равные по размерам статьи. Сегодня — первая из двух публикаций. Приятного чтения.
Эта статья основана на исследовании истории Vim и прочтении его руководства пользователя от корки до корки. Надеюсь, эти заметки помогут вам открыть (или переоткрыть?) для себя основные функциональные возможности этого редактора, а также позволят отказаться от использования предупакованных файлов vimrc и более вдумчиво использовать плагины.

Список литературы
Чтобы выйти за границы привычных тем, я бы порекомендовал обзавестись бумажной копией этого руководства и емким карманным справочником. Я не смог найти печатную копию руководства пользователя для Vim, так что в итоге просто распечатал идущий вместе с редактором PDF-файл с помощью printme1.com. Он идет вместе с софтом в
$VIMRUNTIME/doc/usr_??
. В качестве удобного списка команд могу посоветовать справочник «Vi and Vim Editors Pocket».Содержание
- История
- Иерархия конфигурации
- Сторонние плагины
- Бекапы и откаты
- Include и path
- Редактирование и компиляция цикла
- Диффы и патчи
- Буфер ввода / вывода
- Типы файлов
- Не забывайте про мышь
- Разное
История
Рождение vi
Команды и функции Vi существуют уже более пятидесяти лет, начиная с редактора QED. Вот его таймлайн:
Делаем из Vim-а конфетку
Вы под давлением коллег или сокурсников из более успевающих групп решились на отчаянный шаг, способный разделить вашу жизнь на период "до" и "после" (прошли vimtutor), и теперь не знаете что делать с вашими новообретёнными способностями? А может вы всё ещё сидите в какой-нибудь IDE и в ус не дуете зачем вам "эти ваши программистские блокноты" и "какой-то там Vim"? Тогда присаживайтесь поудобнее и налейте себе лимонад, сейчас я вам всё по полочкам разложу.
Поддержка 24-bit цветов в терминале в связке ssh + tmux + neovim

На windows я всегда использовал SecureCRT для работы по ssh и горя не знал. Но тут мне в голову стукнуло, что надо попробовать 24-битный терминал и поработать по ssh, используя красивую тему для vim на удаленном сервере.
Минимум один трюк Vim, про который вы не знали
Вот говорят о красоте модального редактирования и текстовых объектах, но мне кажется, что суть Vim не в этом. Vim — это лоскутное одеяло из подсистем, под завязку забитых дополнительными инструментами. Только в обычном режиме редактирования более сотни комбинаций клавиш! Такая плотность инструментария в значительной степени объясняет, почему Vim настолько полезен. Если «показать все теги для ключевого слова» — это просто
g]
, то этой командой будут пользоваться гораздо чаще.В системах с недостатком открытости приходится полагаться на руководства. Но для Vim их не так уж много. Есть статьи для новичков, такие как
ciw
(не путать с CIA, мануалом ЦРУ по Vim) и тому подобное. И есть статьи экспертов, которые погружаются в подсистемы. Но никто на самом деле не говорит об этих особых трюках, которые заставляют воскликнуть: чёрт побери, как мне это было нужно в течение последних шести лет!Современные IDE. Однозначно D, в какой-то степени E и уж точно не I
Работаю я, значит, над своей исследовательской о сложностях поддержки легаси, и заметил один очевидный момент, который наглухо упускал из виду.
У пользователей IDE, и разработчиков IDE есть проблемы с осознанным пониманием своих инструментов. Используются интуитивно и как попало. На удивление (приятное), такое использование почти не вступает в конфликт с незнанием, хоть и порождает соответствующие холивары на форумах.
Сейчас разберем, как обстоят дела в разработке с инструментами, что не так с понятием "IDE", и какие инструменты уже должны были появиться, но пока не были разработаны.
Как я рисую иллюстрации для конспектов по математике в Inkscape
Некоторые примеры
Во-первых, позвольте показать примеры некоторых рисунков. Они сделаны для комплексного анализа, дифференциальной геометрии, электродинамики и моей бакалаврской диссертации по эллиптическим кривым. Я рисовал их во время лекции — за исключением, конечно, моей диссертации — используя Inkscape, поэтому давайте начнём с этого.

Как я пишу конспекты по математике на LaTeX в Vim
Я начал использовать LaTeX для конспектирования во втором семестре курса математики, и с тех пор написал более 1700 страниц. Вот несколько примеров, как выглядит конспект:

Антипаттерны Vim
Как Vim украл моё сердце

Цифровой словарь от А до Я
Одной из самых полезных программ на ПК и смартфоне в моем понимании является электронный словарь. В те стародавние времена, когда я учил иностранный язык, каждое слово приходилось искать в бумажном словаре. Эту тривиальную операцию я проделывал сотни раз, а некоторые зловредные слова приходилось смотреть снова и снова, так как я успевал забыть их значение. Как это было обидно! То ли дело сейчас, вжух и перевод перед глазами на экране монитора. История поиска, на случай, если искомое слово не перешло из области кратковременной памяти в долгосрочную.
Давайте своими силами создадим электронный словарь для программ StarDict / GoldenDict. Для этого может понадобится много, или мало человеко-часов, в зависимости от качества исходного материала.
Vim: поиск по документации на Javascript
Обычно я работаю в Kate или Geany. Но иногда, как и всем людям, мне хочется освоить Vim. И каждый раз, примерно на второй минуте «освоения» возникает какой-нибудь совершенно дурацкий вопрос. Например, почему при нажатии стрелок (или клавиш jk) курсор скачет сразу через все строки абзаца?
Как бы я ни старался свои вопросы формулировать, поиск каждый раз выдаёт мне примерно одни и те же сто сайтов с заголовками вроде «100 самых полезных команд Vim». И какой бы сайт я ни выбрал, на нём всегда не будет хватать именно той «команды», которая мне нужна как раз сейчас.
Я подумал, как бы найти не сто, а вообще все команды Вим. И нашёл-таки страничку в сети, которая так и называлась: «Все команды Vim». И там действительно был очень большой список — штук шестьсот слов. Но не было указано, что эти команды делают, — просто список терминов. Меня так разозлила эта шутка, что я решил, наконец, почитать документацию и раз и навсегда составить свой собственный список «всех команд Vim». Результат на экране. Подробности ниже.
Vim как эзотерический язык для редактирования текста
Мне в голову пришла аналогия, которая возможно несколько ближе к пониманию возможностей vim. Либо же это можно считать еще одной гранью функционала vim. Прошу простить за очередное повторение всеми измученной темы, но меня не оставляют равнодушными споры об этом «редакторе». Возможно среди вас тоже есть такие люди.
Ближайшие события
Vim спустя 15 лет
Мои предыдущие посты об использовании Vim (1, 2) читатели приняли хорошо, и пришло время обновления. В Vim 8 появилось много очень нужной функциональности, а новые сайты сообществ вроде VimAwesome облегчили поиск и выбор плагинов. В последнее время я много работаю с Vim и организовал рабочий процесс исходя из максимальной эффективности, вот снимок моей текущей работы.
Вкратце:
- FZF и FZF.vim — для поиска файлов.
- ack.vim и
ag
— для поиска файлов. - Vim + tmux — ключ к победе.
- Благодаря асинхронности ALE — это новый Syntastic.
- …И многое другое. Об этом ниже.
Киллерфича в vim — это режимы? Серьёзно?
Недавно вышла статья, которую вы наверняка читали, про то, что vim — хорош, а IDE — так себе, скорость набора текста не та.
Напомню: главный посыл той статьи был в том, что главная киллер-фича вима — это режимы, благодаря которой всё остальное не важно. При этом автор согласился с тем, что в IntellijIdea и других IDE есть хоткеи и т.д., которыми вполне можно пользоваться. Но режимов то нет, поэтому вим.
Далее автор предлагает для перемещения по словам вместо ctrl-стрелочка
использовать последовательность Esc
, e
и потом возвращаться в режим редактирования i
. Всё это потому, что неудобно удерживать ctrl
.
Я знаю, что статьи, рассматривающие vim в невыгодном свете, активно минусуют, но я должен выразить свою позицию.
Немного о VIM и IDE
Киллер фича Vim
Если открыть вимом файл, перевести курсор в нужное место и начать печатать, то с текстом на экране будет происходить всё что угодно, кроме того, что пользователю хотелось сделать. Кратковременный приступ паники, перемешанной со злостью, пройдёт достаточно быстро, ведь файл пока никто не сохранял, так что можно просто отключить питание, включить компьютер обратно и погуглить.
Гуглим, выясняется, что для превращения вима в нормальный редактор нужно нажать i. Только сохранить поредактированный текст нельзя, перед этим надо несколько раз нажать эскейп, а потом набрать :w. А, чтобы его закрыть, нужно нажать эскейп, а потом набрать :q. Тяжёлое наследие прошлого. Ну, зато вим есть везде.
Но в какой-нибудь из статей, рассказывающей, как провести 5 минут в виме и остаться в живых, обязательно будет написано, что вим — лучший текстовый редактор в мире. И ещё выяснится, что люди в нём программируют. То есть, натурально, пишут код. То есть, на дворе 21 век, в любой момент можно скачать Visual Studio, Intellij Idea или, прости господи, Eclipse, а они пишут код в виме. Добровольно.
Разработка на скорости 450 слов в минуту

Это всего лишь я, и мои коллеги гарантируют вам, что я обычно не опасен. Я программист в офисе компании Vincit в Тампере (Финляндия). И ещё я слепой. В этой статье хочу немного рассказать, как я работаю.
Почему я до сих пор использую Vim?
Могу с уверенностью сказать, что Vim не плохой редактор и очень расширяемый, но это не повод говорить о том, что Vim подходит всем, так как это вопрос вкуса. При использовании Atom или Code у меня часто возникают зависания, бывает они длятся по нескольких минут.
Как вы думаете, сколько памяти нужно редактору, чтобы открыть следующий C файл?
#include <stdio.h>
int main() {
printf("Hello, world!\n");
}
Stack Overflow вывел из Vim уже больше миллиона пользователей

Ты не одинок, jclancy. За пять лет, которые прошли, с тех пор как был опубликован этот пост, больше миллиона других разработчиков постигла та же участь — они застряли в Vim и не могли выбраться без посторонней помощи. Не зря в IT сообществе столько шуток о том, как трудно найти выход из этого редактора.