Как Vim украл моё сердце

Думаю, видно из названия, что сегодня мы будем рассуждать о 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
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 106

    +6
    Сейчас набегут знатоки утверждающие что из Vim-а нельзя выйти :)
      +19
      Я просто шнур питания выдергиваю из сети, если надо выйти из ВИ.
        +5
        Это гораздо удобнее, чем я думал, приму на вооружение.
          +1
          С ноутбуками неудобно, особенно с ультрабуками ).
            0
            Для этого же есть кнопка ресет
            +1
            Думал, наконец-то хоть тут мне расскажут как из vim-a вьійти. Бесполезная статья, 0/10, не рекомендую.
            +1
            Ну про Cobol тоже может кто-то сказать, что он удобен, близок к естественному языку, и вообще на нем много чего работает, но что-то стремятся к другим языкам программирования, которые еще более удобнее:-)
              0
              Вообще-то, у vim очень много пользователей, это дефолтный текстовый редактор во многих *nix системах.
                +1
                Можно я тоже попробую?

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

                Хм… кажется этот аргумент выглядит неубедительно
                  0
                  И notepad'ом даже пользуются. Когда нет ничего другого. В отличие от него, vim — полноценный редактор, и его используют не из-за того, что он дефолтный, а из-за того, что он функциональный и удобный.
              +20
              image
                +13
                Что в статье нового кроме амине?
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Определенно тогда стоит прочитать.
                  +4
                  vim + vundle + nerdtree + neocomplete + esearch + выстраданный конфиг (потеря которого ведет к самоубийству) = психологическая травма на всю жизнь
                  +2
                  А мы детей учим виму *pure_evil*

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

                  ps. Вы забыли написать, что на самом хабре jk переходят между постами =)
                    +4
                    Автор так и не раскрыл тему, чем Vim лучше других редакторов кода, например того же VS Code, где есть мульйон плагинов, для постветки, автокомплита и других полезных функций?
                      0

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

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

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


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

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


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

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


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

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


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

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

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

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


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


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

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

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

                            По теме: ненавидел vi годами, но потом с приходом опыта (и лени инсталлить другой редактор) привык, чего и вам желаю.
                          0
                          В общем, на вкус и цвет все фломастеры разные! Но как по мне, так хотя бы минимально знать vim и vi надо как ни крутись, если работаешь с Linux, особенно, ксли приходится иметь дело с серверами, где надо порой какие-то файлики подредактировать, а «нормального» редактора там нет, но есть vi.
                            +2
                            nano есть
                              0
                              Я нечасто, но все же встречал максимально обрезанные сборки, где nano не было.
                              0
                              В реальности такое сейчас встречается только в минималистичных докерах, где часто и vi(m)а нет. Но докера надо самому собирать. А на реальных виртуалках хоть nano, да есть обычно.
                                0
                                Согласен. Нужно знать как из него выходить!
                                –5
                                «украл моё сердце», Карл! Мне потребовалось перевести это обратно на английский чтобы понять что речь не об инфаркте.

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

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

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

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

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

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

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

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

                                          Было дело.


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

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


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

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


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

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

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

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


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


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

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

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

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

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

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

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

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


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

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


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

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


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


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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                      Попробую вставить свои 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 — это самый крутой сетап.

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

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


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


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


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


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


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


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

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


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

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


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

                                                        В vim работает.


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

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

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

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

                                                              0
                                                              В виме нет гуёвой менюшки.
                                                              Она есть в гвиме.
                                                                0

                                                                Есть гуй — есть гуёвая менюшка. Нет гуя — нет гуёвой менюшки ))

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

                                                            Да что вы говорите?/слово

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

                                                            Вы знаете, это iпрекрасно, пока iне надо наiбирать кириллицу.

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

                                                            Какая чудесная, интуитивно-понятная команда!:%s/чудесная/прекрасная/g
                                                            Не работает что-то.

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

                                                            Мне коuажется, вы чего-то не договвuариваете. :)

                                                            Я к тому, что без выработки дурацкой^W привычки тыкать Esc перед любым действием vim — это наказание, а не редактор.
                                                              0
                                                              Я к тому, что без выработки дурацкой^W привычки тыкать Esc перед любым действием vim — это наказание, а не редактор.

                                                              Как я уже писал.


                                                              Для базовых действий надо запомнить, что есть режимы. Это несложно, просто очень непривычно.
                                                                0
                                                                А режимы тут ни при чем, собственно. Точнее, режимы тут очень даже при чем, просто люди не думают про режимы, когда пишут в виме.

                                                                Понаблюдайте как-нибудь со стороны, как именно работают в виме люди — они практически никогда не отслеживают текущий режим. Надо сохраниться — [esc]:w без вариантов, хотя в настоящий момент вим мог находиться в режиме команд и esc не нужен. Нажатие esc становится привычкой, которая даже не замечается.

                                                                Доходит до абсурда: для начала редактирования люди нажимают [esc]i, чтобы сначала выйти из режима редактирования (если находились в нем), а затем снова войти. Да, это происходит быстро и уже ушло на уровень подкорки, но это — мусорные действия, которые возникают исключительно из-за наличия в редакторе режимов.
                                                                  0
                                                                  Где то слышал что подход чуть другой правильнее использовать. Заходить в режим, что то быстро делать, и не оставаться в нем, а выходить как раз в нормальный режим.
                                                                    0
                                                                    «Нормальный» режим — это какой из двух? В котором пищит или в котором все портит? :)
                                                                0
                                                                Я к тому, что без выработки дурацкой^W привычки тыкать Esc перед любым действием vim — это наказание, а не редактор.

                                                                Я использую ctrl+c(на qwerty это ctrl-i) вместо esc, при этом на caps lock забинден ctrl, очень удобно


                                                                Да что вы говорите?/слово
                                                                Нажать / ввести слово (или несколько слов) и потом прыгать по результатам поиска нажимая n, что может быть проще? Ах да, Ctrl+f а потом Enter, да, "очень удобно". А как же быть с регистронезависимым поиском, наверное поставить какую нибудь галочку, в vim можно просто ввести \c после слова и он произведет такой поиск.

                                                                В целом нет смысла говорить о каких то конкретных вещах типа поиска, ведь мощь вима раскрывается тогда когда используется набор команд, т.к. вы же не делаете поиск только ради поиска, обычно это поиск + редактирование.
                                                                Реальный пример: вам нужно найти слово, потом найденное слово оказывается в кавычках и вам нужно удалить все что в кавычках и написать что-то новое.
                                                                В обычном редакторе это: Ctrl+f + enter + подвести мышку к найденному результату и сделать двойной клик что бы выделить все что в кавычках, а потом начать вводить изменения.
                                                                В vim это: /word + n + ci"


                                                                В vim нет привычной вам интуитивности на уровне интерфейса, в нем интуитивность на уровне ваших пальцев

                                                                  0
                                                                  в нем интуитивность на уровне ваших пальцев

                                                                  Лозунг красивый, но бессмысленный.
                                                                  Нет никакой интуитивности на уровне пальцев. Есть моторная память, закрепленная многократным повторением. Она, заметим, никак не зависит от редактора — пальцам абсолютно все равно, что набирать.
                                                                  Единственное реальное преимущество вима — это возможность все делать с клавиатуры, без привлечения мыши. Впрочем, без мыши прекрасно можно обойтись и во множестве других редакторов. При этом некоторые из них еще и позволяют не мучиться с переключением раскладки с кириллицы на латиницу и обратно.
                                                                    0

                                                                    Я не совсем понимаю о каких проблемах с раскладкой кириллицы вы говорите, можете привести пример?


                                                                    По поводу интуитивности на уровне пальцев, я имел ввиду
                                                                    d — delete
                                                                    a — append
                                                                    u — undo
                                                                    di" (delete inside ")
                                                                    ci" (change inside ")
                                                                    Это не достаточно интуитивно?

                                                                      0
                                                                      Я не совсем понимаю о каких проблемах с раскладкой кириллицы вы говорите, можете привести пример?

                                                                      Об очевидных проблемах. Жц вместо :w — почему-то не работает. Если вместо u набрать г — тоже почему-то не работает. И т. д. для практически любой команды.
                                                                      В результате редактирование русского текста превращается в постоянное переключение раскладок.

                                                                      Это не достаточно интуитивно?

                                                                      То, что вы привели в качестве примера — это мнемонические правила для запоминания дурацких^W команд. Это не имеет ничего общего с уровнем пальцев.

                                                                      И согласитесь, гораздо логичнее для перехода в режим вставки использовать клавишу Insert, для удаления символов — клавишу Del или Backspace.

                                                                      Это не достаточно интуитивно?

                                                                      Это вообще не интуитивно, это мнемоники.
                                                                        0
                                                                        Об очевидных проблемах. Жц вместо :w — почему-то не работает. Если вместо u набрать г — тоже почему-то не работает. И т. д. для практически любой команды.

                                                                        Вим можно настроить так, что в нормальном режиме язык всегда будет английским. И Жц никогда не наберётся. Так что проблемы с раскладками нет. Я, признаться, сначала подумал, что вы шутите.

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

                                                                            Вообще без проблем. Не надо даже русского языка на локальной машине. Правда, нужна поддержка русского на удалённой и доступ к настройкам вима.

                                                                              0
                                                                              Другими словами, в ситуации, когда раскладка переключается на локальной машине, работать оно не будет.
                                                                              Понял.
                                                                                0
                                                                                Другими словами, в ситуации, когда раскладка переключается на локальной машине, работать оно не будет.

                                                                                Если нужно переключать раскладку на локальной машине, то есть другой способ. Вим будет видеть, что пользователь вводит о и превращать нажатие в j, если реактор находится в нормальном режиме. Но я при работе в виме держу раскладку ос английской. Это, помимо прочего, позволяет переключать языки не убирая руки с home row.

                                                                              0
                                                                              Это же в каком реальном сценарии нужно редактировать тексты на русском через удалённый терминал?
                                                                                0
                                                                                А по существу ответить?
                                                                                  +1
                                                                                  Если вопрос ко мне (я слегка запутался в уровнях вложенности комментов), то что именно вы хотите прочитать? Я уже описал вполне реальный сценарий: в конторе у всех рабочие машины с виндой (политика партии), при это фактически нужно работать с файлами на unixовых машинах. И при этом прямая передача файлов между машинами запрещена (или очень ограничена, что по сути одно и то же). Снова политика партии.
                                                                                  И да, некоторые сотрудники по долгу службы пишут на не-латинице — текрайтеры, локализаторы.

                                                                                  Это достаточно реальный сценарий для вас?
                                                                                    0

                                                                                    Да, вполне. Спасибо.
                                                                                    Действительно было интересно.

                                                                                      0
                                                                                      Это достаточно реальный сценарий для вас?

                                                                                      Текрайтеры и локализаторы, которые пишут в консольном редакторе, подключаясь через ssh? Честно говорят — какой-то вообще нереальный ))

                                                                                        0
                                                                                        И тем не менее я все это наблюдал лично.
                                                                                        Программистам-то было пофиг, ибо кругом латиница. А вот текрайтерам было хреново. Выкручивались как могли, но ни один не использовал вим.
                                                                                        Впрочем, кроме ssh был открыт еще порт X window — можно было подключиться к юниксовой машине Х-клиентом и работать в окнах. Правда, там все было очень хреново в плане кириллицы, поэтому никто так не работал (кроме пары программеров — один xemacs запускал, второй, кажется, eclipse).
                                                                                          0
                                                                                          И тем не менее я все это наблюдал лично.

                                                                                          А почему не пользовались WinScp?

                                                                                            0
                                                                                            А почему не пользовались WinScp?

                                                                                            Может и пользовались, я уже не очень помню, что именно в тамошнем зоопарке разрешалось, а что нет.
                                                                                        0
                                                                                        И вопрос был к минусующим. Но не суть. Спасибо, ещё раз за ответ. Хотя кейс конечно специфический.
                                                                                0
                                                                                И согласитесь, гораздо логичнее для перехода в режим вставки использовать клавишу Insert, для удаления символов — клавишу Del или Backspace.

                                                                                Логично — да, удобно — нет.
                                                                                При слепом наборе руки всегда находятся в области буквенно-цифровых клавиш, а если быть точнее указательные пальцы всегда на F и J и все в пределах досягаемости, без перемещения кистей рук. Так зачем мне тянуться к del или insert, или выворачивать свой мизинец что бы нажать backspace? Все что мне нужно уже у меня под пальцами.
                                                                                И это абсолютно не универсальное решение, которое хорошо работает только если у вас полноразмерная клавиатура, а если это ноутбук в котором хоть и есть del, но нет insert. И все это находится не на своих местах и урезано что бы сократить место.


                                                                                Тут как бы уже речь идет об универсальности, среди людей который пишут код очень много тех кто любит универсальные и простые решения и инструменты.
                                                                                Мне не важно какая под моими пальцами клавиатура, есть в ней цифровой блок или его нет, на клавиши fN мне тоже все равно, мне не нужны стрелки — я ими не пользуюсь как и клавишами del, insert, pgup, etc. Я могу взять любую клавиатуру или любой ноут и работать так как я работаю всегда. А для того что бы начать использоваться вим мне нужно его установить, стянуть свой конфиг и установить плагины, и все это занимает 5-10 минут и я готов к работе.


                                                                                Об очевидных проблемах. Жц вместо :w — почему-то не работает. Если вместо u набрать г — тоже почему-то не работает. И т. д. для практически любой команды.
                                                                                В результате редактирование русского текста превращается в постоянное переключение раскладок.

                                                                                Проблема высосанная из пальца.


                                                                                1. Насколько я знаю все это можно настроить в конфиге, в том числе и сделать что-то вроде ctr+s
                                                                                2. зачем вам кириллица при написании кода?) Ну ок, комментирование фрагментов кода, но в чем проблема переключить раскладку?
                                                                                  <шутка про punto switcher>
                                                                                  +1
                                                                                  Так зачем мне тянуться к del или insert, или выворачивать свой мизинец что бы нажать backspace?

                                                                                  Вы лукавите.
                                                                                  Расстояние до Esc, которую приходится жать постоянно, ничуть не меньше, чем до Backspace.

                                                                                  Мне не важно какая под моими пальцами клавиатура, есть в ней цифровой блок или его нет, на клавиши fN мне тоже все равно, мне не нужны стрелки — я ими не пользуюсь как и клавишами del, insert, pgup, etc. Я могу взять любую клавиатуру или любой ноут и работать так как я работаю всегда.

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

                                                                                  И я очень сомневаюсь, что вы меняете клавиатуры постоянно: даже сисадмины, которым постоянно приходится коннектиться к разным машинам по ssh, работают с одной и той же клавиатуры, максимум — с двух (ноутбук и стационарная).
                                                                                  Проблема высосанная из пальца.

                                                                                  1. Насколько я знаю все это можно настроить в конфиге, в том числе и сделать что-то вроде ctr+s

                                                                                  Не всегда есть доступ к конфигам на удаленной машине. Точнее, не всегда их разрешено менять.

                                                                                  зачем вам кириллица при написании кода?)

                                                                                  Подмена понятий.
                                                                                  Мы обсуждаем vim как текстовый редактор. А значит, уметь работать с текстами в различных кодировках и на различных языках — его прямая обязанность.
                                                                                  Если же мы ограничиваем область применения vim набором и редактированием текста в Latin1 — простите, это не редактор, а неполноценное поделие.

                                                                                  Ну ок, комментирование фрагментов кода, но в чем проблема переключить раскладку?

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

                                                                                  Помнится, надо было срочно-бегом-вотпрямщас поменять на одной шарабайке xml с русскими текстами. И ви таки будете смеяться, но задачу решили отнюдь не вимом, хотя сначала попытались использовать его.

                                                                                  <шутка про punto switcher>

                                                                                  Мы обсуждаем не костыли и подпорки, а Vеликий I Mогучий текстовый редактор.
                                                                                    0
                                                                                    Вы лукавите.
                                                                                    Расстояние до Esc, которую приходится жать постоянно, ничуть не меньше, чем до Backspace.

                                                                                    Поэтому Esc мало кто жмёт. Из коробки можно вместо Esc нажать Ctrl+[. Почти с тем же эффектом можно нажать Ctrl+c. Или можно забить какую-то другую, удобную лично вам комбинацию.


                                                                                    Не всегда есть доступ к конфигам на удаленной машине. Точнее, не всегда их разрешено менять.

                                                                                    Если вам запрещено менять конфиги на удалённой машине, перед вами встаёт целый спектр проблем, которые бессмысленно перечислять в рамках обсуждения vim как текстового редактора.

                                                                                      0
                                                                                      Если вам запрещено менять конфиги на удалённой машине, перед вами встаёт целый спектр проблем, которые бессмысленно перечислять в рамках обсуждения vim как текстового редактора.

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

                                                                                      Но нет, почему-то все аргументы стороников вим — из разряда «это можно настроить» и «мне так удобно». Ах да, еще один коронный аргумент — «вам это не нужно».
                                                                                        0
                                                                                        Как раз наоборот — именно в этих условиях вим как текстовый редактор и способен блеснуть во всей красе.

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


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

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


                                                                                        "Мне так удобно" вам отвечают, когда вы говорите, что собеседнику совершенно точно неудобно. В общем-то ожидаемая реакция.


                                                                                        Ах да, еще один коронный аргумент — «вам это не нужно».

                                                                                        В моём исполнении это звучит как — если вам это нужно, то вим не подойдёт.

                                                                                          0
                                                                                          Но фишка вима не во всём этом, а в режимах )).

                                                                                          И это же его фатальный недостаток, из-за которого аудитория вима — упоротые упертые программисты. :)
                                                                              0
                                                                              Единственное реальное преимущество вима — это возможность все делать с клавиатуры, без привлечения мыши.

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

                                                                                0
                                                                                Преимущество так себе, если честно. Руки все равно обе на клавиатуре — так что никаких проблем с одновременным нажатием букв и управляющих кнопок нет. Зато необходимость отслеживать текущий режим работы — совершенно излишняя деятельность, от которой даже самые упоротые упертые любители вима стараются абстрагироваться (кто исполнением магических тычков в искейп, а кто как вы — конфигурированием шорткатов так, чтобы избежать переключения в режим команд).
                                                                          0
                                                                          Сохранение:
                                                                          vim — у меня настроен на Ctrl+S. Если вдруг этой настройки нет, то :w
                                                                          Стандартный редактор — нажать Ctrl+S

                                                                          Забавно читать, как ярый сторонник режимов в редакторе вводит богопротивные шорткаты, работающие в обход этих самых режимов. :)
                                                                            0
                                                                            Забавно читать, как ярый сторонник режимов в редакторе вводит богопротивные шорткаты, работающие в обход этих самых режимов. :)

                                                                            Это очень интересная тема. Зачем нужны режимы? Затем, чтобы делать в них действия, объединённые по какому-то признаку. То есть, после того, как произведено первое действие в режиме (например курсор передвинут на слово вперёд) — скорее всего пользователь сделает второе такое действие, а потом и третье. Зажимать Ctlr всё это время — устанут пальцы, особенно, если клавиши, которые жмёшь вместе с Ctrl — в разных половинах клавиатуры. Поэтому удобно ввести режим.


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

                                                                              0
                                                                              Это очень интересная тема. Зачем нужны режимы? Затем, чтобы делать в них действия, объединённые по какому-то признаку. То есть, после того, как произведено первое действие в режиме (например курсор передвинут на слово вперёд) — скорее всего пользователь сделает второе такое действие, а потом и третье.

                                                                              Тема интересная, но не в том плане, в которым вы предлагаете ее трактовать.
                                                                              Лично я считаю, что из-за философии вима («делаем все через команды») у адептов происходит деформация привычек, и они начинают делать командами даже то, что прекрасно делается стрелочками и шорткатами.

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

                                                                              Зажимать Ctlr всё это время — устанут пальцы,

                                                                              Очень сомнительное утверждение, очень. Этак можно и Shift забраковать как вредную, ненужную кнопку, от которой руки устают. :)

                                                                              Приведу пример: когда постоянно работаешь в screen'е, комбинация Ctrl+A вводится несколько тысяч раз в день. И знаете — как-то не устают пальцы, хотя примерно за год кнопка Ctrl протирается почти насквозь.:)

                                                                              Опять же, любители Emacs (второго альтернативного редактора с педальной морзянкой) жмакают комбинации с Ctrl, Shift и Alt сотнями и тысячами ежедневно. И ничего, не жалуются.
                                                                                0
                                                                                Лично я считаю, что из-за философии вима («делаем все через команды») у адептов происходит деформация привычек, и они начинают делать командами даже то, что прекрасно делается стрелочками и шорткатами.

                                                                                1. Про стрелочки
                                                                                  Стрелочки тупо зло, потому что надо постоянно переносить руку на стрелочки и потом обратно на букву. Этот пунк не к любителям вима, а вообще ко всем, кто не хочет переносить руку с home row.


                                                                                2. Про шорткаты
                                                                                  В виме шорткаты используются и используются достаточно широко.



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


                                                                                Плюс, если операция простая — действительно, иногда двигать курсор лень. Но это уже редкость.

                                                                                  0
                                                                                  Этак можно и Shift забраковать как вредную, ненужную кнопку, от которой руки устают. :)

                                                                                  Shift зажимается один раз для того, чтобы ввести заглавную букву. Держать его долго как правило не надо. Но и в этом случае рекомендуется sticky shift.


                                                                                  В кейсах, когда Shift надо держать долго — это точно зло.


                                                                                  Приведу пример: когда постоянно работаешь в screen'е, комбинация Ctrl+A вводится несколько тысяч раз в день.

                                                                                  Вводится, но держать Ctrl не надо. Это однократное нажатие, это не так больно.


                                                                                  Опять же, любители Emacs (второго альтернативного редактора с педальной морзянкой) жмакают комбинации с Ctrl, Shift и Alt сотнями и тысячами ежедневно. И ничего, не жалуются.

                                                                                  Ещё как жалуются. Погуглите Emacs pinky. Погуглите, как пользователи Emacs пробуют бороться с туннельным синдромом. Погуглите, что такое плагин god mode в emacs.

                                                            +2

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

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

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

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

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

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

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


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

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

                                                                      0
                                                                      Тогда позвольте вопрос к вам, как к знатоку VIM :) Существуют ли плагины, способные держать соединение с БД и подставлять аргументы хранимых процедур и названия полей? Скажем, когда я печатаю что-то типа:

                                                                      String query = @"SELECT MYFUNC(1, 2, filed3) AS `result` FROM table WHERE (....)";


                                                                      Есть плагины VIM, которые умеют дополнять имена css-классов из цепочки внешних .less файлов в коде PHP? Условно, говоря:

                                                                      $html .= '<span class="тут автодополнение"></span>'; 


                                                                      Спрашиваю не для троллинга и холивара, а из рабочего интереса. Спасибо заранее.
                                                                        0
                                                                        Таких плагинов нет. И для редакторов их никогда не будет без утяжеления оных до уровня IDE. Потому что внедрение такого сразу требует создания мощной инфраструктуры парсеров — как для поиска вариантов автодополнения, так и для поиска места где автодополение показать уместно. Это требует больших вычислительных ресурсов, а языки встраиваемые в редакторы обычно скоростью не блещут.

                                                                        Можно убежать от проблемы перекинув это дело в language server типа langserver.org. Но потом в дело вступают фреймворки, для которых нужно писать свой особый подход. Короче это бесконечная гонка, которую редакторам в принципе не выиграть, потому что трудозатраты на реализацию таких вещей огромны. Вот в качестве примера плагин для поддержки Symfony в IDEA, огромное количество кода и куча issues.
                                                                  –1
                                                                  а полноценная IDE, способная держать в своей голове весь проект

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

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

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

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

                                                                          Поддерживаю автора статьи, 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 приходилось вечно сталкиваться с различными проблемами и искать обходные пути. Ну и конечно же терминал.
                                                                            0

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

                                                                              0

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

                                                                                0
                                                                                А как при такой раскладке происходит перемещение по файлу?
                                                                                То, что в qwerty происходит по hjkl, которые находятся прямо под пальцами и расположено в логичном порядке.
                                                                                Мне правда интересно.
                                                                                В своё время отказался от идеи перехода на. Dvorak, чтобы не чувствовать себя инвалидом, если сяду не за свой компьютер. Хотя это и так почти получается, потому, что на ноутбуке у меня короткоходовая клавиатура, а на работе hhkb pro, после обеих этих клавиатур — вообще не могу пользоваться обычной плёночной, хотя переключаюсь без проблем с одной на другую.
                                                                              0
                                                                              У меня так произошла революция, когда я перешел с винды на стационарном компе на легкий MacBook Air. С макбуковским тачпадом мышка оказалась не нужна. POSIX-friendly операционная система. Да, сейчас посматриваю на линукс (нативный докер, huge pages и все такое), но сомневаюсь.
                                                                                0

                                                                                Мне кажется нет смысла уходить с macos на linux, imho

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

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

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

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

                                                                                Самое читаемое