Думаю, видно из названия, что сегодня мы будем рассуждать о Vim! Что это такое? Зачем это нужно? Как этим пользоваться?


Многие, читавшие мою прошлую стать могли воскликнуть:



Действительно, подобную практику можно посчитать излишней. К моему глубочайшему сожалению, и сейчас найдутся люди, рассуждающие аналогично. Для тех, кто не в курсе, поясню: Vim — это старомодный редактор текста, работающий в терминале и имеющий нестандартный подход к редактированию и набору текста.



Возникает справедливый вопрос: «Зачем в 2018-ом пользоваться старой программой, да ещё и без графического интерфейса?» Ответ прост — он удобен. Соглашусь, так можно сказать абсолютно про любой редактор, но всё же этот случай является весьма необычным.

Начнём с того, что, нет, Vim не старый — ему всего 27 лет. Он является наследником классического редактора Vi. Он лучше адаптирован под современные системы и обладает более широким спектром возможностей. Иными словами, своё название (Vi Improved) полностью оправдывает. Хочу также отметить, что есть ещё более новая реализация тех же идей — neovim.

В чём же разница?



Если глянуть на Youtube разные видео на эту тему, то там в основном говорят о метафизической составляющей вопроса. То есть о о разнице в идеологиях, путях развития проектов и тому подобное. Для конечного пользователя принципиальных различий нет. Однако два момента можно уточнить: некоторые плагины проще установить в neovim, в довесок к отделению пользовательского интерфейса от самого ядра программы. Про второе сейчас подробнее поясню.

Думаю, среди вас найдутся такие люди (и кошки), которые на предложение перейти на другой редактор всегда отвечают примерно так:



Что же, neovim спешит на помощь! Благодаря ему сейчас во многих современных IDE и «программистских блокнотах» есть эмулятор функциональности Vim. Таким образом вы можете продолжать пользоваться своим любимым Sublime Text или CLion со всеми вашими плагинами, заодно заметно увеличив свою производительность в плане написания кода, и начав получать от этого больше удовольствия (об этом позднее). Также это хорошее средство для повышения ЧСВ, ведь «настоящие хакеры пользуются либо Vim, либо Emacs».

«Хорошо, я решил попробовать изучить какой-нибудь винтажный редактор, но почему именно Vim, а не хотя бы тот же Emacs?» Ну, это вопрос неоднозначный. Emacs является более мощным решением, которое может всё (в нём можно даже в змейку играть). Однако, эта его сильная сторона также является его слабостью. Он слишком обширный и комплексный, что выливается в более высокую сложность освоения и требовательность к железу. Последний аргумент может сейчас прозвучать глупо, ибо он тоже является консольным редактором, но в ряде задач (как то удалённое подключение по SSH) этот момент может оказаться критичным.


(Пользователи Emacs после этих строк)

Хорошо, мы разобрались в том, что такое Vim, но осталось понять зачем и как им пользоваться.

«Почему Vim так всем понравился, что его добавляют куда только можно и даже куда нельзя?» (Кстати, в Emacs он тоже есть. Мне всё больше кажется, что проще перечислить вещи, которых там нет, но это уже не по теме.) Ответ и на этот вопрос является несложным — его философия.

Нельзя в VIM просто взять и начать печатать текст. Для этого есть отдельный режим — «Insert mode». Вы же при запуске программы попадаете в обычный режим, в котором вам предоставляется возможность набирать команды для редактирования текста и переключаться между разными режимами работы этого редактора. «Но ведь это неудобно! Я хочу просто печатать текст!» Чисто технически, для этой задачи подойдёт и печатная машинка, но я всё же отвечу без сарказма. Если большинство редакторов делает акцент на написании кода, то Vim его смещает на редактирование текста и делает это по-своему.


(На самом деле, у этой картинки есть глубокий подтекст. Если найдётся минутка, то почитайте про серию японских РПГ Persona.)

Самое главное, что нужно понять при изучении команд Vim — они по большей части не обособлены. Это, считайте, целый язык, где они делятся на глаголы, существительные и прилагательные (модификаторы). Собственно, несмотря на то, что каждая команда представляет из себя один символ, каждая из них имеет аналог слову в английском языке, а их последовательность можно перевести в полноценное предложение!



Давайте рассмотрим пару примеров, но сначала держите ещё картинку (на этот раз с чем-то полезным):



1). d2w
==> Delete two words.



2). AMew<Esc>
==> Append to the end of the line «Mew» and return to the normal mode.



3). f(ci(Pakahontas<Esc>
==> Find a pair of brackets and change their inner content to «Pakahontas» and return to normal mode.



Видите? Абсолютно ничего сложного! Безусловно, такой подход требует привыкания и постоянной практики, так как просто выучить все комбинации нельзя — их надо прочувствовать. Я пишу код в Vim не потому, что он в нём быстрее набирается (я и так печатаю медленно, как вы могли заметить, и вслепую не умею), а потому что он более естественный. Вместо кучи ctrl, shift или alt (команды с ними есть, но их мало) очень понятный и, самое главное, человечный язык редактирования.


(Неожиданно, не так ли?)

Но перед тем, как мы закончим, хочу вставить несколько комментариев:

I. Несмотря на то, что в Vim можно пользоваться стрелочками и мышкой (второе настраивается в файле "~/.vimrc"), это строго не рекомендуется. В нём есть море более интересных команд для перемещения курсора по тексту (и экрану), только они уже не такие интуитивные, как команды для редактирования и их придётся зубрить.


(It's hacking time!)

II. В Vim, как и во многих других редакторах, есть командный режим, который вызывается при нажатии на клавишу ':'. Символ '!' имеет в нём двойственное значение:

а) Если он стоит сразу после ':', то после него может следовать полноценная команда для терминала. Хотя некоторые из них дублируются в качестве команд самого редактора, это может быть полезно, например, для вызова компилятора.

б) Если он стоит после команды Vim, то он её выполнит, не сохраняя изменения в файле. С этим, кстати, связан один баг (или, если хотите, особенность) — если вы что-либо делали с текстом, то, даже если вы вернёте его в первоначальное состояние, редактор не закроется, если вы в нём не сохранитесь или не укажете '!'.


(Вы уже прочувствовали как Vim заботится о ваших данных?)

III. Разные настройки редактора и плагинов можно изменять в вышеупомянутом "~/.vimrc". Там настроек на любой вкус и цвет, только их в самом файле нет. По умолчанию там пусто. Для того, чтобы найти нужные вам параметры, воспользуйтесь командой ":help". Можете после неё добавить имя конкретного компонента или плагина, чтобы сразу перейти к интересующей вас информации. Но, конечно, интернет в этом плане поудобнее будет.



IV. Есть несколько команд в Vim (например 'q'), которые рассчитаны на определение (в "~/.vimrc") пользователем. Однако, если попробовать задать им значение напрямую, то срабатывать они будут с задержкой, так как они ожидают вторую команду после себя (именно их и стоит определять). Если вам нужна именно однокнопочная команда, я вам рекомендую использовать 's', т.к. её функционал практически от 'c' не отличается. «Substitute» можно заменить, так сказать.



V. Команда '.' обладает в это редакторе невероятной мощью. Она умеет повторять предыдущую команду (или целое предложение из них). В принципе, если вы не хотите записывать макрос, то она является прекрасным средством для заполнения кода «чебуреками»:



VI. Мне Vim чем-то напоминает старые 48-и килобайтные компьютеры ZX Spectrum. В них тоже были однокнопочные команды, но они были именно для языка программирования Basic. Таким образом разработчики попытались сократить необходимое для работы программы количество оперативной памяти.



В качестве обучающего материала, рекомендую программу vimtutor. Чисто технически, она просто открывает в Vim файлик с кратким туториалом, но такой подход позволяет практиковаться параллельно с изучением теоретической части. А дальше практика, практика и, ещё раз, практика!

Ну вот, собственно, всё, что мне хотелось о Vim сказать. Честно говоря, я нахожусь в полном восторге от этого редактора. Его философия очень заразительна и похожа на систему Unix в целом (всё просто, понятно и логично, но требует привыкания и запоминания). Поэтому если вы ищете себе хороший текстовый редактор или желаете получить редактирования текста новый опыт, то лучше места вы не найдёте.

Счастья вам, здоровья, и чтобы KDE не падали!

Источники
1) По теме:
а) Собственно, vimtutor
б) Картинка с клавиатурой была взята с сайта viemu
в) Также мною был прочитан викиучебник на эту тему
2) Не по теме:
а) Про серию Persona на Youtube есть множество видео с их подробным анализом. Наверное, наибольшую ценность представляют ролики с какала Filinov's Place, но автор пока остановился на второй второй части (это не описка).
б) Про Spectrum недавно записал хорошее видео Дмитрий Моисеев
в) Автор рисунка с моей аватарки — Fluff-Kevlar

Комментарии (59)


  1. Softer
    13.10.2018 11:27
    +3

    Сейчас набегут знатоки утверждающие что из Vim-а нельзя выйти :)


    1. berezuev
      13.10.2018 12:30

      Я просто шнур питания выдергиваю из сети, если надо выйти из ВИ.


      1. vtulin
        13.10.2018 16:03

        Это гораздо удобнее, чем я думал, приму на вооружение.


      1. shaggyone
        15.10.2018 10:11

        С ноутбуками неудобно, особенно с ультрабуками ).


    1. Googlist
      14.10.2018 04:30
      +1

      Думал, наконец-то хоть тут мне расскажут как из vim-a вьійти. Бесполезная статья, 0/10, не рекомендую.


  1. saag
    13.10.2018 11:40

    Ну про Cobol тоже может кто-то сказать, что он удобен, близок к естественному языку, и вообще на нем много чего работает, но что-то стремятся к другим языкам программирования, которые еще более удобнее:-)


    1. Black_Shadow
      13.10.2018 22:24

      Вообще-то, у vim очень много пользователей, это дефолтный текстовый редактор во многих *nix системах.


      1. fcoder
        14.10.2018 17:33

        Можно я тоже попробую?

        Вообще-то, у Notepad много пользователей, это дефолтный текстовый редактор во всех win системах.

        Хм… кажется этот аргумент выглядит неубедительно


        1. Black_Shadow
          14.10.2018 19:42

          И notepad'ом даже пользуются. Когда нет ничего другого. В отличие от него, vim — полноценный редактор, и его используют не из-за того, что он дефолтный, а из-за того, что он функциональный и удобный.


  1. PerlPower
    13.10.2018 12:13
    +1

    image


  1. Oskal174
    13.10.2018 12:30

    Что в статье нового кроме амине?


    1. nafgne
      14.10.2018 23:58

      Ещё фурри.


  1. korizza_spb
    13.10.2018 12:30

    vim + vundle + nerdtree + neocomplete + esearch + выстраданный конфиг (потеря которого ведет к самоубийству) = психологическая травма на всю жизнь


    1. SirEdvin
      13.10.2018 12:36

      Храните конфиг в gitlab, например.


      1. korizza_spb
        13.10.2018 12:49

        сарказм же


  1. myxo
    13.10.2018 12:46

    А мы детей учим виму *pure_evil*

    А вообще меня самого в детстве учили виму, мне он нравился, но со временем я пересел на нормальные редакторы =) Но в последние года, я как-то начал включать вим плагин везде где можно: браузеры, IDE, файл менеджеры. Да и в самом виме провожу куда больше времени.

    ps. Вы забыли написать, что на самом хабре jk переходят между постами =)


  1. b360124
    13.10.2018 13:27
    +1

    Автор так и не раскрыл тему, чем Vim лучше других редакторов кода, например того же VS Code, где есть мульйон плагинов, для постветки, автокомплита и других полезных функций?


    1. poxvuibr
      13.10.2018 14:00

      Если интересно, то режимами. Тем, что для того, чтобы начать вводить текст — надо перейти в режим ввода текста, а чтобы передвинуть курсор — надо вернуться обратно в нормальный режим.


      1. b360124
        13.10.2018 14:23

        Спасибо за ответ, но как-то режимы сомнительное преимущество, мне в редакторе главное удобство интерфейса, подсветка синтаксиса, автокомпит, подсказки аргументов функции — это все есть в VS Code (в моем случаи для js) + пару плагинчиков (мультибуфер обмена, Сode Runner и т.д.) и работа комфортная, а так в Vim — чето я такого комфорта не заметил для себя. Много смотрю видео уроков от разных популярны авторов буржуйский и Vim видел только в одного (GoRails), у других преимущественно VS Code.


        1. poxvuibr
          13.10.2018 19:50
          +1

          Спасибо за ответ, но как-то режимы сомнительное преимущество

          Тем не менее вимом пользуются именно из-за них. Остальное можно найти в любом другом редакторе.


          мне в редакторе главное удобство интерфейса

          Как правило любители вима придерживаются мнения, что интерфейс без режимов — неудобный.


          в Vim — чето я такого комфорта не заметил для себя

          Скорее всего вы режимами особенно не пользуетесь. Поэтому вам вим в основном мешает.


          Много смотрю видео уроков от разных популярны авторов буржуйский и Vim видел только в одного

          vim особенной популярностью не пользуется, тут не поспоришь. Если ваша цель — лучше программировать на js, то лучше использовать то, чем пользуются все остальные.


          Ну и напоследок важный момент. Если вам нужны плагины и фичи для работы с кодом — используйте IDE, там это обычно сделано на порядок лучше, чем в текстовых редакторах. Вим интересен режимами. Плагины в нём написаны людьми, которые хотят пользоваться модальным редактором для повседневных нужд. Многие считают, что режимы в виме — зло и пережиток прошлого. И их терпят только ради фич. На самом деле наоборот. Фичи пилят ради того, чтобы пользоваться режимами.


        1. ColdSpirit
          14.10.2018 09:30

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

          Возможно эта статья вам поможет разобраться: habr.com/post/339908


    1. polar_yogi
      13.10.2018 16:39
      +1

      ИМХО, vim, точнее его предок vi, незаменимый инструмент unix администратора: есть на любом юниксе и может быть запущен практически в любом терминале. В этом отношении конкурентов практически нет. Остальное — субъективно.


      Был забавный случай. Знакомый — музыкант, заинтересовался Линуксом, поствить я ему помог, но с vi ему пришлось столкнуться один на один. Так вот по его словам vi напомнил ему нотные редакторы — режим перемещения и режим правки разделены, очень удобно, разобрался без проблем.


      vi — почувствуй себя композитором.


      1. Planet_Dust
        15.10.2018 17:38

        Так вот по его словам vi напомнил ему нотные редакторы — режим перемещения и режим правки разделены

        Logic/Cubase юзер детектед :)

        По теме: ненавидел vi годами, но потом с приходом опыта (и лени инсталлить другой редактор) привык, чего и вам желаю.


  1. g0rd1as
    13.10.2018 13:58

    В общем, на вкус и цвет все фломастеры разные! Но как по мне, так хотя бы минимально знать vim и vi надо как ни крутись, если работаешь с Linux, особенно, ксли приходится иметь дело с серверами, где надо порой какие-то файлики подредактировать, а «нормального» редактора там нет, но есть vi.


    1. saag
      13.10.2018 15:47

      nano есть


      1. g0rd1as
        13.10.2018 17:37

        Я нечасто, но все же встречал максимально обрезанные сборки, где nano не было.


    1. usego
      13.10.2018 16:11

      В реальности такое сейчас встречается только в минималистичных докерах, где часто и vi(m)а нет. Но докера надо самому собирать. А на реальных виртуалках хоть nano, да есть обычно.


    1. munrocket
      13.10.2018 16:16

      Согласен. Нужно знать как из него выходить!


  1. Antervis
    13.10.2018 15:05

    «украл моё сердце», Карл! Мне потребовалось перевести это обратно на английский чтобы понять что речь не об инфаркте.

    Vim удобен для работы по ssh, т.к. не нужно транслировать графику. Ниндзя коллеги пользуются, сам я пока не планирую.


  1. DrNefario
    13.10.2018 16:17

    Это статья не про Vim!
    Где холивар на 300 комментариев? :/


  1. xvilka
    13.10.2018 17:56

    NeoVim, к сожалению, не очень быстро разрабатывается — github.com/neovim/neovim/milestones
    Такими темпами версия 1.0 выйдет лет через 10, не раньше.


  1. glowingsword
    13.10.2018 19:26

    Годная статья. Vim божественен. И самое ценно в нём — это удобные команды и режимы. Именно режимы это его настоящая киллер-фича. Но что-бы понять это, нужно поработать в нём довольно долго, и как минимум несколько раз пройти vimtutor в процессе. Те, кому не хватило терпения, или усердия — как правило запоминают о vim только плохое, так и не успев научиться использовать его реальную мощь.


    1. berez
      14.10.2018 23:55

      Именно режимы это его настоящая киллер-фича.

      Помнится, Джеф Раскин приводил vim в качестве примера наиболее неудачного интерфейса. И один из основных аргументов у него был именно присутствие режимов.

      Патамушта человек плохо адаптирован к режимам — ему удобнее кнопку или педаль держать нажатой, нежели запоминать, какой сейчас режим включен.

      Да-да, вам удобно, вашим коллегам нравится, у всех работает…


      1. poxvuibr
        15.10.2018 00:31

        Помнится, Джеф Раскин приводил vim в качестве примера наиболее неудачного интерфейса.

        Было дело.


        И один из основных аргументов у него был именно присутствие режимов.

        Не один из основных, а единственный. И не присутствие режимов, а то, что сложно понять, в какой режим на данный момент активен.


        Патамушта человек плохо адаптирован к режимам — ему удобнее кнопку или педаль держать нажатой, нежели запоминать, какой сейчас режим включен.

        Держать кнопку нажатой удобнее, если в режиме, который включает кнопка пользователь проводит совсем немного времени. Если пользователь проводит в этом режиме много времени — удобнее ввести полноценное переключение между режимами. Такое, чтобы пользователь всегда понимал, в каком режиме находится. Собственно, все так и делают.


        Да-да, вам не удобно, вашим коллегам не нравится, ни у кого не работает...


        1. berez
          15.10.2018 09:10

          Если пользователь проводит в этом режиме много времени — удобнее ввести полноценное переключение между режимами.

          Вообще-то нет. Если пользователь проводит в неком «режиме» много времени, ему удобнее использовать отдельный набор управляющих элементов. Например, отдельный блок кнопок для ввода команд редактирования. Необходимость в отдельных режимах при этом отпадает.
          Конечно, у Раскина свои тараканы. Следуя его логике, для ввода русских букв удобнее использовать отдельную клавиатуру, а не переключение режимов. Оно-то, возможно, и так, только где же столько места на столе найти? :)


          1. poxvuibr
            15.10.2018 10:49

            Вообще-то нет. Если пользователь проводит в неком «режиме» много времени, ему удобнее использовать отдельный набор управляющих элементов.

            Удобнее, но не всегда это возможно. Режимы получаются удобнее дополнительного блока кнопок, потому что на него замучаешься руки переставлять. Но, надо сказать — пока не попробуешь — поверить в это невозможно, да и даже из тех, кто попробовал — с тем, что режимы это хорошо, согласны далеко не все.


            Было бы здорово найти человека, который прекрасно владеет вимом и при этому не любит режимы, но, к сожалению те, кто не любит режимы — не горит желанием овладевать модальным редактором. В результате получается так, что любители вима хорошо представляют себе альтернативу, а вот те, кто вим с его режимами не любят — альтернативу (то есть в данном случае режимы) представляют себе плохо.


            Следуя его логике, для ввода русских букв удобнее использовать отдельную клавиатуру, а не переключение режимов.

            Или повесить включение русского языка на одну комбинацию клавиш, а английского — на другую. Тогда нет необходимости помнить, какой язык активен сейчас. Не уверен — включи нужный и продолжай печатать.


            1. berez
              15.10.2018 16:43
              +1

              Было бы здорово найти человека, который прекрасно владеет вимом и при этому не любит режимы, но, к сожалению те, кто не любит режимы — не горит желанием овладевать модальным редактором.

              Есть у меня знакомый любитель вима. Говорит примерно так же, как и вы, и то же, что и вы. Причем говорит горячо и убедительно.
              Вот только есть нюанс: с его же слов, на освоение вима в минимальной конфигурации у него ушел целый месяц. А на то, чтобы полностью освоиться с вимом и обрасти плагинами, ушло полгода. Учитывая, что товарищ очень упорный, умножаем данные числа на два и получаем среднее время освоения вима среднестатистическим программером.

              Попробуем осознать. На то, чтобы комфортно пользоваться текстовым редактором, требуется два месяца тренировок. Два месяца, Карл! И при этом, заметим, человек остается абсолютно беспомощен, когда сталкивается с настоящим, кондовым виаем, в котором не работают стрелочки и нет привычных плагинов. Нет, выйти-то он может, но редактирование превращается в декламирование мантры «мля».

              Я все это к тому, что иногда мне кажется, что ярые поклонники вима страдают наслаждаются стокгольмским синдромом. Да что там — не иногда, а почти всегда. Освоение вима — это череда сплошных издевательств над мозгом, и нельзя же открыто признать, что все эти страдания были впустую. :)

              Помню, после одной многочасовой дискуссии «vim vs mcedit» сошлись на том, что вим круче, ибо верую. :)


              1. poxvuibr
                15.10.2018 20:47

                Вот только есть нюанс: с его же слов, на освоение вима в минимальной конфигурации у него ушел целый месяц.

                Ну, то есть примерно столько же, сколько в случае с каким-нибудь другим редактором.


                А на то, чтобы полностью освоиться с вимом и обрасти плагинами, ушло полгода.

                Ну, то есть примерно столько же, сколько в случае с каким-нибудь другим редактором.


                На то, чтобы комфортно пользоваться текстовым редактором, требуется два месяца тренировок.

                Думаю, вы уже догадываетесь, что я напишу ))


                Для того, чтобы научиться пользоваться любым редактором надо потратить достаточно много времени. Если речь о том, чтобы двигать курсор стрелками и что-то печатать, то да, это как правило умеет каждый. Сложности начинаются дальше, когда выясняешь, как передвинуть курсор на слово вперёд, назад, как выделять блоки текста и всё такое.


                Двигать курсор стрелками и что-то печатать можно и в виме. Для того, чтобы прыгать по словам и делать другие чудеса — нужно учиться, но это придётся делать везде. В случае с другими редакторами обучение растянуто во времени на годы. Нередко пользователь вообще не подозревает, что можно переместить курсор в начало строки или в её конец и спокойно живёт. В случае с вимом обучение очень быстрое, потому что если не пользоваться описанными выше фичами, то не совсем понятно, зачем вим вообще нужен. Действительно, из-за этого создаётся впечатление, что вим это очень сложная штука.


                Я все это к тому, что иногда мне кажется, что ярые поклонники вима страдают наслаждаются стокгольмским синдромом. Да что там — не иногда, а почти всегда.

                Со стороны может создаться такое впечатление, но это как слепая печать. Надо потратить время и силы. Но те, кто потратили как правило довольны. Стокгольмский синдром?


                Помню, после одной многочасовой дискуссии «vim vs mcedit» сошлись на том, что вим круче, ибо верую. :)

                О чём там говорить много часов? Если у редакторов есть паритет по фичам, то весь вопрос сходится к тому, любите вы режимы, или нет.


                1. berez
                  15.10.2018 21:53

                  Вот только есть нюанс: с его же слов, на освоение вима в минимальной конфигурации у него ушел целый месяц.

                  Ну, то есть примерно столько же, сколько в случае с каким-нибудь другим редактором.

                  Хорошо пошутили, ценю.

                  «Какой-нибудь другой редактор» осваивается за вечер. Это если говорить о необходимом минимуме для комфортной работы: поиск, редактирование, замена, откат изменений, сохранение.

                  Для того, чтобы научиться пользоваться любым редактором надо потратить достаточно много времени. Если речь о том, чтобы двигать курсор стрелками и что-то печатать, то да, это как правило умеет каждый. Сложности начинаются дальше, когда выясняешь, как передвинуть курсор на слово вперёд, назад, как выделять блоки текста и всё такое.

                  В том-то и дело, что в современных «безрежимных» редакторах это делается легко, просто и интуитивно-понятно. Выделение текста — шифт+стрелки, прыжки вперед-назад по словам — контрол+стрелки, основные действия — сначала через меню, потом — по мере обретения опыта — по хоткеям. В этом объеме редактор осваивается за день. И уже потом начинаются тонкости — макросы, вызов внешних программ, автоформатирование и т. п.
                  И только в виме надо учить педальную морзянку для самых базовых действий.

                  Со стороны может создаться такое впечатление, но это как слепая печать. Надо потратить время и силы. Но те, кто потратили как правило довольны. Стокгольмский синдром?

                  А знаете, не исключено, что и так. :)

                  Лично я видел не так много людей, которым слепая десятипальцевая печать была действительно нужна в работе. Возможно, у вас другой опыт, но программистам навык слепой печати никак не помогает в работе. Большую часть времени программист не клацает по клавиатуре, а все-таки думает. Вот для девочек, подрабатывающих набором текстов на компьютере, слепая печать действительно помогает жить.

                  О чём там говорить много часов? Если у редакторов есть паритет по фичам, то весь вопрос сходится к тому, любите вы режимы, или нет.

                  Вы первый раз холиварите что ли? Вопросы вкуса фломастеров — самые животрепещущие и долгообсуждаемые. :)

                  А паритета фич у vim и mcedit и близко нет. Вим — чугунный швейцарский нож с педальным управлением и встроенным подогревом сиденья (правда, искаропки подогрев на дровах, но это можно исправить парой навесных блоков). Мцедит — ностальгия по встроенному в нортон коммандер редактору со всеми вытекающими: одновременно умеет редактировать только один файл, поддерживает только необходимый минимум действий. А еще, поскольку половина действий повешена на функциональные кнопки, его иногда запаришься конфигурировать под конкретный терминал (особенно эротично это делать в сессиях screen на всяких интересных платформах типа соляриса). Тем не менее и в нем можно творить удивительные вещи, т.к. есть макросы и вызов внешних программ.

                  Так что пообсуждать было что.


                  1. ukrdev
                    16.10.2018 06:15

                    Попробую вставить свои 5 копеек в ваш холивар.
                    Уже 5 месяцев прошло с того момента как я перешел на vim, до этого работал в phpstorm, поэтому есть что сказать.


                    Но сначала о слепой печати…
                    Перед тем как перейти на vim я освоил слепой набор, на раскладке dvorak и на это у меня ушло 95 часов (или ~3 месяца по 1-2 часа тренировок каждый день). Раскладка dvorak была выбрана не случайна т.к. до этого пробовал освоить слепой набор на qwerty, и после 20 часов тренировок понял что это самая неудобная раскладка для латиницы, которая так же сопровождается туннельным синдромом после длительного набора текста.
                    За скоростью набора текста особо не гнался но после 95 часов, скорость была ~300 знаков, на данный момент 350-400.


                    И да, я с вами согласен что владение слепой печатью или высокой скоростью набора текста — ничего не говорит о человека в плане того какой он хороший программист, только есть одно но,… Обладая подомными навыками можно очень быстро проверить на практике идею которая пришла к вам в голову, в голове все всегда идеально складывается но когда начинаешь писать код, то понимаешь что много чего не было учтено, куча мелких деталей и прочего.
                    С опытом ко мне пришло понимание того что нельзя сразу написать хороший код, перед этим нужно сначала провести эксперименты и проверить все на практике, а для этого нужно писать много кода, постоянно что-то переписывать, переделывать и доводить до состояния хорошего кода.


                    Ок, теперь по поводу vim'a
                    Основная причина по которой я решил перейти на vim — это желание избавиться от мышки, что бы полностью перейти на ноут и сделать свою тушу более мобильной.
                    И vim в данном случае является великолепным инструментом и ни одни шорткаты в других редакторах кода не дадут вам такой свободы в навигации по коду.


                    По поводу того что нужно что-то заучивать,… ну первые пару недель активной работы в vim'e у меня была постоянно открыта шпаргалка, но потом я ей пользовался все реже и реже. Спустя некоторое время уже перестаешь вспоминать, а просто делаешь это на автомате даже не задумываясь, как при вождении автомобиля на механике.


                    И еще тут вроде говорили о том что непонятно в каком режиме находишься, и это действительно так, если пользоваться именно редактором vim, я же использую neovim, у него в режиме вставки курсор из прямоугольника превращается в привычный | как у обычных редакторов, а внизу есть статус бар в котором так же видно какой сейчас режим включен.


                    Ну и конечно, vim нужно использоваться в связке с tmux — это самый крутой сетап.


                  1. poxvuibr
                    16.10.2018 09:56

                    «Какой-нибудь другой редактор» осваивается за вечер. Это если говорить о необходимом минимуме для комфортной работы: поиск, редактирование, замена, откат изменений, сохранение.

                    Поиск:
                    vim — нажать / ввести что ищете, нажать Enter
                    стандартный редактор — нажать Ctrl + F, ввести, что ищете, нажать Enter


                    Редактирование:
                    vim — стрелками подвести курсор к месту, которое нужно редактировать, нажать i, начать набирать
                    стандартный редактор — стрелками подвести курсор к месту, которое нужно редактировать, начать набирать


                    Замена:
                    vim — нажать :%s/слово, которое искать/слово на которое заменить/g
                    стандартный редактори — не помню хоткея, наверное надо лезть в менюшку


                    Откат изменений:
                    vim — нажать u
                    стандартный редактор — нажать Ctrl+Z


                    Сохранение:
                    vim — у меня настроен на Ctrl+S. Если вдруг этой настройки нет, то :w
                    Стандартный редактор — нажать Ctrl+S


                    Как мы видим, и то и другое легко осваивается за вечер, разницы большой нет.


                    В том-то и дело, что в современных «безрежимных» редакторах это делается легко, просто и интуитивно-понятно.

                    Просто стандартному редактору вы научились уже давно и учились постепенно.


                    Выделение текста — шифт+стрелки

                    В vim — v а потом стрелки. Разница не так уж грандиозна.


                    прыжки вперед-назад по словам — контрол+стрелки

                    В vim работает.


                    И только в виме надо учить педальную морзянку для самых базовых действий.

                    Для базовых действий надо запомнить, что есть режимы. Это несложно, просто очень непривычно.


                    1. Neikist
                      16.10.2018 10:03

                      Хоть вим мне нравится и планирую со временем освоить, но нужно признать что гуевая менюшка позволяет делать кучу всего не помня хоткеев. И это самое главное преимущество других редакторов.


                      1. poxvuibr
                        16.10.2018 10:13

                        В виме есть гуёвая менюшка.


  1. PurpleTentacle
    13.10.2018 21:17

    А как вы в 2018 разрабатываете без IDE? Автокомплит это конечно мило, но как быть с умными интеллисэнс, классами, проверкой типов, дополнения языка в языке (скажем, когда требуется внутри C# или PHP написать кусок кода на SQL, а среда уже понимает типы полей и имена таблиц). К этому всему уже привыкли, а для этого требуется не «редактор», а полноценная IDE, способная держать в своей голове весь проект. А ещё и контроль версий, туду и документирование :)


    1. PerlPower
      14.10.2018 01:36
      +1

      А как вы в 2018 разрабатываете без IDE?

      С удовольствием.


      1. PurpleTentacle
        15.10.2018 13:59

        Не, ну можно, конечно. В ламповые 90-е мы прекрасно писали без крутых IDE,. Но тогда левых фреймворков «скачал и подключил» было куда меньше, да и ООП применялось не так повсеместно, как сейчас. Когда много народу в проекте, уже привыкаешь к контролю версий с комментами, к тому, что среда сама показывает неверный порядок аргументов, подставляет имена из подключённых фреймворков, сама переходит в нужные файлы. Не то, чтобы без этого не прожить, но комфорт выше.

        Впрочем, каждому своё – нет никакого «единственного верного пути», разумеется. Так что вы молодец, без ёрничества.


        1. Hovushka Автор
          15.10.2018 15:02

          Всё, что вы перечислили можно сделать и в обычном Vim (плагинами). Однако мой посыл заключался в том, что в нём удобно текст редактировать. С предоставлением функционала Vim вполне справится и «крутой IDE» (тоже плагинами)


          1. poxvuibr
            15.10.2018 16:10

            Всё, что вы перечислили можно сделать и в обычном Vim (плагинами).

            К сожалению, вим очень сильно недотягивает до IDE по этим фичам.


            С предоставлением функционала Vim вполне справится и «крутой IDE» (тоже плагинами)

            Функционал вим это в первую очередь режимы. И с ними в крутых IDE не очень хорошо.


    1. Antervis
      14.10.2018 03:30

      а полноценная IDE, способная держать в своей голове весь проект

      если способная, со вменяемым быстродействием*. А то уж больно большие в 2018 проекты бывают


    1. AntonSazonov
      14.10.2018 09:50

      В ОС Windows встроенный редактор FAR вполне подходит. MSYS2 ему в помощь.


  1. kovserg
    13.10.2018 21:18

    vim имеет два режима в одном он пищит, в другом всё портит

    Как то мало расказали даже про ctrl+n не упомянули, про навигацию и полезные расширения.


  1. bravosierrasierra
    14.10.2018 09:48
    -1

    Люблю VIM нежной любовью 15 лет и повседневно пользуюсь его продвинутой версией: emacs + evil-mode. Это дарит мне шикарную инфраструктуру org-mode и позволяет не меняя моторики править что угодно и где угодно в vim. VIM/Emacs в настоящее время не очень удобны для работы с современными проектами из множества файлов, навигация по ним по сравнению с IDE оставляет желать лучшего, даже с плагинами. Это сильная сторона IDE. Однако я видел множество признаний о том, что многие, кто знают vim & emacs, работают в IDE но часто переключаются в них, чтобы быстро и без тормозов править большие цельные куски. Ещё всем, кто ходит удалённо по ssh и правит там файлы, vim очень удобен. Более того, лично у меня до сих пор встречается ситуация необходимости работы сквозь нестабильный GPRS и в такой ситуации vim + консоль linux ведёт себя так же хорошо, как они это делали на модемных соединениях.


  1. Hokum
    14.10.2018 13:00

    А я начал использовать Vim, а точнее gVim из-за удобства использования замены по регулярным выражениям, а именно, что можно было выражение интерпретировать как число и его инкрементировать, относительно часто приходилось делать подобное. А еще язык плагинов довольно простой, и можно быстро наваять что-то полезное для себя. Пробовал spacemacs, но как-то не зашло, хотя он произвел очень приятное впечатление.


  1. ukrdev
    14.10.2018 13:26

    Поддерживаю автора статьи, vim очень удобен особенно в связке с tmux.
    5 месяцев назад перешел на vim + tmux и ни разу не пожалел, попутно сменил раскладку с qwerty на dvorak и windows на linux. До этого 3 года пользовался phpstorm, а еще до этого 4-5 лет netbeans.


    Конечно переход на vim это должно быть осознанное решение и тот человек который задумался об этом должен точно понимать зачем ему этот редактор. Но я к сожалению не могу сказать что одна лишь смена редактора с <ваш_редактор> на vim даст вам что-то ощутимое, тут должен быть комплекс изменений которые в совокупности увеличат продуктивность. Поэтому у меня кроме vim вот такой список:


    1. Смена стационарного компа на ноутбук
    2. Смена раскладки с qwerty на dvorak + освоение слепой печати
    3. Смена ОС, с windows на linux

    Моя мотивация была такая:


    1. Отказ от использования мыши, который был спровоцирован желанием полной миграции с стационарного компьютера на ноутбук, для повышения мобильности. Это дает возможность мгновенной смены локации что положительно сказывается на продуктивности.
    2. Повышение скорости набора и редактирования кода, а смена раскладки на dvorak только добавила скорости и комфорта
    3. Tmux позволяет забыть о том что такое окна, и дает возможность очень легко управлять областью в терминале. Во время разработки кроме редактора с кодом приходится часто открывать еще несколько терминалов с тестами или просто для выполнения консольных команд, без tmux нужно городить окна и активно юзать виртуальные рабочие столы, а это все хот-кеи, а хот-кеи не очень то и удобны, даже если вы забиндили ctrl на клавишу caps lock.
    4. Переход на linux — ну тут все просто, практически все что я использую при разработке или в разработке, очень хорошо работает на linux, на windows приходилось вечно сталкиваться с различными проблемами и искать обходные пути. Ну и конечно же терминал.


    1. poxvuibr
      14.10.2018 17:06

      А что можете рассказать об адаптации vim к раскладке dvorak?


      1. ukrdev
        14.10.2018 18:06

        Никакой адаптации не требуется, во всяком случае если вы начали изучать vim уже с раскладкой dvorak, если вы до этого работали на qwerty, можно сделать qwerty langmap для dvorak в режиме normal(command), а при переключении в insert будет dvorak, но это ужасный костыль который все только усложнит. Т.е. не смысла использовать две раскладки, лучше сразу использовать dvorak.


    1. barabanus
      16.10.2018 10:52

      У меня так произошла революция, когда я перешел с винды на стационарном компе на легкий MacBook Air. С макбуковским тачпадом мышка оказалась не нужна. POSIX-friendly операционная система. Да, сейчас посматриваю на линукс (нативный докер, huge pages и все такое), но сомневаюсь.


  1. Artemkos07
    14.10.2018 16:24

    Гугл не совретimage


  1. shaggyone
    15.10.2018 10:19

    Помнится с 1999-го года ставил линукс «на побаловаться». Запуск vi(-m) входил в обязательную программу, потыкался пару минут, и как выйти сообразил ). Emacs тоже запускал, ничего не понял, больше не пробовал.

    С 2010 года по работе использую линукс, и по начало 2016 года пользовался только vim'ом. Когда вставал вопрос о редакторе, первая мысль

    Сейчас использую vscode, но в терминале особенно в ssh сессии только vim. Дефолтный для ubuntu nano не могу до состояния «аж бесит».