Vim — мой любимый редактор. Я начал его использовать много лет назад, когда перешел на Linux. Он пришелся мне по душе, так как я мог редактировать небольшие исходные файлы на своем четырехъядерном компьютере без необходимости долго ждать, пока он откроется.

Могу с уверенностью сказать, что Vim не плохой редактор и очень расширяемый, но это не повод говорить о том, что Vim подходит всем, так как это вопрос вкуса. При использовании Atom или Code у меня часто возникают зависания, бывает они длятся по нескольких минут.

Как вы думаете, сколько памяти нужно редактору, чтобы открыть следующий C файл?

#include <stdio.h>
int main() {
  printf("Hello, world!\n");
}

Использование памяти


А вот и ответ:

1*ZdqL3eJXV4v-ZlkDKJIlNgРедактору Code для открытия 60-байтного кода потребуется 349 мегабайт! Atom потребуется 256 мегабайт. А вот Vim нуждается всего в 5 мегабайтах.

Я также включил Nano, чтобы сравнить его с Vim и результат получился меньше чем 1 мегабайт.

Как насчет больших файлов? Открытие 6-мегабайтного XML-файла в Vim потребляет около 12 мегабайт. Nano практически на ровне с Vim. Code нуждается в 392 мегабайтах, а Atom в 845 мегабайтах!

1*UoLGhJjMeCbXfL0rBpcfBwВремя запуска


Давайте рассмотрим сколько времени требуется редакторам для открытия того же файла XML, а после открытия перемести курсор в конец файла. Atom и Code потребуется почти 20 секунд. Vim выполнит задачу за 4 секунды. Sublime меня приятно удивил, открыв всего лишь за секунду. Быстрее всех был Nano.


1*nWL-IyPzxygwIKBkhvuzQAВыполнение поиска и замена 100 000 слов, в том же XML файле показали достаточно неожиданные результаты. Nano и Atom потерпели неудачу, так как для выполнения задачи потребуется почти 10 минут. Atom завис несколько раз, перед тем как получить результат. Code выполнил задачу за 80 секунд, Sublime за 6 секунд. Vim справился за 4 секунды.

1*9m9YNUPgQWRgk-6dtlSFMgПечально смотреть на то, когда редактор потребляет всю вычислительную мощность и память, которые доступны на «современном» дорогостоящем ноутбуке.

Библиотека видеоматериалов по Vim, здесь вы можете познакомиться с программистами работающими на VIM и посмотреть как он работает.

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


  1. eisaev
    10.08.2017 18:21
    +11

    У меня у одного диссонанс: графики выглядят как реклама Sublime, а в заголовке Vim?


    1. Fesor
      10.08.2017 18:26
      -6

      sublime по мощи уступает vim-у все же.


      1. eisaev
        10.08.2017 20:36

        del


    1. mushamib
      10.08.2017 18:27
      +2

      в 3 из 4 графиков Vim лучше чем Sublime. Вряд ли это может быть хорошим результатом для Sublime


      1. eisaev
        10.08.2017 20:36
        +5

        Заметно, а не на уровне стат. погрешности, Sublime уступает только на первых двух графиках. Но и они не совсем понятны, т.к. по ним получается, что он при открытии 60-байтного кода сожрал в 1,5 раза больше памяти, чем при открытии 6-мегабайтного XML-файла. Похоже, что эксперимент не блещет чистотой.

        PS Не пользую Sublime и Vim. Использую иногда vi и то только по необходимости, когда иного не наблюдается.


        1. SlavniyTeo
          11.08.2017 14:24

          У графиков разная цена деления: на 60 байт Sublime потребовалось 50Мб, на 6 мегабайт — 75Мб.


          1. eisaev
            11.08.2017 14:34
            +1

            Да. Вы совершенно правы и это отбрасывает предположения о некорректности эксперимента конкретно по данному пункту. Однако «читабельности» графикам, к сожалению, не добавляет.


      1. prudis
        11.08.2017 11:51
        +6

        «Как вы думаете, сколько памяти нужно редактору, чтобы открыть следующий C файл?» — who cares?


        1. Massacre
          12.08.2017 03:49
          +1

          Редакторам под DOS вообще хватало 640кбайт на всё!


    1. dmitry_ch
      11.08.2017 01:00
      +3

      nano, по графикам-то он рулит (почти везде).

      И, да, по памяти ожидал другой результат увидеть, что vim кушает меньше всего, ан нет!


  1. asmrnv777
    10.08.2017 18:31
    +26

    Память нынче очень дешевый ресурс, а вот время — дорогой (автокомплиты, рефакторинги и прочие плюшки). Нормальная IDE может окупить отожранную память за несколько дней.


    1. alltiptop
      10.08.2017 18:45
      -5

      Вряд ли это можно как то противопоставить виму, время обучения и привыкания к нему — да, а вот про недостаток функционала всё чушь — vim'у вряд ли есть равные.


      1. bustEXZ
        10.08.2017 18:58
        +2

        а как же emacs? функциональности и расширяемости там тьма :)

        И интересен вопрос от пользующихся им, насколько круто он выполняет данные функции, как в посте автора?


        1. evseev
          10.08.2017 22:01
          +6

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

          PS: ввязываться в спор emacs vs vim категорически отказываюсь. Единственное, что наверняка можно сказать про emasc это то, что это отличная операционная система. Жаль только в нем нет нормального текстового редактора ;)


          1. yarric
            10.08.2017 23:29
            +1

            Менять сигнатуру метода умеет?


            1. Fesor
              10.08.2017 23:47
              +2

              нынче есть очень интересный тред — встраивать средства рефакторинга в тулинг идущий с компилятором/интерпритатором (как это например сделали ребята из TypeScript). В этом есть немало смысла, "не надо ждать пока все IDE добавят новые плюшки", это на руку разработчикам языков. А если все используют одинаковый тулинг для рефакторинга — то спорить кто лучше в этом явно смысла нет.


              1. Tiberiumk
                11.08.2017 13:04

                Плюсую, особенно если у языка маленькое комьюнити — эти тулзы очень сильно помогают


          1. Jamdaze
            11.08.2017 09:30
            +2

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


          1. marsianin
            11.08.2017 11:52
            +2

            В emacs есть evil-mode, режим, в котором он мимикрирует под vim. Так что есть там нормальный текстовый редактор (-:


          1. prudis
            11.08.2017 12:02
            +9

            «Какой бы бред вам не пришел в голову Vim это уже умеет» — ребята из JetBrains ехидно в сторонке улыбаются :)


            1. Myrgy
              12.08.2017 08:39

              к большому сожалению при включении VimMode в CLion нет ремапинга остальных шоткатов — они просто перестают работать. Да и в отличии от vim и emacs продукты JetBrain не работают по ssh (кроме как примонтировать раздел по sftp).
              Кстати интересный проект для emacs — spacemacs.


            1. Miha_S7
              12.08.2017 08:39

              JetBrains не текстовый редактор. Зачем вы его привели, не понятно


        1. velkonost
          11.08.2017 19:41
          -1

          Emacs работает круто и быстро! Перешел с vim и не жалею


      1. weirded
        12.08.2017 12:25

        Расскажите про автоматический рефакторинг в Vim (и сколько он с таким обвесом плагинами ест памяти).


    1. Free_ze
      10.08.2017 18:45

      Там все это решается плагинами.


    1. Sheriff_Light
      10.08.2017 18:52

      Вроде бы в статье и не говорится, что vim надо использовать, как IDE.
      У меня есть и Vim и Sublime, и IDE разные, все они выполняют разные задачи.


      1. asmrnv777
        10.08.2017 18:58

        Тут про редактор кода речь, если я правильно понял.

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


  1. nick_gabpe
    10.08.2017 18:37
    +7

    У vi/vim есть одна маленькая особенность: с самого начала это крайне недружелюбный интерфейс, недаром же один из самых популярных вопросов на stackoverflow это как выйти из vim. В nano с этим все проще: открываешь редактор и сразу есть подсказки по хоткеям, из коробки.
    Лично я использую sublime или nano, по ситуации.


  1. pda0
    10.08.2017 18:45
    +12

    В сравнении остро не хватает mcedit. :)


  1. mistergonza
    10.08.2017 18:53

    Интересно было бы узнать какие версии редакторов использовались, а то вон atom с каждой новой версией содержит какие-то улучшения по производительности.


  1. Cheater
    10.08.2017 20:07
    +4

    Статья вообще ни о чём. Из перечисленных трёх метрик (memory footprint, время запуска, скорость) первые 2 никому не важны. Скорость важна, но она далеко не единственное преимущество vim. Про основные фичи (удобство навигации, command/insert mode, text objects, расширяемость плагинами) скромно промолчали.

    PS: моя основная IDE — Emacs в режиме эмуляции клавиатурных комбинаций Vim (evil-mode) и это реально уберкомбо, соединяющее преимущества обеих сред.


    1. beeruser
      11.08.2017 23:29
      -2

      >>Из перечисленных трёх метрик (memory footprint, время запуска, скорость) первые 2 никому

      Кому как. У меня вот 2GB памяти. Можно поставить 4, но нужно перепаивать чипы, что я делать разумеется не буду.
      Редактор должен запускаться за 0 секунд. Не существует никаких причин чтобы было иначе.


  1. copyhold
    10.08.2017 20:18
    -11

    nano нельзя рассматривать как среду разработки. Это ж notepad.
    Так что если вы хотите на ЛЮБОЙ машине с ЛЮБОЙ ОС иметь привычный интерфейс среды разработки, альтернативы VIM-у нет.

    ЗЫ: и не надо про emacs — не про него тема.


    1. punkkk
      11.08.2017 14:44
      +8

      Пользуюсь продуктами JetBrains — в любой ОС получаю привычный интерфейс.


  1. Fox_exe
    10.08.2017 21:23
    +9

    Раз пошла такая пьянка, почему бы не добавить сюда Notepad++?
    Можно ещё сравнить с полновесными IDE (Visual Studio, Eclipse)… Но это уже будет перебор… Или нет?


    1. yarric
      10.08.2017 23:30
      +3

      Про ed ещё забыли!


    1. shurutov
      11.08.2017 14:23

      Единственное, что навскидку не придумывается (именно не придумывается, не факт, что данную функциональность проблематично реализовать) — это вся и всяческая визуализация, типа тех же ER-диаграмм и прочих связей в БД. А так из vim-a вполне себе лёгкую IDE замастырить, я думаю, не проблема.


      1. VolCh
        11.08.2017 14:26

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


  1. TimTowdy
    10.08.2017 21:24
    +6

    По мотивам недавних трех холиваров: угадайте на чем написаны Atom и Code?


    1. crea7or
      10.08.2017 22:04
      -1

      +gitkraken +ещё хренова куча всего.


      1. Tiberiumk
        11.08.2017 13:05

        На фреймворке electron (т.е. JS и вроде как TypeScript)


        1. Massacre
          12.08.2017 03:54

          И с прилагающимся браузером, который всё это и исполняет…


  1. izzholtik
    10.08.2017 21:47
    +10

    Статья из разряда "Hello world на Java занимает в 100 раз больше памяти, чем на С, и запускается в 20 раз дольше". У vi(m) та же самая проблема, что и у JS: его пользователи становятся фанатиками, кричащими, зачатую невпопад, о достоинствах и замалчивающими недостатки.


    1. vics001
      11.08.2017 15:00
      +1

      vim никуда не уходит и не уйдет. Сегодня это самый адекватный редактор для терминалов (ssh сервера) со слабым connection (ping > 100 ms). Так что пусть vim развивается, а люди его изучают.


      1. izzholtik
        12.08.2017 00:35
        +1

        Я второй день настраиваю фиговину через канал с пингом в ~5 секунд и потерями 70% D:
        Простое — через sed, сложное — в nano. Больше всего боюсь сделать cat какого-нибудь большого файла.
        Вроде пока жив.


  1. evseev
    10.08.2017 22:12
    -3

    Я все понимаю, но меня слегка смущают цифры. Я только что запустил AndroidStudio и ей потребовались 600М. Странно? Вот и я так думаю.

    Vim — один из самых дебильных редакторов. Более недружелюбного и уродского еще нужно поискать. Но его сила ни в удобстве. И даже ни в его фичах. Его основная сила в том, что на любой Unix и Unix-like системе он будет. И какой бы жидкий канал не был он будет отлично работать.


    1. VolCh
      10.08.2017 22:17
      +1

      Его основная сила в том, что на любой Unix и Unix-like системе он будет.

      Из коробки — далеко не факт, nano субъективно чаще, а права на установку далеко не всегда есть. И не уверен, что vim можно поставить на самый популярный десктопный Unix её стандартным установщиком.


      1. 9660
        11.08.2017 08:02
        +1

        Сможете вспомнить где «из коробки» не было vi(m)?


        1. VolCh
          11.08.2017 08:03
          -1

          Ubuntu


          1. 9660
            11.08.2017 08:07
            +1

            У меня почему-то присутствует. И присутствовал всегда. Именно при стандартной установке.
            Собственно поэтому я и удивился.


            1. VolCh
              11.08.2017 09:35

              Хм… Странно. Регулярно его устанавливаю и основная ОС в компании Ubuntu.


              1. Kliba
                11.08.2017 09:52
                +2

                Именно vim может отсутствовать, но вот vi будет везде и всегда, в любой Unix-like ОС.


                1. evseev
                  11.08.2017 12:01
                  -1

                  Я обратил внимание, что стоит именно Vim. А vi к нему прилинкован.


        1. MasMaX
          11.08.2017 10:52

          В серверных версиях нет точно, всегда ставлю допом.


          1. 9660
            11.08.2017 11:41

            Парни. Вот только что скачал ubuntu server 14.04. Поставил в виртуалке, выбрав опцию ssh-server.
            Vim в наличии.


        1. mag_gnus
          11.08.2017 14:23

          CentOS (Core)


          1. 9660
            11.08.2017 14:47

            http://mirror.yandex.ru/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
            Vi присутствует.


        1. dovg
          11.08.2017 19:09

          В минимальном дебиане его нет (по крайней мере в девятом).
          Первый раз /etc/apt/sources.d/ придется редактировать nano


          1. 9660
            11.08.2017 19:11

            Что есть минимальный debian?


            1. dovg
              11.08.2017 19:12

              1. 9660
                11.08.2017 19:26

                У меня смутное чувство что нетинстал все же не очень обычное «И не уверен, что vim можно поставить на самый популярный десктопный Unix её стандартным установщиком»


                1. dovg
                  11.08.2017 19:28

                  Ты же пишешь «из коробки». Вот в коробке нетинстала дебиана его нет. Учитывая, что в большинстве серверных конфигураций адреса зеркал приходится править, то первый раз их придется править нано.
                  Я же не утверждаю, что на дебиан нельзя поставить vim стандартными средствами. Глупо было бы утверждать такое.


                  1. 9660
                    12.08.2017 06:08

                    Установил debian-netinst. https://www.debian.org/CD/netinst/
                    Vi присутствует.


                1. VolCh
                  13.08.2017 16:47

                  "самый популярный десктопный Unix" — Макось. Linux не является Unix.


                  1. 9660
                    13.08.2017 17:00

                    Вот тут я пас. Никакой возможности проверить наличие vi(m) в этой ОС у меня нет.
                    Будем считать что нашли UNIX без vi(m).


                    1. Fesor
                      13.08.2017 17:14

                      Никакой возможности проверить наличие

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


                      Будем считать что нашли UNIX без vi(m).

                      на основании чего? в mac os vim есть.


                      1. VolCh
                        13.08.2017 18:11

                        Из коробки или надо из исходников собирать? :)


                        1. Fesor
                          14.08.2017 19:30

                          сча проверю на новом маке… version 7.4.8056 — из коробки.


                          1. isden
                            15.08.2017 09:54

                            Еще есть, например, в homebrew — 8.0.0893 в данный момент.


      1. klirichek
        11.08.2017 10:43

        он (точнее, vi) есть в busybox.


      1. evseev
        11.08.2017 12:00

        Если вы имеете ввиду MacOS, то Vim туда нормально заходит. Я себе поставил без проблем.


  1. VolCh
    10.08.2017 22:14
    +8

    91,56384% времени работы в vim использую его как редактор конфигов на серверах, 95,843684% времени для редактирования файлов на диске использую IDE от JetBrains.


  1. Akuma
    10.08.2017 23:06
    +5

    Эм. Vim умеет в рефакторинг, автокомплит (желательно не совсем глупый) и подсказки аргументов? Наверняка умеет за счет кучи плагинов.

    А вот умеет ли он в интеграцию с Docker, дебагерами, системами деплоя и тестирования, например? Синхронизацию с удаленными серверами, базами данных, удобная работа с Git? Управление менеджером пакетов? Сомневаюсь.
    Добавьте сюда еще 100500 фич современных IDE, о которых уже даже не задумываешься и Vim будет нервно курить в сторонке.

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

    P.S. Не сравнивайте потребляемую программой память и память, требуемую для открытия файла. Любая IDE без открытых файлов жрет памяти довольно много, но вот открытие файлов в ней — не жрет память практически совсем, как и Vim.


    1. acmnu
      11.08.2017 11:28
      +2

      Уж очень категоричный пост. На мой взгляд даже самые прошареные IDE довольно лимитированы во всем, кроме навигации и дебага. Я например категорически не могу пользоваться встроеными средствами, типа git. Мне на парядок удобнее пользоваться консольными программами, поскольку они быстрее и понятнее. А вот навигация по коду в режиме просмотра в Idea мне нравится больше чем в vim.


      Про интеграцию с docker не совсем понял. Умеет ли билдить, запускать в докере? Таки да, запускать он может что угодно и где угодно. У вас некореектное представление об этой экосистеме. Для IDE на java верно следущее: есть плагин — есть функциональность. Для vim же вполне достаточно: есть консольная команда — есть функциональность. Плюс интеграция с python, что в пределе позволяет любые манипуляции с любыми объектами (если есть соответствующий модуль в pip), при чем даже repl можно сделать.


      1. Akuma
        11.08.2017 11:38

        Для рутиных задач вполне хватает встроенных средств. Для всего остального, да, есть консоль, только вот нужна она довольно редко.

        Про Docker — просто первое, что пришло в голову. Здесь посыл в том, что IDE из коробки поддерживают популярные инструменты. Хотя интеграция в JetBrains с Docker мне не нравится, честно говоря.

        Весь этот спор про Vim vs IDE можно считать некорректным, т.к. Vim консольный, а современные IDE нет. Мне, как и 99% их пользователей, только лишь этой разницы хватит в пользу IDE.

        В пользу Vim обычно приводят какие-то сумасшедшие кейсы типа «Я могу с помощью пары нажатий и регулярки заменить какую-то неведомую фигню на другую неведомую фигню». И вроде бы да, это круто. Вот только зачем? Нормального рефакторинга и простого Поиск/Замена хватает в 99.999% случаев.

        В общем, статья ни о чем :)


        1. acmnu
          11.08.2017 12:12
          +3

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

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


          Я так прикидываю, что дело здесь даже в консольности, а скорее всего в команности, если так можно сказать (поскольку например mcedit тоже консольный, но не командный). Т.е. когда что-то хочешь сделать в IDE, ты либо знаешь хот кей, либо лезешь в минюшки. А в vim — либо знаешь хот-кей, либо выполняешь команду, в командной строке (не знаешь команду, говоришь :help).


          Ну и ещё один фактор популярности vim это эргономика: не зря же в каждой IDE есть vim плагин для редактора (рекомендую попробовать кстати).


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


          1. VolCh
            11.08.2017 12:42

            Большинство vim'еров держат рядом открытый терминал и выполняют в нем все, что нужно, а в vim только правят.

            Грубо, я так же работаю и в IDE. git, docker, файловые команды, иногда grep, tail — это всё в консоли, а в IDE — просмотр и правка кода, иногда отладка. Иногда в консоли открытой в IDE запускаю vim даже для правки конфигов :)


        1. evseev
          11.08.2017 12:35

          Разве с вами кто-то спорил? Вы спросили умеет-ли Vim? Вам ответили — умеет.

          Мне, честно говоря, вообще не понятен посыл одно против другого. Зачем? Тем более для таких разных инструментов. По-моему куда лучше смотрится Vim + IDE.

          Лично я не вижу ничего зазорного в том, что бы проект писать в IDE, а скажем какие-то файлы открывать в Vim и производить поиск или анализ. Если информации много. Скажем сотни тысяч строк, то выискивать что-то руками или простым поиском- гиблое дело. А если строки очень похожи, то вообще жесть. И при этом даже несложная регулярка поможет вам сэкономить кучу времени и нервов.


        1. VolCh
          11.08.2017 12:40

          Весь этот спор про Vim vs IDE можно считать некорректным, т.к. Vim консольный, а современные IDE нет. Мне, как и 99% их пользователей, только лишь этой разницы хватит в пользу IDE.

          Вот как раз TUI или GUI особого значения не имеет. Для меня главное преимущество IDE — полноценная поддержка такой сущности как "проект" и полноценный синтаксический анализатор.


        1. PlatinumThinker
          14.08.2017 13:17

          Попользовался плагином Fugitive (поддержка git в vim), теперь почти не использую git с консоли.
          Так же хочу заметить у vim несколько пакетных менеджеров: Vundle.vim, vim-plug, pathogen.
          Концепция у вим здоровская: он отлично умеет то для чего создавался: редактирование текстов, и для новичков нужно иметь немного усидчивости и посидеть на голом виме, чтобы понять что он может из коробки, без плагинов.
          Кстати редактирование кода через ftp, ssh тоже из коробки (читать netrw)


    1. Delphinum
      11.08.2017 13:54
      +2

      Эм. Vim умеет в рефакторинг, автокомплит (желательно не совсем глупый) и подсказки аргументов? Наверняка умеет за счет кучи плагинов.

      А вот умеет ли он в интеграцию с Docker, дебагерами, системами деплоя и тестирования, например? Синхронизацию с удаленными серверами, базами данных, удобная работа с Git? Управление менеджером пакетов? Сомневаюсь.

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


  1. robert_ayrapetyan
    10.08.2017 23:06

    При установке vim-a на headless сервере он тянет под 200 мб зависимостей, это единственное, что в нем раздражает.


    1. 0xd34df00d
      11.08.2017 03:51
      +4

      Так надо ебилд с -X мержить!


      1. robert_ayrapetyan
        11.08.2017 18:10

        ебилд — это система сборки в каком-то дистрибутиве линукса или что?
        Я про pkg install vim в FreeBSD если что. Собирать из исходников — тоже не вариант на сервере по нескольким причинам (не знаю как в Линуксах, но в FreeBSD сборка из исходников обычно натягивает зависимости новее, чем в системе пакетов, отсюда вылазят всякие конфликты иногда, т.е. нужно либо все из портов собирать, либо все из пакетов, миксовать не рекомендуется).


        1. 0xd34df00d
          11.08.2017 19:31

          Да, это как порты в FreeBSD, только в Gentoo.


  1. whitedruid
    10.08.2017 23:45
    -1

    У некоторых комментаторов наблюдается «гороховый эффект» лишь при одном упоминании vi/viM :) На мой взгляд, vi/viM — стандарт «де-факто» для использования в UNIX-like OS и без хотя бы базовых знаний команд vi/viM в Linux, не говоря уже о UNIX и коммерческих UNIX, комфортно и эффективно работать работать вряд ли получится. Однако вышесказанное не умоляет достоинств других текстовых редакторов — речь идёт исключительно о сложившейся традиции или «выборе сообщества», «выборе аудитории пользователей» — как это не назови.


    1. daggert
      11.08.2017 00:28
      +3

      > На мой взгляд, vi/viM — стандарт «де-факто» для использования в UNIX-like OS и без хотя бы базовых знаний команд vi/viM в Linux, не говоря уже о UNIX и коммерческих UNIX, комфортно и эффективно работать работать вряд ли получится.

      Да не скажите. Вполне себе нормально живется без знаний vi/vim (: Для 99% случаев поправить мелкий скрипт и nano хватает.


      1. raskal
        12.08.2017 08:39
        -1

        Скорее всего у вас достаточно узкая специализация. Первые 10 лет работы в unix-like операционных системах я тоже думал, что мне нормально живется без знаний vi/vim.


        1. AlexBin
          12.08.2017 11:50

          Думаю, на этом ресурсе приветствуются аргументы, а не пафос.


          1. raskal
            14.08.2017 23:49

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


        1. daggert
          12.08.2017 12:15
          +2

          Я средней руки программист-сисадмин-эникейщик, у меня 32 сервера под юниксом (от фряхи до qnx) и я не представляю зачем мне нужен vi/vim. Если мне надо поправить мелкий скрипт я сделаю это при помощи nano. Если мне надо поправить большой или написать новый — я не буду это делать на живчике, а скачаю на свой компьютер и запущу нормальную IDE. Хотя такой необходимости у меня просто нет, ибо на компьютере где я работаю есть точные копии того что лежат на сервере и я могу поменять у себя и залить все одной кнопкой.


          1. raskal
            14.08.2017 23:55

            Ну вот есть задача потестить новый фреймворк. Можно для этого запускать IDE, конечно. Но как быть в случае с пайтоном, например, если машина для разработки удаленная? Как подебажить опенстек на удаленном сервере? Можно, конечно, ковырять скрипты в тысячи строк с nano, но это просто не так удобно, как с vim, да и не везде есть nano (как и права на его установку), а vi 100% есть везде. Что делать, если надо написать небольшой модуль к Puppet, купить RubyMine? Как быстро поправить конфиг (выровнять строки, закомментить что-то)? Как быть, в конце концов, если редактируешь файл из nano, а sudo вызвать забыл? Абсолютно все вышеперечисленное можно делать без vi/vim, но когда вы делаете это в нем, вы не думаете обо всех этих сопутствующих проблемах, вы думаете только о том, как решить задачу. Может, такое сравнение понравится не всем, но это как печатать 10 пальцами — вы не думаете о кнопках, вы думаете только о том что вы хотите напечатать. Это позволяет концентрироваться и выполнять поставленную задачу лучше.


            1. AlexBin
              15.08.2017 00:27

              — я каждый день как раз пишу на питоне на удаленном сервере, IDE автоматически заливает файлы по sftp по нажатию ctrl + s
              — Все остальные описанные операции хорошо делает scp + notepad++ например, при сохранении файла в блокноте, сцп автоматически заливает файл на сервер. Notepad++ довольно неплохо справляется с текстовыми задачами, к нему тоже есть куча плагинов. Да он и без плагинов довольно мощный, поддерживает кучу синтаксисов, макросы и всякое.
              — с правами согласен, либо рут открывать по ssh, либо менять права на конфиг, не очень удобно. Но если вы руками правите кучу конфигов на куче серверов, то вы что-то делаете не так. А если один конфиг в качестве исключения, то тогда можно и права ненадолго сменить.


              1. raskal
                15.08.2017 00:47

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

                Про все остальные операции — notepad++ не кроссплатформенный. И если вы им пользуетесь, то скорее всего, у вас интерфейс системы не очень подходящ под удобную работу по ssh. А так — он хороший, да. Почти как vim. Только с окошками и мышкой надо побольше тыкать.

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


            1. daggert
              15.08.2017 00:55

              Если вы зашли на удаленку для того чтоб там «ковырять скрипты в тысячи строк с nano» — вы делаете что-то не так.
              Поправить переменную — любой редактор подойдет.
              Поправить скрипт — я лучше его скачаю и буду править локально и залью обратно, мне как-то спокойней это делать в удобном окружении настроенной IDE.

              Ну и по пунктам:
              > Что делать, если надо написать небольшой модуль к Puppet, купить RubyMine?

              Не знаю что это такое, простите.

              > Как быстро поправить конфиг (выровнять строки, закомментить что-то)?

              Я справлялся в nano. Самый сложный конфиг скачивал локально, ибо там было 2000 строк.

              > Как быть, в конце концов, если редактируешь файл из nano, а sudo вызвать забыл?

              Ну это просто нелепая ситуация.

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

              Меня уже лет десять пытаются тыкать носом в консоль и приучить что любое действие в ней удобней. Нет, это не так. Это привычней тем кто учит. С vim точно такая-же история. Вы к нему привыкли, вам в нем удобней — а мне удобней и привычней в nano и я еще не встречался с задачами где-б он меня тормозил. Я не вижу для себя никаких преимуществ, которые я получу овладев данным инструментом.


              1. raskal
                15.08.2017 01:09

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


                1. daggert
                  15.08.2017 09:51

                  Вы лукавите. Человек всегда ограничивает свой кругозор в выборе. Я сделал ставку на IDE от Jetbrains, этот инструмент покрывает 400% моих требований. До этого я делал ставку на Qt. Зачем мне может понадобиться vim? Чтоб в беседе упомянуть «А я знаю vim»? Я им пользоваться не буду, у меня есть полноценная IDE, с подсветкой, отладкой, системой контроля версий и удобным для меня внешним видом, удобными хоткеями наконец, загрузкой на сервер одной кнопкой, подсказками.

                  Вы предлагаете учить инструмент на просто так?


    1. acmnu
      11.08.2017 11:30

      Это уже не совсем актуально. Во многих мейнстримовых дистрах nano по дефолту в качестве EDITOR, хотя и vi там есть.


  1. nikitasius
    10.08.2017 23:46

    Консоль — только VIM.
    GUI — notepadqq.


    1. dmitryrf
      11.08.2017 12:34

      Не знал про такой, спасибо!


  1. Finesse
    11.08.2017 02:09
    +3

    Какая целевая аудитория у Atom? По скорости запуска и работы он как большая IDE, а по возможностям как простой текстовый редактор (например, Sublime).


  1. Harrix
    11.08.2017 02:16

    А куда делся notepad++?


    1. igorch96
      11.08.2017 03:58

      Во, и TextWrangler?


  1. susnake
    11.08.2017 03:55

    sed, vi
    Под виндой notepad++, но только когда нужно открыть мелкий (<200МБ) текстовый файл.


  1. pmcode
    11.08.2017 07:18
    +1

    Я честно, долго и упорно пытался приспособить Vim как средство для web-разработки. Но даже с кучей плагинов он умеет меньше чем VSCode из коробки. Потом для Markdown. Но опять, отсутствие превью склонило выбор в пользу VSCode. В итоге, сейчас он прижился в основном как консольный редактор. Еще им удобно работать с большими файлами или если требуется большой объем, особенно нестандартного, редактирования текста. Все-таки история команд иногда очень сильно выручает.

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

    Надеюсь неовимовцы все-таки осилят LSP и тогда можно будет снова подумать о конкуренции Neo(Vim) с современными редакторами для разработчкиов. Потому что сейчас Vim ее полностью проиграл, что косвенно показывает количество и качество плагинов.

    Мой конфиг можно посмотреть и покритиковать на гитхабе.


    1. isden
      11.08.2017 09:24

      > Еще им удобно работать с большими файлами

      С большими — не очень. Он начинает сильно тормозить на файлах в районе 300-600 метров. Я как-то попробовал открыть в нем sql дамп на что-то в районе гигабайта — он просто упал через минут 5-7 размышлений. К слову, sublime с этим файлом справился быстро и на ура.


      1. ZyXI
        11.08.2017 09:43
        +1

        Большие файлы как раз проблема: Vim грузит в память весь файл разом. Ещё больше проблема файлы с длинными строками: здесь одна строка — один C’шный unsigned char * и с длинной строкой реально не готовы работать ни подсветка синтаксиса, ни код для её редактирования.


  1. OnYourLips
    11.08.2017 07:51
    +3

    А если обвесить vim плагинами до такой степени, чтобы он стал IDE, и сравнить?
    Что-то мне подсказывает, что он начнет проигрывать.


    1. quasilyte
      11.08.2017 09:32

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

      Из-за его однопоточности всё может дойти до того, что при большом количестве событий на
      печать/перемещения курсора могут возникать подвисания (freeze) редактора на небольшое,
      но замечаемое глазом время (0.1-0.3 секунды).
      Если честно, всё равно по ощущениям более отзывчивый, чем IntelliJ IDE на достаточно мощных машинах,
      а на моём ноутбуке так её лучше не запускать, рискуют на пару с браузером вогнать кого-нибудь в swap.

      Но по потреблению памяти, нет, не факт, что будет проигрывать.
      Описанный выше «задумчивый» Emacs даже на достаточно большом количестве немаленьких буферов
      потребляет примерно 60-80Mb.

      tl;dr — да, вы правы, но экстраполировать на абстрактную IDE сложно. Зависит от её кривизны.


    1. ZyXI
      11.08.2017 09:37

      Что?то мне подсказывает, что нет. Слишком простой ЯП: никакого JIT, GC на счётчике ссылок (простой mark&sweep для особых случаев). Даже AST нету, при создании функции просто сохраняется её исходный код. В результате ужасная производительность, но потреблять гигабайтами память здесь нечему: собственного аллокатора, резервирующего много места на будущее, нет, мусор не копится, код хранится в одном представлении, дополнения приходится оптимизировать, либо дёргать внешние программы (у некоторых языков, впрочем, можно запустить код на языке внутри процесса Vim).


  1. fireSparrow
    11.08.2017 10:16
    +14

    >> Почему я до сих пор использую Vim?

    Потому что не знаете, как из него выйти? :)


  1. igrishaev
    11.08.2017 11:11
    +9

    Значит, вы используете Вим, потому что у вас мало памяти?


  1. Vlad_fox
    11.08.2017 11:14
    -1

    При использовании Atom или Code у меня часто возникают зависания, бывает они длятся по нескольких минут

    может автору просто ноутбук сменить?
    у меня на (стационарной правда) машине с 4 гб оперативки открыто несколько очень тяжелых клиентов, файрфокс с несколькими десятками вкладок, несколько жирных екселей, несколько редакторов (саблайм, для еще более быстрого доступа — встроенный в фар редактор)
    и ничего не тупит.
    никогда даже не задумывался сколько времени загружается редактор или сколько памяти ест. Меня не объест.
    как-то больше думаю про то как быстро будет работать код, который пишу в редакторе, а не про сам редактор


  1. iogurt89
    11.08.2017 14:24
    +1

    Я пытался использовать Vim. Но столкнулся с большим количеством гемора с его настройкой и т.д.. В итоге пользуюсь IDE от jetbrains с Vim плагином. Лично для меня это самый лучший вариант.


  1. majetree
    11.08.2017 14:24

    в консоле — micro
    в gui — sublime


  1. grieverrr
    11.08.2017 15:24
    +3

    Никогда такого не было и вот опять. Подсчет мегабайтиков и милисекундочек при каких-то нелепых начальных условиях.
    Поиск и замена в 8мб файле быстрее всего будет выполнена командой sed, например.


    1. YemSalat
      13.08.2017 19:35
      -1

      Поиск и замена в 8мб файле быстрее всего будет выполнена командой sed, например.

      Быстрее — возможно, а вот удобнее ли…


      1. daggert
        13.08.2017 22:57

        При всей моей нелюбви к консоли — замена sed'ом достаточно удобна и быстра. Намного лучше чем замена нормальным редактором.


        1. YemSalat
          14.08.2017 23:14

          И, как оказалось, может приводить к подобным вещам:
          https://stackoverflow.com/questions/12696125/sed-edit-file-in-place
          https://stackoverflow.com/questions/7733922/sed-command-creates-randomly-named-files

          Т.к. сед создаёт временный файл, куда копирует результат.


      1. YemSalat
        13.08.2017 23:10
        -1

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

        Хотелось бы услышать аргументы в «противоположном направлении»


        1. ZyXI
          13.08.2017 23:47
          +2

          Забыли самое главное: в редакторе есть undo, и после поиска/замены в редакторе редактор своё undo не потеряет. В случае с sed — может: например Vim, в зависимости от настроек и размера файла, либо потеряет undo, либо запишет в дерево «а здесь мы потёрли весь файл, а затем вставили вот такое содержимое: {весь файл целиком}» (т.е. в undo окажется неоправданно большой кусок текста, в двух экземплярах, даже если вы sed’ом поправили одну строчку). И это только если файл был открыт в Vim, пока вы ковыряли его sed’ом, если не был — Vim’у неоткуда знать, что там было в файле, соответственно, вычислить разницу и сохранить её в undo дереве он не может.


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


  1. guai
    11.08.2017 15:27

    на винде notepad2 для мелких файлов — самое то.
    С кучей подсветок.
    Умеет всё то же самое, из наиболее часто нужного, что и notepad++, но ощутимо быстрее стартует.
    Сколько памяти ест — не знаю, пофигу как-то.


  1. AlexBin
    11.08.2017 17:20
    +1

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


    1. grieverrr
      13.08.2017 11:06

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


  1. Legion21
    12.08.2017 00:44
    -1

    Чем же надо загрузить Visual Studio Code чтобы он подвис на минуту?


    1. ZoomLS
      13.08.2017 12:50

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


  1. PaulD
    12.08.2017 08:40

    Vim помогает быстро внести правки в конфигурационные файлы внутри jar архива. Очень удобно реализовано, в других редакторах такое не встречал.


  1. vovka667
    12.08.2017 08:40
    +3

    Опрос в посте из хаба vim показал, что большинство подписчиков пользуется vim.
    Ура!


  1. YemSalat
    13.08.2017 20:40
    -1

    Как привык пользоваться мультикурсором в Саблайме — так и не могу с него ни на что перелезть, пробовал Атом — но после моментальной реакции Саблайма — это ад и израиль.
    VSCode — ничего, вроде пошустрее Атома, работа с гитом понравилась, но опять же, после скорости Саблайма — все не то…
    Вим так и не осилил, времени не было его плотно изучить и привыкнуть, переодически использую для гита и конфиги иногда в нем правлю, но дальше не пошло. Hе нашел в нем того, что нельзя сделать мультикурсором или другими плюшками Саблайма…


  1. helg1978
    14.08.2017 21:01
    +1

    Готов платить 800 МБ, что б не жать :wq )