- PVSM.RU - https://www.pvsm.ru -

VIM: зачем, если есть IDE, и как?

Сегодня вышел текст о том, как человек перешёл с Sublime на VIM [1]. В комментариях, как обычно это бывает, появились сообщения в духе "Зачем мне тратить время на Vim, если есть IDE, где всё работает?" (люди даже статьи [2] на эти темы пишут). Хотел внести свои пять копеек, но объём написанного плавно перевёл текст из разряда "комментарий" в разряд небольшой статьи.

В целом, всё, что ниже — это вкусовщина, конечно. Нравится вам ваша IDE (или ваш текущий инструмент), да и пожалуйста. Используйте для текущих задач то, чем вы владеете лучше всего, это аксиома эффективной работы. Но если у вас вдруг появилось немного времени на повышение вашей эффективности в целом, то попробую вас заинтересовать именно Vim'ом, сравнивая его с некой обобщенной IDE.

VIM: зачем, если есть IDE, и как? - 1

Зачем?

На мой взгляд минусы любой IDE в сравнении с VIM (или, наоборот, преимущества VIM) следующие:

  • IDE значительно тяжелее VIM (даже с плагинами); отсюда очевидный минус, что для IDE — нужна достаточно мощная рабочая станция.
  • IDE обычно поддерживает небольшое число языков/платформ. Vim же единообразно поддерживает всё на свете. В Vim я пишу на Ruby [3]/Rails [4], Python [5] (или так [6]), C, OpenCL [7] (+PyOpenCL [8]), CUDA (+PyCUDA [9]), bash, Go [10], XML, YAML, HTML, Markdown, Textile, CSS, .ini, Sage [11], Magma [12], GAP [13] (последние 3 — системы компьютерной алгебры), LaTex [14], а также редактирую специфические конфиги некоторых программ (типа X, mutt и т.п.) и редактирую почту. Конфиги и почта — это специфический пример, но, что касается языков программирования и разметки, то вам понадобится осваивать несколько IDE со своими особенностями, горячими клавишами и т.п. только потому, что IDE обычно имеет узкий круг поддерживаемых технологий. Vim (как и Emacs) умеет почти всё, и вам не надо заново привыкать к инструменту. Кроме того, создателю плагина надо сосредоточиться только на том, чтобы хорошо сделать поддержку специфических для ЯП вещей, а всё остальное Vim уже умеет. Как следствие, при переходе от одной технологии к другой (условно, сегодня пишете на Ruby, завтра на Python, а потом обратно), вы не лишитесь привычных базовых вещей, как это могло быть при смене IDE, т.к. останетесь в Vim.
  • Vim, как следствие из предыдущего, поддерживает вещи, которые никто другой не поддерживает: попробуйте найдите IDE для Magma [15]. А для Vim всё есть [12]. Объясняется это тем, что для редких вещей создавать IDE неоправданно, а написать базовый плагин для Vim не так сложно.
  • Vim может работать в режиме только консоль. Иными словами с Vim ваш компьютер может быть тонким клиентом [16]. Конкретно в моём случае есть 10-ти летний Full HD ноутбук IBM'овский. Ясно, что его уже на нормальное использование как рабочей станции для программирования не хватает ну никак: тесты на нём будут идти вечность, а упомянутые IDE будут ощутимо тормозить. В тоже время есть доступ по ssh к мощному серверу, на котором в результате и ведётся разработка: гоняются тесты, работает редактор и т.п. Кроме того, связка vim + tmux + ssh — это постоянно открытая рабочая сессия. Начал работать на одной машине (к примеру, на работе), отлогинился не закрывая редактора и т.п., продолжил из дома с ноутбука — чрезвычайно удобно. А в моём случае, так ещё и для некоторых задач основное вычислительное оборудование (несколько GPU) физически воткнуто в сервер, т.е. помимо удобства, описанного выше, быть тонким клиентом ещё и необходимость. Попробуйте-ка проделать всё это в своей IDE!
  • Сама идеология Vim — очень мощная штука в сравнении с классической IDE. Есть книга Practical Vim: Edit Text at the Speed of Thought [17], её название ("редактируй текст на скорости мышления") прекрасно отражает результат, который вы получаете на выходе. К сожалению, в этом сложно убедить человека, который не попробовал (хотя некоторые пытаются [18]). Суть в том, что эта идеология настолько заразна, что хочется перенести её с редактора на все сферы общения с компьютером: браузер [19], pdf-просмоторщик [20], почтовый клиент [21], музыкальный проигрыватель [22], файловый менеджер [23] и многое другое [24].
  • С Vim вам не понадобится мышь, если вы конечно этого захотите (если не захотите, то Vim отлично интегрирован с мышью [25]). Мне больно смотреть, как люди мучаются с тачпадами или носят с собой мышки, располагая их на разных поверхностях, при работе с ноутбуком.
  • Vim невероятно расширяем, любая ваша хотелка так и или иначе реализована или может быть реализована в Vim.
  • Ваша конфигурация для VIM вообще без труда переносится с машины на машину. Будет ли так просто с вашей IDE?

Если не хватило, вот ещё немного литературы на тему: раз [26], два [27], три [28].

И да, сообщество Vim помешано на эффективности, постоянно появляются новые крутые инструменты, направленные на ускорение, автоматизацию и облегчение того, или иного. И, если у вас ляжет к этому душа, то работа в VIM доставим вам массу удовольствия.

Как?

Не стоит сразу ставить адские комбайны из чьих-то конфигов. Да, они выглядят круто, но там часто неинтуитивные горячие клавиши, много магии и лишнего. Пройдите vimtutor [29]. Затем ставьте голый VIM (обычно он не такой голый, как кажется на первый взгляд) и работайте. Ну, ок, уговорили. Настройте в vimrc set nocompatible (убрать совместимость с VI) или поставьте sensible [30] (супербазовый vimrc с настройками типа nocompatible), или работайте в neovim [31] (новая в основном совместимая с VIM реализация VIM с человеческими настройками по-умолчанию).

В процессе работы у вас будут появляться хотелки. Как только появится хотелка, нужно:

  • Поискать, эта функция может быть среди базовых возможностей VIM (а чаще оно так и есть).
  • Если не нашли, то ищите соответствующий плагин и устанавливайте. Плагины советую ставить с помощью vim-plug [32].
  • Обязательно читайте документацию к установленному плагину (:help <plugin-name>). Она всегда хорошая и понятная!

Не ставьте много плагинов за раз. Возьмите за правило, не больше 2 плагинов в день, тогда вы всегда будете знать, что есть причина поломки, или наоборот, причина ускорения работы. Да и если сразу поставить 33 плагина, то у вас в голове возникнет каша, и вы не будете использовать ни один из этих 33 даже на половину.

P.S. На всякий случай дополню: я не утверждаю, что VIM круче IDE в любой ситуации. Я утверждаю, что существуют параметры, по которым VIM круче IDE, и поэтому имеет смысл обратить на него своё внимание. Эти параметры лично для меня существенны, и я их перечислил в параграфе "Зачем?".

Автор: mpetrunin

Источник [33]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/vim/136263

Ссылки в тексте:

[1] перешёл с Sublime на VIM: https://habrahabr.ru/post/303524/

[2] статьи: https://habrahabr.ru/post/224181/

[3] Ruby: https://github.com/vim-ruby/vim-ruby

[4] Rails: https://github.com/tpope/vim-rails

[5] Python: https://github.com/davidhalter/jedi-vim

[6] так: https://github.com/klen/python-mode

[7] OpenCL: https://github.com/petRUShka/vim-opencl

[8] PyOpenCL: https://github.com/petRUShka/vim-pyopencl

[9] PyCUDA: https://github.com/petRUShka/vim-pycuda

[10] Go: https://github.com/fatih/vim-go

[11] Sage: https://github.com/petRUShka/vim-sage

[12] Magma: https://github.com/petRUShka/vim-magma

[13] GAP: https://github.com/petRUShka/vim-gap

[14] LaTex: https://github.com/lervag/vimtex

[15] Magma: https://en.wikipedia.org/wiki/Magma_%28computer_algebra_system%29

[16] тонким клиентом: https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D0%BD%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82

[17] Practical Vim: Edit Text at the Speed of Thought: https://pragprog.com/book/dnvim2/practical-vim-second-edition

[18] пытаются: https://wrongsideofmemphis.wordpress.com/2013/03/27/vim-speed-is-not-really-the-point/

[19] браузер: http://5digits.org/pentadactyl/

[20] pdf-просмоторщик: http://pwmt.org/projects/zathura/

[21] почтовый клиент: https://wiki.archlinux.org/index.php/mutt#Mutt_and_Vim

[22] музыкальный проигрыватель: https://cmus.github.io/

[23] файловый менеджер: https://vifm.info/

[24] многое другое: https://www.linux.org.ru/forum/desktop/6905712

[25] интегрирован с мышью: http://usevim.com/2012/05/16/mouse/

[26] раз: http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about

[27] два: http://stackoverflow.com/questions/597077/what-are-the-benefits-of-learning-vim

[28] три: http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim

[29] vimtutor: http://www.freebsd.org/cgi/man.cgi?query=vimtutor&sektion=1&apropos=0&manpath=FreeBSD+8.0-RELEASE+and+Ports

[30] sensible: https://github.com/tpope/vim-sensible

[31] neovim: https://neovim.io/

[32] vim-plug: https://github.com/junegunn/vim-plug

[33] Источник: https://habrahabr.ru/post/303554/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best