company_banner

Как освоить Vim?

Автор оригинала: Richard So
  • Перевод
Осваивать Vim — это, пожалуй, страшно. Или, точнее, очень страшно. Речь идёт об изучении совершенно необычного подхода к редактированию кода, не говоря уже о работе с простым текстом. Многие несправедливо обвиняют тех, кто выбирает Vim, в том, что они впустую тратят время.

Я со всей уверенностью могу заявить о том, что Vim позволил мне повысить эффективность в деле написания программ. Работать стало удобнее (ниже я расскажу об этом более подробно). Я никому не хочу навязывать Vim, но очень рекомендую освоить этот редактор всем, кто занимается программированием, работает в сфере Data Science, в общем — тем, кто так или иначе пишет и редактирует некий код.



Если вам очень хочется узнать о том, стоит ли вам использовать Vim, и о том, кто и для чего им реально пользуется — взгляните на этот материал (кстати, не позвольте его названию, «Не пользуйтесь Vim», ввести себя в заблуждение). Ещё можете посмотреть это видео, которое, кстати, подготовил сам Люк Смит.

А теперь, учитывая всё вышесказанное, предлагаю поговорить о том, что такое, на самом деле, Vim!

Что такое Vim?


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

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

Это очень хорошо в тех случаях, когда нужно постоянно «переключаться» между редактированием и просмотром кода. Обычно программисты именно так и работают. Если вы раньше никогда не пользовались Vim для работы с программным кодом, то вы даже не замечаете того, как много времени тратится на то, чтобы снять руку с клавиатуры и потянуться к мыши (или к трекпаду), затем — на то, чтобы переместить курсор туда, куда нужно, и наконец на то, чтобы вернуть руку на клавиатуру и приступить к вводу текста (в общем — тратится очень много времени).

Конечно, на то, чтобы привыкнуть к Vim, нужно некоторое время. И это — не прямая замена какой-нибудь IDE или редактора вроде VS Code. Но можно сказать, что Vim позволяет тому, кто умеет им пользоваться, значительно ускорить работу с кодом. Кроме того, интересно то, что его более простым аналогом является Vi — стандартный текстовый редактор большинства Unix-подобных систем, работающий в терминале.

Как научиться работать в Vim?


▍1. Используйте vimtutor


Меня не удивляет то, что в каждом руководстве по Vim рекомендуется начинать изучать этот текстовый редактор с vimtutor. Поэтому я, без зазрения совести, поступлю так же. Нет нужды играть ни в какие «Vim-игры» (хотя они и довольно интересны), или прибегать к программам, помогающим запоминать бесчисленные клавиатурные сокращения. Надо просто установить vimtutor и, когда найдётся 10-15 минут свободного времени, прорабатывать этот официальный учебник по Vim. И не пытайтесь сразу же запомнить все клавиатурные сокращения Vim; вы запомните их постепенно, снова и снова проходя уроки vimtutor.

Хочу отметить, что Windows-пользователям я рекомендую использовать WSL (Windows Subsystem for Linux, подсистему Windows для Linux) и для прохождения vimtutor, и, в целом, для работы с Vim. Лично я в Windows с Vim не работал, поэтому не могу обещать того, что при работе с ним в этой ОС всё будет точно так же, как в Linux.

▍2. Постоянно пользуйтесь Vim


Практика — это путь к совершенству. Это — главный принцип, которого стоит придерживаться при изучении чего-то нового. Изучение Vim — не исключение. Поэтому, пока вы изучаете Vim с помощью vimtutor, пользуйтесь этим редактором для решения реальных задач.

Используйте Vim как можно чаще. Нужно просмотреть текстовый файл? Запустите Vim. Хотите что-то по-быстрому изменить в Python-скрипте? Примените Vim. Делаете какие-то заметки? Делайте их с помощью Vim. В общем, полагаю, вы меня поняли. И каждый раз, когда работаете в Vim, всегда задавайтесь вопросом о том, какова наиболее эффективная последовательность нажатий на клавиши (то есть — наиболее короткая последовательность), позволяющая решить текущую задачу.

И попутно постарайтесь сократить использование мыши.

▍3. Интегрируйте с Vim всё что сможете


Используйте клавиатурные привязки Vim везде, где это возможно. Начните делать всё, что сможете, «в стиле Vim». Например, если вы пользуетесь браузером, основанным на Chromium (Chrome, Brave, Edge), или браузером Firefox, подумайте об установке расширения Vimium, которое позволяет пользоваться в браузере клавиатурными сокращениями Vim, отвечающими за перемещение по документу (H, J, K, L и так далее).

Если вы пользуетесь для работы с кодом некоей IDE — найдите плагин или расширение для добавления Vim-привязок в соответствующую среду. Например, пользователи PyCharm (или любой IDE от JetBrains) могут воспользоваться ideavim. А пользователи VS Code (в 2021 году этот инструмент уже ближе к IDE, чем к обычным текстовым редакторам) могут прибегнуть к расширению VSCodeVim.

В Jupyterlab можно включить привязки Vim для встроенного текстового редактора путём установки jupyterlab-vim, что позволит полностью эмулировать Vim в ячейках блокнотов.

Постарайтесь органично интегрировать Vim в свою рабочую среду и несколько недель поработайте по-новому. Я могу говорить о том, что после нескольких VSCode-сессий в стиле Vim мне стало гораздо удобнее пользоваться этим редактором. А ещё — я очень рад избавлению от мыши!

▍4. Перенастройте клавишу Caps Lock (но это необязательно)


Самая бесполезная клавиша, расположенная в самом лучшем месте клавиатуры. Именно так можно охарактеризовать клавишу Caps Lock. Поэтому советую превратить Caps Lock в Escape. Если вы интересуетесь Vim, то уже должны знать о том, что клавиша Escape используется в Vim для переключения режимов. Я очень советую тем, кто стремится к максимальной эффективности, воспользоваться вышеописанной модификацией.

Пользователи Windows и WSL могут использовать uncap — программу, которая превращает клавишу Caps Lock в Escape.

Пользователям macOS в плане переназначения клавиш повезло — они могут решить эту задачу, прибегнув к системным настройкам.

Если вы работаете в Linux — настроить всё как надо вам помогут StackOverflow и Google. Лично я (заслуженный пользователь Arch Linux) использую утилиту setxkbmap, с помощью которой делаю из Caps Lock ещё одну клавишу Escape. А потом включаю автозапуск утилиты при запуске системы:

setxkbmap -option caps:escape

▍5. Глубже изучите Vim


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

  • ZZ — сохранить документ и выйти из Vim. Красивая команда.
  • zz, zt, zb — прокрутка текста, перемещающая строку с курсором, соответственно, в центральную, в верхнюю или в нижнюю часть области просмотра.
  • Ctrl+u, Ctrl+d — прокрутка области просмотра вверх или вниз на полстраницы.
  • ciw — (Change Inside Word) удаление текущего слова и автоматический переход в режим вставки.
  • C — удалить текст от позиции курсора до конца строки и перейти в режим вставки.
  • dt<char> — (Delete To <character>) удалить текст от позиции курсора до следующего вхождения указанного символа.
  • ~ — (тильда, на стандартной клавиатуре вводится клавишей, находящейся под Escape) переключение регистра (верхний/нижний) текущего или выделенного символа.
  • . — (точка) повтор последней команды Vim.
  • ggvG= — (перейти в начало файла, войти в визуальный режим, выделить весь текст до конца, выровнять выделенные строки) автоматическое выравнивание текста во всём файле.

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

Если вас интересуют другие команды Vim — посмотрите это замечательное и довольно длительное видео, демонстрирующее прохождение уроков vimtutor, которое записал Вим Дизель (шучу — это всё тот же Люк). Тут собрано множество полезнейших советов по Vim.

Итоги


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

  • Можно установить Neovim и поэкспериментировать с ним (это — отрефакторенный форк Vim, рассчитанный на высокий уровень расширяемости и на поддержку графического интерфейса).
  • Можно перенести функционал Vim в терминал или интерпретатор командной строки, воспользовавшись vim-airline.


Vim-airline, тема violet (источник)

  • Можно попробовать некоторые из популярных Vim-плагинов.

Желаю всем, кто дочитал до этого места, наслаждаться будущим, наполненным благами Vim (и освободиться от власти мыши или трекпада).

Пользуетесь ли вы Vim?

RUVDS.com
VDS/VPS-хостинг. Скидка 10% по коду HABR

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

    +22
    Vim позволяет тому, кто умеет им пользоваться, значительно ускорить работу с кодом.

    ПО сравнению с какой программой? nanо, блокнот? НЕ сказал бы что у меня есть проблемы с скоростью написания кода. скорее проблемы с скоростью понимания но скакать по вкладкак довольно удобно и мышкой. а клавиши Page Up Page Down помогают делать это быстро
      0
      НЕ сказал бы что у меня есть проблемы с скоростью написания кода

      Ну так тут и не утверждают, что у вас есть проблемы с написанием кода.
      Написано же: ускорить работу с кодом.
        +2
        Как вим может хотя бы сравниться по скорости (я уж молчу о каком-то ускорении) в хотя бы такой банальной, но крайне нужной при чтении кода операции, как клик по имени функции/метода в идешечке?
          +12
          Ну вы кликаете не мышкой, а комбинацией gd. Мышку при этом брать в руки не надо.
            +6
            Да, но сначала надо довести курсор до названия, а это уже чисто физически дольше. Есть, наверное, команда для поиска по названию, но если между курсором и нужным методом есть похожий текст — это поможет плохо.

            А если надо в обратную сторону — какой будет вимовский аналог «show usages»?
              +3
              это довольно быстро. Слэш набираете и далее то, что ищете
              /это_ищу

              Если похожее, то жмёте «N».
              А реальное преимущество перед мышью будет тогда, когда вы ищете то, что за пределом экрана.

                +5
                Ну прям как Ctrl+F, чудеса. Жаль, что vim найдёт аналогичные строки и, например, в комментариях. Или, например, если я хочу посмотреть все использования переменной i внутри цикла (и у меня есть другие циклы с такой же i) — vim будет искать аж по всему документу. Какая досада.
                  +8
                  Ну хватит уже осуждать то, в чем не разобрались. В ВИМ полно вариантов для поиска внутри строки, файла, абзаца, фукнции и т.д.
                    +1
                    И в целом проекте (размазанном по куче файлов) он тоже ищет?
                    А если у меня одна переменная перекрывает область видимости другой — он тоже это корректно обработает?
                      +1
                      И в целом проекте (размазанном по куче файлов) он тоже ищет?

                      Ну да. 7 лет назад я отлично изучал с помощью него кодовую базу django.
                      А если у меня одна переменная перекрывает область видимости другой — он тоже это корректно обработает?

                      Допускаю, что не для всех языков, но на C и Python с парой дополнений это делалось.
                    +3

                    А зачем средствами редактора текста делать то, что является задачей IDE?

                      +19
                      Вот именно. Зачем вообще использовать vim для работы с кодом, когда это задача IDE? Конфиги — допустим, но код…
                        +1

                        А код это всегда 100500+ строк размазаных по сотням файлов?

                          0
                          Не всегда 100500 строк в сотнях файлов, но зачастую хотя бы тысяча строк в десятке файлов.
                            +1

                            Ну мне повезло. Тысяча строк в десятке файлов меня не ставит в тупик.


                            IDE безусловно удобная вещь, это ещё не говоря о языках/платформах где без неё вообще не возможно что-то вразумительное сделать. Например, разработка под Андроид.


                            Честно, я не понимаю вашего негатива в сторону vim. Может всё-таки разрешите людям использовать удобные им инструменты?


                            P/S. Тут ещё emacs фанаты не набежали, они бы вам рассказали про правильное сочетание клавиш.

                              +9
                              Да редактируйте хоть sed'ом если вам так удобнее. Просто vim-фанаты обычно:
                              — Вот я попробовал vim и трава стала зеленее, а сахар — слаще. Короче, vim — лучше, чем любое другое средство редактирования, все переходите на него, карма очистится (даже на Хабре).
                              — Чем лучше-то?
                              — Чем другое средство редактирования.
                                +3

                                А, ну это уже классика. Переход с обсуждения инструмента на его фанатов.

                                  +1
                                  Не-не-не, вы прям сейчас посмотрите комментарии под этой статьёй (или любой другой про vim): все любители vim'а его прям боготворят, а как дело доходит до «всё равно лучше использовать IDE», так сразу «ничего не знаю, vim — это блокнот + схема управления». Потому что он и есть блокнот со своей схемой управления.
                                    0

                                    Нет ну сравнивать vim и блокнот (я так понимаю классический notepad.exe) совсем странно. Vim вполне можно допилить с помощью плагинов до "почти" IDE. Тем более что сейчас существует LSP. Да и сочетания клавиш можно запилить любые. Есть даже извращенцы которые Emacs mode делают.


                                    Vim корректнее было бы сравнивать с тем же Emacs, Sublime text (тоже кастати был очень популярным с армией фанатов), Notepad++ (на винду всегда ставлю).

                                    0
                                    А кому нужен софт без сообщества? Один из базовых критериев при выборе инструмента это состояние сообщества.
                                    +7
                                    Не умея использовать vim, не имея в нем опыта, преимущества не понять. Тут нет убер-фич. Но спустя некоторый продолжительный опыт работы с редактором ты понимаешь, что этот редактор по сути продолжение твоих мыслей. Ты интуитивно, рефлекторно набираешь текст, пальцы и текст за ними бегут быстрее твоих мыслей.
                                    А скорость работы редактора и доступность его на любой железке уже идут как бонусом.
                                    Но, безусловно, для этого нужен навык слепой печати.
                                    Вы попробуйте годик поработать в нем, там поймёте.
                                      0
                                      Ты интуитивно, рефлекторно набираешь текст, пальцы и текст за ними бегут быстрее твоих мыслей

                                      это абсурд, это ты привык думать в контексте vim, а не он такой удобный. Я пользуюсь vim когда нужно что то совсем небольшое поправить на удалённой машине, для этих задач он неплохо подходит, но ни чем не лучше nano или mc для тех кто привык работать с ними.
                                      Но автор заявляет что VIM магическим образом позволит очень сильно ускориться при работе с кодом после глубинного понимания этой «волшебной» утилиты. Но это полный и бездоказательный бред. Единственный обоснованный плюс vim это наличие данного редактора на 99% posix платформ.
                                      И мне абсолютно не понятно зачем из буханки хлеба делать автобус, а потом ещё и учиться его водить.
                                        +1

                                        Наличие команд ускоряет работу с текстом
                                        В нано нет команд
                                        В вим есть


                                        Банальный пример, получить буст в скорости работы можно, перейдя с нано на вим и зная только лишь, как работает команда delete. Ситуации, когда необходимо удалить большое количество строк в каком нибудь конфиге, возникают очень часто, и в nano вы 20 раз нажмете ctrl+k, а в vim — выполните простую d20d. Одна только эта мелочь может сэкономить десяток секунд жизни. Из таких мелочей и складывается магическое ускорение работы. Когда знаешь и применяешь кучу возможностей вим, это становится реально заметно

                                          –2

                                          Как-то странно Вы скорость сравниваете. Где оценка времени на ТОЧНЫЙ подсчёт строк, которые надо удалить? Если их штуки три, выгоды нет, если штук двадцать девять — уже надо точно знать, СКОЛЬКО. Ошибся на одну — и никакого тебе преимущества. В классическом же редакторе я выделю строки почти не глядя, за исключением крайних строк. И удалю скопом


                                          Мне это напомнило анекдот, извините.


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

                                          P.S. Я не против vim, честно. На днях по приколу часа два в нём просидел, работая над примерами кода, и даже не заплакал ни разу, почти понравилось. Раздражали только длительная (четыре клавиши, Карл! Esc, :, w, Enter) команда сохранения файла и отсутствие сохранения по потере фокуса. Автосохранение по таймеру не предлагать, укушу.


                                          Но как длина полного тормозного пути зависит не только от эффективности тормоза, но и от скорости реакции водителя и скорости срабатывания тормозной системы, так и полное время исполнения функции редактирования зависит от времени, которое надо потратить на подготовку (в том числе расчёт аргументов, если их таки надо вводить)

                                            0

                                            :set relativenumber и ничего не надо считать. Вумная система сама покажет сколько строк от текущей строки. Как вниз, так и вверх.

                                              0
                                              set relativenumber


                                              Спс!
                                            0
                                            d20d


                                            Я, например, очень плохо измеряю на глаз, 20 строк надо удалить или 21. У меня так:

                                            d20d
                                            #fuck
                                            u
                                            d19d


                                              +1

                                              v20jkd а можно и просто по номерам строк сделать (нумерация-то, обычно, у всех всегда включена).

                                              0
                                              1. есть 100 других способов это сделать, включая подключение по sftp и редактирование хоть в visual code
                                              2. то что это ровно «20» срок совсем не очевидно, это ещё нужно напрячься посчитать

                                              да и вообще для редактирования конфигов на сервере я сам всегда использую vim и не вижу тут смысла спорить так как ни одним другим редактором я и не пользуюсь для этих целей. Но речь идёт именно о редактировании кода на локальной машине.
                                                0
                                                Простите что вклинился, но я у себя в нано выделяю область и только потом уже удаляю, можете мне подсказать что я делаю не так??
                                                  +3
                                                  Всё так. А если нужно выделить область между скобками (функцию в С/С++, массив, или кусок структурированных данных в пару мегабайт)?
                                                    0
                                                    Не спорил с удобством вима или превосходством нано — просто был удивлен тому что надо нажимать 20 раз сочетание клавиш, вместо выделения области и удаления её
                                                      0

                                                      а как вы выделяете без нажатия на кнопки?
                                                      если имеется в виду выделение мышкой, то перенос рук туда-сюда ещё хуже

                                      0
                                      В плюсах, когда базовый класс в одном файле, класс-наследник в другом — так и получается.
                                      В обычном C, когда функция описана в одном файле, а используется в другом — тоже.
                                      +2

                                      Затем, что именно редактиировать код в Vim на порядки удобнее чем в "традиционном" редакторе. У меня просто под Visual Studio стоит плагин VimVs, а под VS Code стоит VSCodeVim, и я могу одновременно, не переключаясь использовать все преимущества и фичи и того и другого.

                                        +2
                                        Зачем вообще использовать vim для работы с кодом, когда это задача IDE?
                                        Вы говорите так, словно IDE не содержит редактор, а у вим нет плагинов, превращающих его в IDE.
                                          +1

                                          Посоветуйте для python, пожалуйста. Нужны autosuggestions и справка, запуск и отладка внутри vim.

                                            0

                                            vim-lsp (или любой другой lsp клиент) — вот все что умеет lsp сервер, то будет и у вас, плюс сразу поддержка других языков. Go, C/C++, Rust, Python, etc.
                                            Для деббага есть DAP — но еще сырое. Лично я больше на Go пишу и для деббага использую vim-delve.
                                            Думаю для python тоже что-то есть.

                                          –7

                                          Смотря про какой язык речь. Тонны бойлерлейта Java/C# действительно, наверное, удобнее ворочать в IDE.


                                          Навскидку во всех без исключения остальных языках — хорошим разработчикам IDE только мешает.

                                            0

                                            А как вы сравниваете IDE и Vim? Можно пользоваться Vim для конфигов, и IDE с Vim плагином для кода, и использовать все плюшки мира)

                                      0
                                      gr
                                        0

                                        Есть такая вещь как easymotion и подобные, позволяют довольно удобно навигироваться по коду без мышки.

                                          0
                                          Спуститься в реализацию метода, он же show usages, если используется в определении метода: gd
                                          Обратно: Ctrl — o

                                            0
                                            А как курсор-то поставить на нужное место? Двигать курсор — медленно, поиском — тот еще костыль.
                                              0
                                              Можно по номеру строки:
                                              :<номер строки>

                                              но обычно в vim курсором перемещаются по файлу, поэтому проблемы, что курсор неизвестно где — не возникает, он уже итак где-то рядом с названием метода
                                                0
                                                номер_строки g

                                                ;)
                                                Ту же команду можно закодировать по разному. Забавно.
                                          0
                                          А когда есть 10 разных наследников на который из них оно меня приведёт? Или если нужно увидеть всех кто унаследовал этот класс? а какая команда развернёт C++ макрос? И самый главный вопрос дебажить код надо принтами или для реализации выпадающих списков при просмотре локальных переменных в точке останова тоже есть плагин?
                                          0

                                          И вы действительно кликаете?
                                          В любой нормальной IDE для этого есть горячие клавиши. В IDE от JetBrains это Ctrl-B, например.

                                            0
                                            Повторюсь, а как довести курсор до нужного места? Вот я прямо уверен, что я быстрее кликну мышкой, даже с учетом переноса руки, чем адепт вима поставит курсор куда надо поиском. Особенно на более-менее обширной выборке случаев, когда между курсором и нужным вхождением будет еще пяток-другой слов с аналогичным началом.

                                            Симулятор, что ли, запилить, чтобы показывал случайный кусок кода и мерял затраченное время…
                                              0

                                              Кликни мышью на конец файла в полтыщи строк, а я посмотрю. И поприкалываюсь. Для упрощения задачи можешь даже заранее руку на мышь положить. :))

                                                0
                                                Ухватить мышью прокрутку, потянуть вниз до конца экрана.
                                                  0
                                                  Прокрутить полосу прокрутки в конец — 1 секунда. Кликнуть — ну, пусть ещё одна (хотя наверняка меньше). 2 секунды максимум. За две секунды vim-пользователь нажмёт свои 1-2-3 (или сколько там надо) клавиш и будет с пренебрежением смотреть на мышеюзера всё оставшееся время, аж целую секунду. О ужас. Секунду!
                                                    +3

                                                    Хорошо. Я проиграл.

                                                    0
                                                    А как в виме выгляжит команда «перейти на вызов именно той функции, которая мне нужна, хоть я его еще даже не вижу на экране и про него вообще пока не знаю»? Это охренительно полезная штука, я ради нее одной готов ночами вим изучать.
                                                      0

                                                      А как это выглядит в ${IDE}? Запишусь в очередь на изучение ;)

                                                        0
                                                        Я это к тому, что пассаж про конец файла в полтыщи строк вообще непонятно о чём. Зачем может быть нужно кликать неизвестно куда? Если я хочу посмотреть функцию, значит, ее вызов уже есть на экране.
                                                          +2

                                                          Ёмоё. Я уже устал писать. Я почти все время работаю в Visual Studio с плагинонм VsVim. Если мне надо перейти на начало/конец файла, то я нажму gg или G, если мне надо вырезать или скопировать строковой литерал, то я нажму dia или yia, и т.п., если же мне надо перейти на определение/реализацию/использование метода, то я просто нажму F12, или Shift-F12, или Ctrl-F12 (шорткаты Visual Studio), вот и все. Мне же в ответ все время пишут: "Если используешь vim, то значит отключай нах совсем мышь и ***дуй в свой vim". Разговор с глухим.

                                                          0
                                                          Find Usages в JetBrains. Очень полезная штука.
                                                            0

                                                            Это везде есть.
                                                            «перейти на вызов именно той функции, которая мне нужна, хоть я его еще даже не вижу на экране и про него вообще пока не знаю» — это оно разве?

                                                              0
                                                              Перейти на вызов функции (а их может быть несколько), хоть он даже не видит его на экране и вообще про него не знает. Оно.

                                                              >> Это везде есть.
                                                              В vscode, помню, не нашел как ни старался.
                                                                0
                                                                Значит не везде ;)
                                                                qtcreator, pycharm это тоже умеют.
                                                                vscode — тот ещё универсальный комбайн с кучей плугинов. Почти как vim :D
                                                        0

                                                        Ctrl-End почти везде работает

                                                          0

                                                          Ты не поверишь, но в vim тоже.

                                                            0

                                                            Охотно верю, я к тому, что перейти в конец файла в любом редакторе займет столько же времени, как и в vim.


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

                                                            0
                                                            Действительно работает, но не на всех клавиатурах есть клавиша End. Мне например не очень комфортно печатать на большой клавиатуре, так что мне удобнее использовать Vim, в котором подобные клавиши чаще всего не требуются.
                                                              0

                                                              В этом случае можно часто используемым командам назначить комбинации из клавиш, которые есть на клавиатуре

                                                                0

                                                                Что-нибудь типа Ctrl-Alt-Shift+Shift+Space

                                                                  0
                                                                  Да чего уж мелочиться, давайте сразу придумаем что-то типа RCtrl+LShift+Numpad* — RCtrl+RShift+Alt+Esc — LCtrl+LShift+AltGr+Win+S. Для сохранения файла, например.
                                                                    +1

                                                                    Да зачем придумывать. Вон, в Visual Studio дефолтно, например, "Open folder" — Ctrl-Shift-Alt-O, "SQL Explorer" — Ctrl-\-Ctrl-S. Чрезвычайно удобно, и, главное, что очень легко запоминается.

                                                                      –1
                                                                      А как в vim папку открыть, простите? Или «он же редаааактор, только с одним файлом умеет» опять? Почему вы не привели в пример просто открытие файла, которое везде (в современных графических приложениях) Ctrl+O?
                                                                      И как часто вы папку открываете? Раз в день? 2 раза?
                                                                        0
                                                                        А как в vim папку открыть, простите?


                                                                        Так же как и файл?

                                                                          –2
                                                                          Так же как и файл?
                                                                          А, пффф, так и в VS папка и файл открываются одинаково мышкой через «Файл».
                                                                          +1

                                                                          :e MyFile.txt, а на деле даже просто: :e My<Tab>

                                                                            –2
                                                                            Ну не знаю, Shift+; e <пробел> против Ctrl+O? На мой взгляд, в vim надо больше клавиш нажать.
                                                                            Но как мы уже выяснили раз 20, наверно: если вам нравится нажимать больше — нажимайте больше (в обе стороны работает).
                                                                              0

                                                                              Ага. Только, вот, после Ctrl-O еще надо хвататься за мыш и по диалогу елозить прицеливаясь куда надо.

                                                                                0
                                                                                После Ctrl+O фокус ввода уже находится в поле для имени файла. Если у вас открыта нужная папка — точно так же вводите MyFile.txt (и окошко вам даже подскажет, можете стрелкой на клавиатуре выбрать) и нажимаете Enter для непосредственно открытия.
                                                                                  0
                                                                                  vim быстрее только там, где работа с текстом автоматизируется. При наборе текста число нажатий на клавиши везде одинаково.
                                                                                    +1

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

                                                                                    0

                                                                                    И сколько раз мне стрелку жать, вместо одного таба, чтобы файл выбрать?

                                                                                      0
                                                                                      Столько же, сколько и Tab, в том числе если набранные символы являются началом имени только для одного файла — одно нажатие на стрелку.
                                                                                      upd: Хотя Tab же наверняка дополняет имена аналогично bash'у? Тогда Tab в некоторых ситуациях чуть выгоднее
                                                                                        0

                                                                                        Разумеется дополняет.

                                                                0
                                                                Ctrl+End. Не мышью, конечно, но и vim для этого учить не надо
                                                                  –1

                                                                  Зачем учить какой-то Ctrl-End. Мышью ведь удобнее протянуть ползунок в самый низ.

                                                                    0

                                                                    конечно, это ведь нужно прочитать где-то, что Ctrl+End, время потратить

                                                              0
                                                              И вы действительно кликаете?

                                                              Да, действительно. Все ищу способ, как бы еще одну мышь подключить под вторую руку. И тогда вообще можно будет еще и код писать на экранной клавиатуре. :)))

                                                        +5
                                                        1. Перенастройте клавишу Caps Lock (но это необязательно)

                                                        Caps Lock действительно самая бесполезная клавиша, но лучше на нее повесить переключение языков, если вы «счастливый» носитель кириллического языка, конечно же.

                                                          +2

                                                          Ну нет, нет же!


                                                          /sarcasm on
                                                          Caps Lock надо переназначить на LCtrl/LControl (потому что emacs-ом надо пользоваться.)
                                                          /sarcasm off,


                                                          а нижнюю левую (у меня это fn) — уже на переключение языков.


                                                          Еще можно нижнюю левую на один язык, а нижнюю правую пожертвовать для другого (и наклеить на них аутентичные надписи ЛАТ/РУС.)

                                                            +1

                                                            Menu — переключение на En
                                                            Shift-Menu — переключение на Ru
                                                            И индикатор текущей раскладки становится не нужен!

                                                              +1
                                                              На макбуке у меня настроен так, чтобы при обычном нажатии Caps Lock она работала как Esc, а в комбинации с другой клавишей — как LCtrl. По мне удобно.
                                                                +1
                                                                Кстати, LCtrl на месте капслока — место довольно каноничное. У меня такая вот клавиатура завалялась:

                                                                тыц

                                                                  +1

                                                                  Тут та же петрушка: Control (СУ) под мизинцом, внизу раздельные переключатели раскладки. Умели ведь!


                                                                  Кликми

                                                                  image

                                                                    –1
                                                                    Так еще и английские буквы стояли там же, где похожие русские, и можно обойтись без дурацкой qwerty.
                                                                      0

                                                                      Вот да! Помню, был у меня электронный словарь с фонетической клавиатурой (только обратной — от QWERTY) и это было чертовски удобно.

                                                                        0

                                                                        Не напоминайте мне об этой боли. Из-за этого мне пришлось, в срочном порядке, изучать ассемблер, по книжке Питера, нашего, Нортона. Потому что с такой раскладкой, без резидента переназначающего клавиши, играть на Искре 1030 в любимых леммингов (управление как на спектруме — qaop) не было ну совершенно никакой возможности! ;-)

                                                                      0
                                                                      У меня и сейчас такая, но без надписей. Вот фото из сети
                                                                      Заголовок спойлера
                                                                      image
                                                                        0

                                                                        SUN, я полагаю?

                                                                          +1
                                                                          Ага, она самая.
                                                                      0
                                                                      У меня четыре языка, так что не вариант. Чтобы однозначно переключиться на нужный, я повесил каждый язык на сочетания ctrl+1, ..., ctrl+4. То есть, не глядя ни на клавиатуру, ни на монитор, я могу однозначно выбрать язык, на котором пишу.
                                                                      И что вешать на капслок пока не очень придумал.
                                                                        0

                                                                        Четыре, это жестко.
                                                                        никогда так не замочивался, трех хватало, особенно мило когда хотя-бы один RTL язык.
                                                                        А Ctrl+num это жеш табы терминала, не?

                                                                        0

                                                                        Caps Lock совершенно точно не самая бесполезная клавиша. Клавише Fn это звание подходит гораздо больше. Или, если выбирать среди клавиш с индикатором состояния, то Scroll Lock.

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

                                                                            Бесполезных клавиш много разных. Только расположены они обычно не самым удобным или постоянным образом, чтобы на них вешать что-то полезное. Иногда они оказываются не такими уж и бесполезными.
                                                                            Fn во многих случаях не выходит за пределы самой клавиатуры (в смысле невозможно детектировать нажатие и отпускание программно, поскольку клавиатура не порождает код нажатия или отпускания сразу после Fn, только если после нее, соответственно, нажать или отпустить другую клавишу). Кроме того без него иногда недоступны PgUp, PgDn, Home и End. Да и всякие полезности через нее часто работают вроде управления яркостью экрана и громкостью звука, включением-выключением тачпада и т.п… А еще ее иногда вообще на клавиатуре нет.
                                                                            Scroll Lock часто расположен нестандартно (искал на своей клавиатуре, нашел — Fn+F12). На другой клавиатуре вообще не нашел.
                                                                            Не зря то же переключение раскладок часто вешают на Ctrl, Alt и Shift в разных комбинациях. Только это порождает свои проблемы, поскольку данные клавиши часто задействованы в других комбинациях, что часто приводит к спецэффектам (часто встречаю — MS Word, переключение по Alt-Shift, сразу после переключения раскладки часто переводит в меню, после чего клавиши с буквами приводят к выбору различных пунктов меню, когда безобидно, а когда и что-то серьезно-неприятное может произойти).
                                                                            Вот и получается, что CapsLock единственная "ненужная" клавиша, которая находится в подавляющем большинстве клавиатур на одном и том же месте, реально используется по назначению крайне малым количеством людей, почти не задействована в популярных и стандартных сочетаниях клавиш, иногда еще и состояние на клавиатуре подсвечивается. В результате прямо просится на место переключателя двух раскладок (при желании можно и трех, но это немного сложнее и не так удобно).

                                                                              0
                                                                              Caps Lock совершенно точно не самая бесполезная клавиша. Клавише Fn это звание подходит гораздо больше. Или, если выбирать среди клавиш с индикатором состояния, то Scroll Lock.

                                                                              Ага. Особенно на ноутбуке, где, у меня, например, тот же Ins без Fn вообще не нажать. А переназначать Esc на ScrLock смысла нет, так как ScrLock удалена от букв еще дальше.

                                                                            +6
                                                                            позволяет пользоваться в браузере клавиатурными сокращениями Vim, отвечающими за перемещение по документу (H, J, K, L и так далее).


                                                                            Ну, вообще-то в наше время, в отличие от тех времен когда их вводили, уже и на всех клавиатурах есть стрелки и pgup-pgdn, и сам вим научился их понимать…

                                                                            "… вы что, до сих пор жарите сосиски на той маленькой сковородке?"
                                                                              +2

                                                                              С одной стороны — да, а с другой у клавиш управления курсором те же проблемы, что у мышей:


                                                                              1. Надо убирать руки с «основной» клавиатуры.
                                                                              2. Местоположение не стабильно.
                                                                                +1
                                                                                Учитывая тоннельный синдром, необходимость постоянно менять положение рук — это благословение, а не проблема.
                                                                                  +1

                                                                                  Перерывы и разминку надо делать, а не полагаться на полумеры

                                                                                    0
                                                                                    Перерывы по определению короче, чем время работы. И перерыв можно пропустить, а работу — нет.
                                                                                      –1

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

                                                                                +1
                                                                                Смысл HJKL в том, что эти символы рассчитаны под правую руку в её дефолтном положении на клавиатуре. Они требуют минимум движений из дефолтного положения, и, соответственно, минимум времени. Стрелки требуют больше.

                                                                                Правда, я всё равно пользуюсь стрелками просто из-за того, что привык по другим программам)
                                                                                  +3
                                                                                  Сомневаюсь, что скорость программирования ограничена именно скоростью набора на клавиатуре.
                                                                                    +1
                                                                                    Ну, если скорость ввода не имеет значения, давайте из программистского софта уберём хоткеи.
                                                                                      +3
                                                                                      Не утрируйте, пожалуйста, а то следующим шагом будет «ну раз работаете в графической ОС, то давайте вообще клавиатуру уберём, на экранной будем набирать».
                                                                                      Если программист думает быстрее, чем пишет, то это либо крайне простой код (в котором просто негде ошибиться), либо он пишет бойлерплейт вручную. Ну или третий вариант — он пишет со скоростью стенографистки, но с такой кучей опечаток, что потом так же быстро бежит по всему коду и исправляет ошибки (вероятно, за несколько проходов). Все эти ситуации не очень нормальные.
                                                                                        0
                                                                                        Клавиши HJKL нужны не для того, чтобы «писать со скоростью стенографистки», а для того, чтобы перемещаться по уже написанному. То есть никакого «думает быстрее, чем пишет» в их случае нет.
                                                                                  –1

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

                                                                                    0
                                                                                    Это не столько vim научился их понимать, сколько терминал
                                                                                    +23

                                                                                    Использование Vim как среды для разработки без плагинов невозможно. Так что, основная сложность тут будет мэйнтейнить персональный конфиг на 500+ строк. Примерно поэтому, когда я понял, что солидную часть времени я трачу не на собственно работу, а на настройку Vim, то ушел на VSCode. Даже на серверах его использовать уже не особо хочется.


                                                                                    Жаль, что даже в рамках Neovim мало что меняется. Поддержки PCRE нет и не предвидится. Удаление текста как было реализовано через одно место, так и осталось. Мультикурсор только через сторонние плагины. Унылый VimL с его глобальной областью видимости и т.д.

                                                                                      0
                                                                                      Есть варианты. Например сам vim я пользую только в консоли для быстрых правок. Для написания кода безусловно удобнее использовать IDE. Но к счастью одно другого не исключает и существуют плагины для большинства редакторов позволяющие внедрить самую востребованную функциональность vim. Такие же плагины есть и для браузеров. Добавляем к этому i3wm с vim подобными хоткеями и практически полностью отказываемся от мыши(изредка использую touchpad).
                                                                                        +1

                                                                                        а мне это нравится, мейнтейнить конфиг на 500+ строк, я вот прям удовольствие получаю, когда оптимизирую свой конфиг. Тоже самое про весь мой сетап — tmux, dwm, mutt, etc.

                                                                                        0
                                                                                        Использование Vim как среды для разработки без плагинов невозможно. Так что, основная сложность тут будет мэйнтейнить персональный конфиг на 500+ строк.

                                                                                        500+ строк — это фигня.
                                                                                        У меня скрипты на javascript для Notepad++ (плагин jN) по объему к 400 кб. приближаются. В самом большом, реализующим Intellisense для js, vbs, php Intell.js — сейчас 3,5к строк. И все равно эта хрень довольно часто ошибается. :( Надо бы доделать.
                                                                                        И в итоге функций не так уж и много добавил:


                                                                                        Заголовок спойлера

                                                                                        Скрипты->Список функций Ctrl+1
                                                                                        Скрипты->Перейти к определению F12
                                                                                        Скрипты->Вернуться назад Ctrl+-|Alt<-
                                                                                        Скрипты->Пойти вперед Ctrl++|Alt->
                                                                                        Скрипты->addToHistory..print
                                                                                        Скрипты->Tags navigation
                                                                                        Скрипты->Tags navigation->Перейти к тегу на выбор Ctrl+Shift+3
                                                                                        Скрипты->Tags navigation->Список тегов script Ctrl+4
                                                                                        Скрипты->Список объектов (Intell.js) Ctrl+2
                                                                                        Скрипты->Список объектов тек.файла (Intell.js) Ctrl+3
                                                                                        Скрипты->
                                                                                        Скрипты->Включить отладку Intell Ctrl+Shift+F9
                                                                                        Скрипты->Intelisense run ctrl+I
                                                                                        Скрипты->Intellisense (вкл/выкл) ctrl+F8
                                                                                        Скрипты->Перечитать шаблоны
                                                                                        Скрипты->UntilMenu
                                                                                        Скрипты->UntilMenu->UntilMenuCut
                                                                                        Скрипты->UntilMenu->UntilMenuCut->Comment selection Ctrl+/
                                                                                        Скрипты->UntilMenu->UntilMenuCut->Удалить строки длинее N Ctrl+Shift+K
                                                                                        Скрипты->UntilMenu->UntilMenuCut->Обрезать строки длинее N
                                                                                        Скрипты->UntilMenu->UntilMenuCut->testCMakeParser Alt+T
                                                                                        Скрипты->UntilMenu->Разбить строки на сегменты по 110 симв. Ctrl+Shift+S
                                                                                        Скрипты->UntilMenu->Удалить пустые строки Ctrl+Shift+E
                                                                                        Скрипты->UntilMenu->VimComplete Ctrl+L
                                                                                        Скрипты->UntilMenu->Сортировать строки
                                                                                        Скрипты->UntilMenu->Сортировать строки Desc
                                                                                        Скрипты->Закрыть окно сообщений Ctrl+Shift+Q
                                                                                        Скрипты->Templater Shift+F12
                                                                                        Скрипты->
                                                                                        Скрипты->Скобки
                                                                                        Скрипты->Скобки->Вставить последние 'скобки' Ctrl+B
                                                                                        Скрипты->Скобки->Выбрать и вставить 'скобки' Ctrl+Shift+B
                                                                                        Скрипты->Скобки->Выбрать и вставить 'скобки'-2 Ctrl+Shift+V
                                                                                        Скрипты->Скобки->
                                                                                        Скрипты->Скобки->Вставить скобки каждой строке
                                                                                        Скрипты->Скобки->
                                                                                        Скрипты->Скобки->Открыть каталог настройки
                                                                                        Скрипты->Форматировать
                                                                                        Скрипты->Форматировать->Форматировать Ctrl+Y
                                                                                        Скрипты->Форматировать->Открыть конфигурацию tidy
                                                                                        Скрипты->Форматировать->MinifyCSS
                                                                                        Скрипты->Форматировать->Форматировать *.html (тек.дир) Ctrl+shift+Y
                                                                                        Скрипты->
                                                                                        Скрипты->Time addition(2.45+20 = 3.05) Ctrl+Shift+D
                                                                                        Скрипты->Eval selection Ctrl+Shift+C
                                                                                        Скрипты->sWaper Alt+W
                                                                                        Скрипты->en/decode URI Ctrl+F6
                                                                                        Скрипты->Punto switcher F6
                                                                                        Скрипты->Text processors
                                                                                        Скрипты->Text processors->Combine lines into paragraphs Ctrl+Shift+A
                                                                                        Скрипты->Text processors->Объединить текст в строку Ctrl+Shift+P
                                                                                        Скрипты->Отфильтровать текст по выделению Ctrl+Shift+L
                                                                                        Скрипты->
                                                                                        Скрипты->Тест квадратной скобки Ctrl+[
                                                                                        Скрипты->Translate…
                                                                                        Скрипты->Translate...->getWordTranslation Alt+F11
                                                                                        Скрипты->Translate...->
                                                                                        Скрипты->Translate...->To мessage
                                                                                        Скрипты->Translate...->Append selection
                                                                                        Скрипты->Translate...->Reaplece selection
                                                                                        Скрипты->Translate...->
                                                                                        Скрипты->Translate...->Edit translate file list
                                                                                        Скрипты->Translate...->
                                                                                        Скрипты->Translate...->E:\Utils_Dicts\001.txt
                                                                                        Скрипты->Translate...->E:\Utils\Qdictionary7\Dicts\enrus.dic
                                                                                        Скрипты->Translate...->E:\Utils\Qdictionary7\Dicts\rusen.dic
                                                                                        Скрипты->Translate...->E:\Документы\Литература_English\Словари\001-Словарь.txt

                                                                                        +1
                                                                                        Помимо ZZ есть еще, не менее удобная, ZQ которая завершает vim без сохранения открытого файла.
                                                                                          +6
                                                                                          Помнится, когда я первый раз попал в Vim — я как минимум полчаса разбирался, как из него выйти. Какое сочетание клавиш не нажмешь, комп только квакает и ничего не происходит((( «Как выйти из Vim » — самый популярный запрос в гугле про Vim
                                                                                          Если бы добрые люди не подсказали, застрял бы в нем навсегда.
                                                                                          Это как до такого додуматься — «esc ->: -> q»
                                                                                            +7

                                                                                            у меня это решалось проще: перезапуском компьютера :)

                                                                                              0
                                                                                              Уверен, что на баше вычитали
                                                                                                0

                                                                                                Кстати, да, прочитал. Лет через 5 после своих попыток освоить VIM.

                                                                                              +4
                                                                                              ctrl Z
                                                                                              ps
                                                                                              kill -9 `pidof vim`
                                                                                                –1
                                                                                                И он останется висеть в списке остановленных, пока вы не fg'шнете его
                                                                                                  0
                                                                                                  kill -9 достаточно эффективно убивает.
                                                                                                  Да, это не самый лутший способ выхода из vim, но мне помогло ;)
                                                                                                    +9

                                                                                                    Да я 10 лет в vi работаю! Просто не знаю как из него выйти.

                                                                                                      +4
                                                                                                      на самом деле, Николай Васильевич Кнут не сжигал четвёртый том искусства программирования, а случайно удалил его, пытаясь выйти из vim ©
                                                                                              +5
                                                                                              Еще как пользуюсь. И для правки конфигов, и для мелкого программирования, во студенчестве делал в нем (в связке с LaTeX) курсачи, презентации и писал диплом. Почта, кстати, тоже на нем вместе с mutt. В браузере vim-образный tridactyl. В общем, зависимость этот редактор вызывает жуткую.

                                                                                              Кстати, по поводу стрелочек (клавиш управления курсором) и hjkl. Мало того, что до стрелочек надо руку отрывать от алфавитно-цифрового блока, так еще и на многих ноутах они могут быть размещены совершенно «дизайнерским» образом.
                                                                                                +3
                                                                                                В браузере vim-образный tridactyl.

                                                                                                Я поступил радикальнее. Поставил qutebrowser


                                                                                                так еще и на многих ноутах они могут быть размещены совершенно «дизайнерским» образом.

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


                                                                                                Клавиатура для морожнопалочковопальцевых

                                                                                                macpooke

                                                                                                  0
                                                                                                  Лет 10 тому назад, я активно пользовался conkeror'ом. Потом был uzbl.

                                                                                                  Главная проблема таких браузеров в том, что средства для подавления нежелательного контента сильно уступают таким вещам как ublock, umatrix, privacy badger etc.

                                                                                                  И если 10 лет тому назад с этим можно было мириться, завернув браузер через squid с тем же rejik'ом, то сейчас всякой динамической гадости и трекеров стало несоизмеримо больше.

                                                                                                  Потому пользуюсь обвешанной лисой. Благо, что хоть возможность худо-бедно изменять интерфейс через userChrome.css еще сохранилась.
                                                                                                    0

                                                                                                    В qutebrowser встроенный адблок. Особой разницы, по сравнению с той-же лисой или brave, не заметил. Единственное что немного печалит, так это отсутствие интеграции с KeePassXC. Но ничего, будет время, порефакторю свои workflow скрипты для i3wm, заодно попробую прикрутить keepassxc-cli к браузеру.

                                                                                                      0
                                                                                                      Главная претензия к встроенным adblock'ам — отсутствие element-hider'a. То есть, хочется иметь возможность вручную вырезать мешающий элемент, не полагаясь только на списки.

                                                                                                      Вместо keepass, по старинке, пользуюсь связкой текстовика, gpg и grep.
                                                                                                +17
                                                                                                Vim — это один из примеров hard to learn, f**king hard to master. И если его использование для редактирования каких-нибудь конфигов на сервере я ещё могу понять (хотя у вас что, даже mc не стоит, что вы не можете более человеческий mcedit использовать?), то программировать в нём… Да будь он хоть трижды быстрым блокнотом, я думаю всё равно медленнее, чем пишу, а писать всё равно стоит в IDE из-за навигации, контекстного поиска, интеграции с отладчиком и т.д.
                                                                                                А уж vi-расширения для браузеров — это, простите, что-то вида «я не смог адаптироваться к графическому миру, поэтому использую клавиатуру».
                                                                                                  +1
                                                                                                  Но к счастью во многих больших IDE есть поддержка vim-mode. Это по крайне мере msvc и PyCharm. Вроде и в VScode есть, но я им не пользуюсь.
                                                                                                  И представляю насколько уныло бы было без этих плагинов.

                                                                                                  Так что всё хорошо вместе.

                                                                                                  А про mcedit не понял:
                                                                                                  Если там нет vim mode, то на кой леший он нужен? Это же неудобно.
                                                                                                  А если есть? То на кой леший он нужен? Это же бессмысленно.

                                                                                                    +11
                                                                                                    Если там нет vim mode, то на кой леший он нужен?

                                                                                                    А на кой везде нужно пихать vim-mode? Родные средства навигации — это что-то плохое? Почему вы (и другие) считаете, vim такой мегаудобный — потому что «я потратил неделю на изучение этих сочетаний клавиш, теперь хожу и выпендриваюсь»? Или просто вы не в состоянии использовать что-то другое? Адаптируетесь плохо, например.
                                                                                                    Может, вы к смартфону тоже подключаете внешнюю клавиатуру, чтоб и там использовать vim-комбинации?
                                                                                                      0
                                                                                                      А чего так пригорать-то?

                                                                                                      Что такое родные средства навигации? Родные для кого?

                                                                                                      Vim действительно удобный. И в некоторых (в большинстве) OS после установки (ещё без пакетов) в системе гарантировано есть vi (даже не vim). И какие-то настройки нужно призводить именно так.

                                                                                                      Зачем нужно изучать «родной» nano, mcedit и пр. со своими поистине интригующими новыми очень родными свойствами?

                                                                                                      Vim находится в актуальном состоянии, под множество ОС, действительно очень удобен.
                                                                                                      Никто его не превращает в IDE. Но поддержка в самих этих IDE vim режима намекает, что это довольно востребовано.

                                                                                                        +2
                                                                                                        Родные для кого?
                                                                                                        Для той программы, которой вы пользуетесь.
                                                                                                        И какие-то настройки нужно призводить именно так.
                                                                                                        Ну да, ведь мы же так часто пользуемся чистыми ОС приличный срок, и лишь потом dnf/apt-get install stuff.
                                                                                                        Зачем нужно изучать «родной» nano, mcedit и пр.
                                                                                                        Вы не поверите, но основные команды там прям на экране написаны, даже изучать не надо, достаточно просто в экран посмотреть.
                                                                                                        Но поддержка в самих этих IDE vim режима намекает
                                                                                                        Поддержка мыши или общепринятых Ctrl+X/C/V/F/H тоже намекает, что они очень удобны. А ещё они работают в гораздо большем количестве приложений сразу, без конфигурации.
                                                                                                          +1
                                                                                                          Для той программы, которой вы пользуетесь.

                                                                                                          Нет, для меня. Для той программы что я пользюсь запилили плагин с vim-mode. Это плохо?


                                                                                                          Вы не поверите, но основные команды там прям на экране написаны, даже изучать не надо, достаточно просто в экран посмотреть.

                                                                                                          Зачем, если есть родной vi/vim?


                                                                                                          Поддержка мыши или общепринятых Ctrl+X/C/V/F/H тоже намекает, что они очень удобны.

                                                                                                          Конечно удобны и главное привычны, так или иначе но Windows занимает 90+ процентов дестктопа.


                                                                                                          А мне за 20 лет работы с Unix системами + X удобно то, что выделение сразу в буфер обмена копирует и фокус ввода за мышкой следующий.

                                                                                                            0
                                                                                                            Это всё звучит как смесь стокгольмского синдрома и синдрома утёнка: «Я страдал, пока учил, но теперь я без него не могу жить. Поэтому хочу, чтоб он был везде»
                                                                                                              +6

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


                                                                                                              Желание сохранить удобный и привычный интерфейс это как раз нормально. Иначе бы не было столько плача про "Как плохо сделали в Win10 интерфейс".

                                                                                                                0
                                                                                                                Скорее «желание натянуть привычный интерфейс на всё, что запускается», потому что если для тех же IDE ещё можно понять, то для браузеров…
                                                                                                                  –1

                                                                                                                  Про браузеры вам расскажут люди которые этим занимаются.


                                                                                                                  Лично я начал полноценно осваивать браузеры параллельно с vim. Поэтому привык к их интерфейсам. Так же и с MS Office, LibreOffice. Вообще нет проблем. Даже с Windows особых проблем нет, кроме упомянутого выделения — копирование в буффер обмена.


                                                                                                                  А вот с IDE, да. Прямо как собака Павлова — вижу код, значит :wa! Потому что работаю чаще c vim чем с IDE, поэтому и выход — установить vim плагин.

                                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                      +1
                                                                                                                      Если ты даун, то и не поймешь никогда
                                                                                                                      Фу, как грубо. А самое главное — каково ваше обоснование? «Все вокруг мышеюзеры, а я — д'Артаньян»? Для себя можете хоть бинарно команды в USB отправлять, кнопка нолика под мизинцем правой ноги, а единички — под языком. Но оскорблять других просто ВОТ ТАК?
                                                                                                                      Может, у вас просто тяжёлый день выдался? Если так — советую поспать.
                                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                          0

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


                                                                                                                          Ужос какой. Ваше мнение безусловно более важно, ага.

                                                                                                                            –1
                                                                                                                            все нормальные программы урезают функционал, потому что 90% даунов и домохозяек его не юзает
                                                                                                                            То есть вы хотите, чтобы каждая прпограмма поддерживала все функции всех предыдущих версий, а также ещё и имела встроенную интеграцию схем управления от других? Это как, запустил Word — а он не поддерживает vim-схему, значит сразу говно? Или, простихосподи, запустил Steam, а он тоже не поддерживает — тоже «дауны и домохозяйки» виноваты? Может, ещё и микроволновка должна перемещаться по столу, если на ней нажимать hjkl?
                                                                                                                –1
                                                                                                                Поддержка мыши или общепринятых Ctrl+X/C/V/F/H тоже намекает, что они очень удобны.

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

                                                                                                                  +3
                                                                                                                  Не «бывает не так удобнее и быстрее», а «мне бывает не так удобнее и быстрее»
                                                                                                                    +2
                                                                                                                    Если вы когда-нибудь пытались донести до упорной девушки, что хоткеи в фотошопе или ворде удобней и быстрее, чем мышка, или, в том же ворде, не надо табами и энтерами отступы делать, потому что это неудобно, то вы должны понимать то, чему сейчас противитесь. Просто используйте вашу память и прожитый опыт.
                                                                                                                  +2
                                                                                                                  Не знаю, с чего бы ВИМу быть таким уж удобным, если все его «фичи» разрабатывались под вполне конкретную древнюю клавиатуру, а вовсе не по принципам эргономики.
                                                                                                                    +3
                                                                                                                    Полбеды, если бы просто под древнюю клавиатуру, так ведь под древние терминалы. Все эти приколюхи типа модальности — они ровно оттуда, из времен коннекта в 300 бод, когда набор текста уже сам по себе был челленджем и инструмент, позволяющий набирать текст, не дожидаясь визуальной обратной связи, реально помогал. Ну так это было, на минуточку, сорок лет назад, кое-что с тех пор поменялось…
                                                                                                                      0

                                                                                                                      Угу. Объёмы кода. Да что там кода. Конфигов! Выросли в разы! И вим с этими объёмами помогает ну очень хорошо разбираться. Вы-ж не жалуетесь на то что linux яляется идейным продолжателем и носителем идей unix, родом из 1969-го. А MacOS, так и вообще прямой потомок этого самого unix.

                                                                                                                        +1
                                                                                                                        Почему VİM, а не TECO? ТЕСO теперь вообще летать будет.
                                                                                                                          0

                                                                                                                          Вместо teco сейчас emacs. Ломать пальцы, выдавая емаксовые комбинации, как-то особого желания нет… Но у емакса тоже есть свои приверженцы. Но вообще, по эзотеричности, к нему ближе sed.

                                                                                                                    0

                                                                                                                    В большинстве своем многие программы используют уже устоявшиеся комбинации клавиш:crtl+c ctrl+v. Почему-то в vim пошли своим путем

                                                                                                                      0

                                                                                                                      Ctl-C/Ctl-V работают с буфером обмена. Где буфер обмена у консольного приложения?

                                                                                                                        +2
                                                                                                                        Вот прям вижу, как 100% пользователей vim и всяких vim-плагинов для приложений сидят исключительно в консольке. Вы, небось, тоже через elinks комментарий оставили?
                                                                                                                          0

                                                                                                                          Нет, но Windows Terminal с PowerShell у меня запущен постоянно. И речь шла совсем не о том. Изначально Vi/Vim были консольными редакторами еще тогда, когда GUI с clipboard вообще не было. И вообще, как я уже и сказал — Ctl-C/Ctl-V вполне себе работают в Vim. Просто зачем мне, например, жать Shift, потом семь раз жать стрелку вниз, а потом еще жать Ctl-C, когда я в vim я для этого просто жму "7yy"

                                                                                                                            +1
                                                                                                                            Если у вас GUI, то мышкой будет (потенциально) ещё быстрее, потому что не надо будет считать строки/слова/символы.
                                                                                                                            Если у вас CLI, то то же самое, потому что даже консольный режим в Linux'ах уже много лет как поддерживает мышь.
                                                                                                                              0

                                                                                                                              А там и не надо считать. :set relativenumber включён постоянно и сразу кажет сколько строк нужно скопипастить/удалить/сдублировать/закомментировать etc.

                                                                                                                                0
                                                                                                                                Если у вас GUI, то мышкой будет (потенциально) ещё быстрее, потому что не надо будет считать строки/слова/символы.
                                                                                                                                У вас есть опыт или вы пишите так вам хочется? Мне достаточно набрать vi" и я выделил текст в кавычках. Я за это время не успею перенести руку с клавиатуры на мышь и обратно, не говоря уже о том, что у меня нет опыта в шутерах, чтобы так быстро и точно, не промазав ни на символ, выделить текст. Номера строк отображаются слева, их не нужно долго считать, что позволяет довольно быстро, даже на созвонах подсказать в какой строке править текст.
                                                                                                                                  –1
                                                                                                                                  Шутеры не помогут, для выделений катайте Стар-/Варкрафт(=
                                                                                                                              +2

                                                                                                                              Покажите мне буфер обмена в SSH сессии, буду вам премного благодарен. ;-)

                                                                                                                                –1

                                                                                                                                А Ctrl-w / Ctrl-y в bash — это не подойдет?

                                                                                                                                  +1

                                                                                                                                  Не подойдет.

                                                                                                                                  0
                                                                                                                                  Знаете, в чём ирония? Вы наверняка открываете SSH-сессию из графической ОС (я крайне сомневаюсь, что ваш рабочий компьютер не имеет графического режима). А если вы работаете в графической ОС, то ваш терминал уже умеет работать с системным буфером обмена. Windows Terminal, MSYS Bash, Putty, XShell, Gnome Terminal — все они умеют копировать в системный буфер обмена текст с экрана, а также вставлять текст обратно из буфера.
                                                                                                                                  Если вы назовёте графическую оболочку терминала, которая не умеет использовать буфер обмена ОС — я буду крайне удивлён, но благодарен за любопытную информацию.
                                                                                                                                  UPD: только что проверил JuiceSSH на Android — она тоже умеет работать с системным буфером обмена.
                                                                                                                                    +2

                                                                                                                                    Технически ничто не мешает в линуксе перейти в консоль, открыть ssh и наслаждаться отсутствим системного clipboard.

                                                                                                                                      0
                                                                                                                                      Не мешает, да. Но зачем? Чтобы целенаправленно лишить себя графического окружения?
                                                                                                                                        +2

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

                                                                                                                                          +1
                                                                                                                                          Почему же не поверю, поверю. И даже поверю, что у вполне современных стоечных серверов тоже может быть исключительно CLI, да без мыши.
                                                                                                                                          Правда, есть два нюанса: чаще всего код для них пишут не на них самих (а в изначальной статье рекомендуют именно программистам переходить на vim), и редактирование конфигов != программирование (я писал об этом где-то на этой самой странице). Если хотите — интерпретируйте мою мысль как «программисты, оставьте vim админам»
                                                                                                                                            +2

                                                                                                                                            А потом такие "программисты" ставят IDE на сервер. Видел, знаю.

                                                                                                                                              0
                                                                                                                                              Ну знаете ли, некоторые и на Node.JS (и именно на JS, даже не TS) пишут части бекенда, в которых критична скорость и надёжность. А кто-то всерьёз заявляет, что подставки из красного дерева для акустического кабеля звук очищают от помех.
                                                                                                                                              Если человек, грубо говоря, не очень умный, то ему и пристрастие к vim не поможет. А если достаточно умный — он сам решит, что эффективнее использовать для задачи: vim, VS Code или вовсе скрипт на AWK написать.
                                                                                                                                      0

                                                                                                                                      Я как бы писал об этом выше. "Терминальный" копипаст совершенно спокойно работает в терминальном виме. Это же терминальное приложение — с чего бы ему там не работать. Просто мне, например, он нафиг не нужен, потому что копипастить какой-то от балды произвольный текст никогда вообще нет надобности, всегда работаешь с какими-то логическими блоками (например "вырезать/скопировать весь текст между скобками), а для этого куда как удобней вимовские команды.

                                                                                                                                        0
                                                                                                                                        Если вы работаете исключительно в рамках одного приложения (будь то vim, emacs, mcedit или ещё что угодно консольное) — безусловно, вам без разницы что использовать, тут на первое место выходят исключительно личные предпочтения.
                                                                                                                                        Однако как только вам понадобится взаимодействовать с другими приложениями (коллеге в Slack задать вопрос и приложить кусочек кода, скопипастить из Stack Overflow или ещё что угодно) — вы будете вынуждены использовать команды терминала.
                                                                                                                                        Вы можете сказать «при чём тут другие приложения, мы тут vim обсуждаем», но учтите, что мой предыдущий комментарий — это ответ на
                                                                                                                                        Покажите мне буфер обмена в SSH сессии
                                                                                                                                          +1
                                                                                                                                          Однако как только вам понадобится взаимодействовать с другими приложениями (коллеге в Slack задать вопрос и приложить кусочек кода,

                                                                                                                                          Вовсе нет. Если мне надо скопипастить в слак, например, абзац, внутри которого я нахожусь, то я просто нажму "+yip


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

                                                                                                                                            0

                                                                                                                                            "+yip — 5 кнопок, нужно запомнить. А выделить и скопировать первые 4 аргумента функции, например? Vs 1 движение мыши, которое работает одинаково что для абзаца, что для предложения.

                                                                                                                                              0
                                                                                                                                              С учётом Shift — 6 кнопок (при условии, что это именно "+, а не «кнопки с "+» и можно использовать '=)
                                                                                                                                                0
                                                                                                                                                С учётом Shift — 6 кнопок

                                                                                                                                                А для мыши можно еще посчитать миллиметры, которые ею проехать надо, и нажатия кнопки мыши, и Ctrl-C за две кнопки.

                                                                                                                                                  0
                                                                                                                                                  Лучше вообще считать не нажатия кнопок, а суммарное время выполнения всех операций с текстом за час/день, с учётом «блин, да что ж там за кнопка-то, v или S» (независимо от наличия vim-штуки, я, например, в VS Code часто пытаюсь переключить заголовочный/исходный файл с помощью F4, потому что много работал в Qt Creator'е).
                                                                                                                                                  Если у вас в вашем vim/Neovim/IDE с vim-плагином получается быстрее, чем в Notepad++/IDE без vim-плагина — вам, конечно, имеет смысл использовать vim-штуки. Если же vim-штуки тратят больше времени, то вы лукавите, возможно даже самому себе.
                                                                                                                                                  В любом случае, никто не заставляет вас резко отказаться от вашего уклада.
                                                                                                                                                    +1
                                                                                                                                                    вы лукавите, возможно даже самому себе.

                                                                                                                                                    Ага. А еще у меня биполярное расстройство, клиническая социопатия, и Эдипов комплекс с самого детства. Именно поэтому я использую вим, вместо поклонения Великой Мыши :)))

                                                                                                                                                  0

                                                                                                                                                  Вот именно. Vim позволяет делать очень крутые трюки с текстом, но запоминать правила составления заклинаний — :-/

                                                                                                                                                    0

                                                                                                                                                    Да вот как раз в вим все легко запоминается. Я бы мог и в обычной VS все нужные мне команды к шорткатам попривязать, только вот там я бы уже точно хрен что запомнил типа каких-нибудь Ctrl-Alt-K-Shift-F

                                                                                                                                                  0

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


                                                                                                                                                  И запоминается, кстати, очень легко если знать. "+ — использовать буфер обмена, y — "копировать", ip — "абзац". Два-три раза так сделаешь, а потом уже это делаешь вообще на автомате буквально одним движением. Тут, вот, например, сказали, что ZZ это "сохранить и закрыть файл", а я, если честно, про это даже и не знал — всю жизнь просто уже рефлекторно жму :wq и все, но надо будет теперь ZZ тоже попробовать :)

                                                                                                                                                    +1
                                                                                                                                                    Не троллинга или хейта ради, а интереса из-за спрошу: правда ли, что вы вообще не убираете руки с клавиатуры с момента начала работы и до перерыва? Я не могу поверить в это, если это правда, а если не правда, то все «это быстрее, чем убирать руку с клавиатуры» звучат несколько натянуто.