Как стать автором
Обновить

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

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

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

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

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

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

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

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

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


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

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


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

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


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

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


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

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

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

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


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


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

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

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

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

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

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

НЛО прилетело и опубликовало эту надпись здесь
Именно режимы это его настоящая киллер-фича.

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

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

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

Было дело.


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

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


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

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


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

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

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

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


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


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

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

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

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

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

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

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

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


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

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


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

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


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


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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


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


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


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


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

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


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

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


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

В vim работает.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Может и пользовались, я уже не очень помню, что именно в тамошнем зоопарке разрешалось, а что нет.
И вопрос был к минусующим. Но не суть. Спасибо, ещё раз за ответ. Хотя кейс конечно специфический.
И согласитесь, гораздо логичнее для перехода в режим вставки использовать клавишу 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>
Так зачем мне тянуться к del или insert, или выворачивать свой мизинец что бы нажать backspace?

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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


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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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



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


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

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

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


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


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

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


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

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

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

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

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


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

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
а полноценная IDE, способная держать в своей голове весь проект

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

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

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

Как то мало расказали даже про ctrl+n не упомянули, про навигацию и полезные расширения.
И режимов, конечно же, не два. Если не ошибаюсь — шесть. Но тем кто пишет баяны — это точно не интересно.
НЛО прилетело и опубликовало эту надпись здесь
А я начал использовать Vim, а точнее gVim из-за удобства использования замены по регулярным выражениям, а именно, что можно было выражение интерпретировать как число и его инкрементировать, относительно часто приходилось делать подобное. А еще язык плагинов довольно простой, и можно быстро наваять что-то полезное для себя. Пробовал spacemacs, но как-то не зашло, хотя он произвел очень приятное впечатление.

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

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

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

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

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

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

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

Публикации