Введение


Здравствуй, сообщество!


Многие мои знакомые считают некрофилией использование Emacs, а некоторые и вовсе о нем не слышали (сказывается возраст, полагаю).


Перед вами статья формата "для личного блога", в которой я очень кратко (upd. текста все равно очень много получилось) опишу, почему я уже полгода (на самом деле больше, но постоянно использую только около полугода) использую Emacs в качестве основного текстового редактора.


Предыстория


Впервые об Emacs я узнал, наверное, из автобиографии Линуса Торвальдса — "Just for fun: The Story of an Accidential Revolutionary". В ней была шутка вроде: "Emacs — отличная операционная система, жаль, что в ней нет нормального текстового редактора".


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


Действительно, если бы меня спросили, как я представляю себе Emacs, я бы ответил: "Это интерпретатор Лиспа, который неразрывно и очень тесно связан с текстовым редактором". Но об этом чуть позже.


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


По итогу сей редактор использовался мною исключительно для набора LaTeX-документов (во время учебы в вузе) и то потому, что он автоматически подхватывал эти документы. Никаких настроек, я пользовался им просто как блокнотом.


Следующий переход был удачным и, полагаю, последним. Устроившись Ruby-джуниором я решил попробовать еще раз. Мой начальник использовал (и, наверное, использует) Emacs, поэтому он меня очень поддержал в этом деле. Даже выделил мне рабочее время на то, чтобы я занимался настройкой текстового редактора (прекрасный руководитель, на самом деле).


Собственно, с тех пор окно Emacs'а не закрывается в моем маке никогда.


Какие я вижу преимущества


Абсолютная настраиваемость


В Emacs можно настроить что угодно. Лично у меня часто болят запястья (туннельный синдром, наверное), поэтому я стараюсь как можно меньше трогать стрелочки и вообще двигать руками (посмотрите, как движется ваша кисть при переходе из позиции печати на стрелки). На самом деле эту проблему я решил с помощью клавиатуры Ducky mini, но меня не совсем устраивает, где находятся arrow-keys (они находятся на okl;, а я хочу на ijkl или на wasd на худой конец).


Собственно, Emacs позволил мне настроить все сочетания клавиш. Теперь я двигаюсь по тексту с помощью Alt + i/j/k/l. Настройка, кстати, никогда не останавливается. Периодически находятся какие-то улучшения/недочеты, так что я добавил открытие конфига на Alt+9.


Автоматизация


Как я уже упоминал, я отношусь к этому текстовому редактору, как к интерпретатору лиспа со встроенным (или прикрепленным) текстовым редактором.


Т.к. большинство (полагаю) читателей Хабрахабра так или иначе знакомы с программированием, вопрос к вам: что для вас является красотой программирования?


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


Пока я выбирал, на чем буду решать задачу, ко мне подошел сисадмин и сказал: "Я тебе скинул логи и заодно скрипт, который выдернет инфу.". Скриптом оказалась одна строчка для баша. Это было прекрасно. В тот момент я открыл для себя Unix-way.


Это было лирическое отступление.Так вот, т.к. Emacs — это интерпретатор Лиспа с одной стороны, то он позволяет *барабанная дробь* программировать.


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




Пример № 1


Мы переписывали шаблоны с ERB на Slim. Нужно было помимо всего прочего поменять двойные ковычки, на одинарные и наоборот. Т.к. файлов много, ситуации разные (не все ковычки нужно было поменять), писать внешнюю программу не имело смысла.


Но ведь я работал с Emacs! В интернете можно было найти множество функций для проведения операции замены пары ковычек, но время было, поэтому решил написать свою простенькую версию:


(defun toggle-quotes ()
  (interactive)
  (let ((saved-position (point))
        (founded-quote nil)
        (converted-quote nil))
    (search-backward-regexp "['\"]")
    (setq founded-quote (string (char-after (point))))
    (setq converted-quote (get-toggled-quote founded-quote))
    (delete-char 1)
    (insert converted-quote)
    (search-forward founded-quote)
    (delete-char -1)
    (insert converted-quote)
    (goto-char saved-position)))

(defun get-toggled-quote (ch)
  (if (equal ch "'")
      "\""
      "'"))

Не обращайте внимание на качество кода, пожалуйста. Суть в том, что оно работает. Если мне нужно поменять пару ковычек, я ставлю курсор в любое место между ними и нажимаю C-' (ctr + ').


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


У вас есть ERB-шаблон. Вы в нем заменяете HTML-теги на Slim-разметку. Помимо всего прочего, надо было (вообще-то, не обязательно, но стоило придерживаться каких-то правил) в строках без интерполяции использовать двойные ковычки и наоборот.
Т.е. переключение ковычек — частный случай из более глобальной задачи. Рутины помимо этого было много, некоторая решалась макросами, но уже на уровне автоматическом, так что и не вспомнишь, как именно они использовались.


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


Я не ставил своей задачей показать, как круто и быстро я умею решать задачи в emacs (для этого есть Emacs Rocks!). Своей задачей я ставил показать, как рутинные задачи могут решаться с помощью текстового редактора. Emacs — мой редактор и он многое может. Я показал, что смог сделать человек, который относительно недавно им пользуется в надежде, что кто-нибудь решит его попробовать. Или хотя бы по-новому взглянет на то, как он пользуется своим текстовым редактором (например, в комментариях я узнал, что у Notepad++ тоже есть макросы, а про то, что пользователи Sublime Text не пользуются сниппетами я упомянул в данном посте).



Пример №2


Что на текущей, что на прошлой работе мы используется Redmine и Git. Причем для фич в гите каждому коммиту дописывается постфикс с номером задачи в Redmine. Каждый раз, когда отписываешься по задаче, стараешься описывать что ты сделал и давать ссылки на коммиты (gitlab, bitbucket).


Есть 10 коммитов. 10 раз делаем "копировать-вставить". Эх....


Код:



(defun close-message(prefix issue)
  (interactive "sPrefix: \nnIssue:")
  (insert (let ((default-directory (file-name-directory (buffer-file-name (other-buffer)))))
            (shell-command-to-string
             (format "git log --pretty=oneline | grep '\#%d$' | tail -r | awk '{ print \"%s\" $0 }'"
                     issue
                     prefix)))))

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


Собственно, пишу префикс типа "https://bitbucket.org/project/commits/" и на выходе получаю список ссылок на коммиты с кратким гит-описанием.


В данный момент использую в связке со своей утилитой redmine_cli. Очень удобно.



Пример №3


Был json с кое-какими данными. Нужно было изменить структуру его структуру: превратить из объекта в массив, некоторые данные удалить и т.д. и т.п.


Мой начальник (все тот же), решил показать мне мастер-класс (т.к. сам я не смог сходу придумать, как решить задачу средствами редактора) и в течение 5-10 минут у него был готов макрос (!!), который для каждой записи делал нужную работу. Собственно, он просто зажал кнопочку запуска макроса и через пару секунд предоставил мне результат.



Пример №4


Нужно было добавить в класс несколько однотипных методов (абстрагивать еще сильнее смысла не было).


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


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


Зрелость


Старичку Emacs'у уже много лет и вокруг него выросло огромное сообщество.


Если меня интересует какой-либо вопрос, связанный с Linux, и запрос "linux <вопрос>" не дал нужного результата, я добавляю туда слово "ubuntu" или "debian".


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


С Emacs ситуация точно такая же. Огромное сообщество, множество вопросов, множество ответов, огромное количество плагинов почти под любую задачу (даже игры есть!).




Вместо заключения


Вот, наверное, и все.


Summary:


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

А кто не любит свободу?

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


  1. Bringoff
    05.04.2016 11:35
    +20

    Гм. Поползшая верстка статьи, видимо, из-за того, что писали в Emacs? ;)


    1. Sna1L
      05.04.2016 11:41
      -2

      Писал в маркдауне, ожидал, что переносы не учитываются. Исправлять не стал, и так, вроде, нормально;)


      1. MooNDeaR
        05.04.2016 11:57

        Ну, на широкоформатном мониторе с разрешением 1920х1080 это выглядит по меньшей мере… ээмммм… ужасно :)
        А вообще, откройте для себя, например, Sublime Text. Я долгое время пользовался Vim (как-то не пришелся мне Emacs по душе), но потом перешел на Sublime. Вернуться так и не смог.


        1. Sna1L
          05.04.2016 12:00
          +4

          Я перешел на emacs из саблайма.
          Перечитайте, пожалуйста, раздел "Автоматизация";)
          На саблайме подобные трюки сделать не так просто, полагаю.
          Не уверен, но там, наверное, нет ничего подобного сущности cursor. Есть только функции косвенно с ним работающие. Поправьте меня, если не так.


          1. wladyspb
            05.04.2016 12:15
            -1

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


            1. Sna1L
              05.04.2016 12:17

              Цветовая схема настраивается. Настраивается, не побоюсь этого слова, всё. upd. простите, неверно прочитал. Ну, порог входа у редактора большой, я об этом написал. Если не готовы настраивать, то это, возможно, не для Вас;)
              Насчет IDE согласен. Некоторых IDEшных фич мне не хватает. Но не настолько, иначе я бы поискал плагины для имакса;) Все-таки для меня важнее работа с текстом, а она, по-моему мнению, в IDE уходит на второй план. Я со смехом смотрю на людей, который тыкают мышкой по кнопочкам. Слишком много телодвижений. Я люблю печатать и клавиатуры в целом;)


              1. wladyspb
                06.04.2016 15:26

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


        1. Sna1L
          05.04.2016 12:08
          +1

          И Вы меня убедили, я убрал переносы. Спасибо


        1. myxo
          05.04.2016 12:41
          +2

          Аналогичная история. Долго кодил на vim, потом, когда очередной плагин убил все, а ремонтировать уже не хотелось, перешел на саблим. Сейчас пользуюсь вимом только когда нужно что-то редактировать в консоли (ну то есть так-то довольно часто =) )


        1. unclechu
          05.04.2016 15:10
          +1

          Я полагаю Вы использовали лишь малую часть экосистемы Vim-а, раз перешли на Sublime с него.


  1. pythonproof
    05.04.2016 11:56
    +5

    По тому, что я прочитал, по-моему автор попытался из emacs'a сделать недоvim.


    1. Sna1L
      05.04.2016 11:58
      -1

      Почему же Вы так решили?)
      Я единственным преимуществом вима вижу только то, что его особо настраивать не нужно, если ты им умеешь пользоваться + он есть везде практически


      1. pythonproof
        05.04.2016 12:05
        +6

        Вим не нужно настраивать. Это смешная шутка. Поэтому тебе и не пришелся вим по вкусу.
        Только вот в виме, все манипуляции с кодом в 10 раз легче и быстрее, про замены кавычек — так это я вообще с улыбкой на лице читал. Ибо в виме это делается за несколько нажатий клавиш, а в командной строке еще и за одну строку во всем файле можно поменять. И не надо ничего "программировать". А вот плюсов именно емакса озвучено не было. Но я так понимаю, они тебе и не нужны, как и подавляющему большинству, поэтому я бы посоветовал когда будет свободное время присмотреться к виму И НАСТРОИТЬ ЕГО.


        1. Sna1L
          05.04.2016 12:14

          You sound like hater:)
          как я уже написал, во всем файле их менять не нужно было.
          Пара нажатий клавиш? То, что такая функция в готовом виде есть в виме не делает его лучше или хуже. Суть в том, что любой нужный функционал можно написать. Нет редактора со всеми возможными функциями. Однако имакс дает стройматериалы.
          В виме, возможно, тоже, но использовать для этого придется не лисп, а странный вимовский язык. К тому же, в имаксе я могу даже не меняя буфера написать какую-нибудь функцию, скормить ее интерпретатору, стереть и пользоваться, пока это нужно.


          1. pythonproof
            05.04.2016 12:20
            +1

            Больше улыбочек.
            Про замену во всем файле. Это даже не смешно. Значит пользователю саблайма по твоей логике проще удалить в паре мест кавычки и заменить. То есть, если это тебе не надо сегодня — может что-то подобное понадобится завтра, к примеру поставить точку с запятой в конце определенных строк, тоже опять будешь писать какой-то костыль?
            Какой еще хейтер. Я и слова плохого про emacs не сказал, просто ты выделил плюсы вима в своей статье про емакс.
            Ладно выбор твой. И больше минусов пожалуйста. Очень полезная статья ведь. Нет.


            1. Sna1L
              05.04.2016 12:32
              -4

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


              1. pythonproof
                05.04.2016 12:43
                -2

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


  1. nonlux
    05.04.2016 12:00
    +3

    Для emacs есть хороший редактор — vim!
    (Я имел ввиду evil, если что).
    Очень сложно на начать работать с редактором, который меняет шаблоны работы. Для меня дефакто это tmux+vim, ту же скорее наоборот emacs и внем все и сразу )
    Второя сложность это lisp. Выглядит страно и также работает. Но стоит обрать внимание на расшифровку названия языка (Обработчик списков), и все становится на свои места.
    На прошлой неделе началась новая и вполне успешная попытка пересесть на emacs. Встретил сборку называется spacemacs. Мне очень понравилась.


    1. Sna1L
      05.04.2016 12:03

      Мне не нравится vim. Просто не нравится и все:)
      Под "шаблонами работы" вы имеете в виду modes? Ну я считаю это преимуществом, т.к. под каждый тип документа мне нужны разные функции работы с текстом.
      Лисп тоже считаю преимуществом. Очень приятно на нем писать (хотя меня напрягает отсутствие неймспейсов в elisp).
      За указание на сборку спасибо. Надеюсь, кому-нибудь пригодится.


      1. nonlux
        05.04.2016 12:51

        Под шаблоном работы имел ввиду то как происходит работа над проектом. Для меня основное это писать код, видеть результаты работы тестов и сохранять все в git.
        Поэтому для меня самое важное это консоль (эмулятор терминала). Это быстро.
        В emacs — современная ОС, поэтому подход другой и пока я не настрою его под себя я тупо не могу работать.
        Про лисп специально отметил, потому что о нем в статье нет ничего, кроме того что он есть в емакс ).
        Язык своеобразный для того, кто до этого видел только Си подобные. Но это проходит когда вникнешь.
        Кстати сборку специально указал, потому что не встречал ничего о ней в русском интернете. А она реально помогает попробовать емакс на вкус.


        1. Sna1L
          05.04.2016 12:56

          Для меня основное это писать код, видеть результаты работы тестов и сохранять все в git.

          Собственно, это можно делать средствами имакса.
          Хотя я предпочитаю маковский терминал, так что в этом поступаю так же, как и Вы. Браузер, редактор и терминал в полноэкранных режимах включены и достаточно просто с помощью cmd+tab между ними переключаться.


    1. prefrontalCortex
      06.04.2016 10:14
      +1

      Для emacs есть хороший редактор — vim!
      Есть :)


      1. nonlux
        06.04.2016 17:27

        Блин. Это восхитительно, жаль я не додумался. Пробовал только ради прикола запустить tmux.


  1. ibKpoxa
    05.04.2016 12:22
    +13

    Круто! А мне 38 и я чаще всего использую mcedit.


    1. nekt
      12.04.2016 10:58

      Мне 28 и я в последнее время предпочитаю nano


  1. bromzh
    05.04.2016 12:54
    +6

    19 лет, полгода емакса… Пройдёт немного времени, энтузиазма поубавится. Раньше это был один из немногих редакторов, который умел всё и был крайне гибким. Но вышли другие редакторы, и емакс стал казаться стариком, который уже не поспевает за прогрессом. Сейчас никого не удивишь абсолютной настраиваемостью: Atom, например, тоже очень гибкий. Но при этом, в нём приятно работать.
    Emacs и сейчас хорош, но только в нескольких узких областях: редактирование TeX (лучше редактора для теха я пока не встречал), разработка на лиспе (SLIME), поддержка редких языков… Попытка соорудить из него универсальный комбайн скорее всего закончится адом из кучи конфигов, медленного старта и тормозной работы.
    Вот парочка претензий к емаксу, из-за которого я теперь не пользуюсь им:

    • нет мультикурсоров (нормальных человеческих мультикурсоров, а не того поделия, что выдают за них)
    • ужасная отзывчивость интерфейса (например, прокрутка). Тут сказывается наследие прошлого. Если емакс не сменит движок для отрисовки в gtk-версии, он так и останется отголоском из прошлого.
    • тормоза уже на средних файлах
    • беспорядки с темами
    • невозможность выгрузить/отключить плагин без перезагрузки всего редактора. Привет лисп-машине. И именно это самый большой косяк. В емаксе нет никакой плагинной системы: весь код тупо исполняется интерпретатором в порядке подключения как есть.


    1. Sna1L
      05.04.2016 13:01
      +1

      Согласен насчет мультикурсоров, тем (хотя не сказал бы, что прям уж проблема) и плагинов.
      В остальном… Ну, не знаю. Основная задача — работа с текстом. Я не поддерживаю людей, которые пытаются сделать из него IDE.
      Плюшки, которые я нашел лично для себя, в посте перечислены.
      Насчет Atoma стоит поразмыслить, не могу на этот счет дискутировать, к сожалению.
      Ну а по поводу энтузиазма — главное, что я пользуюсь им уже некоторое время и полностью доволен. Разве нет?:)


    1. unclechu
      05.04.2016 15:18

      Я пытался пересесть на Atom с Vim-а, сначала без всяких vim-mode, понял что дико неудобно и много побочной рутины, обрастил его плагинами, поставил vim-mode. В итоге он получился несколько менее навороченным, чем мой vim-конфиг, а vim-mode иногда в специфичных юз-кейсах давал сбои и делал очень странные вещи. Я не увидел причин менять Vim на Atom. Я всё-равно иногда запускал vim, чтобы сделать какой-нибудь Gblame например (см. vimawesome.com/plugin/fugitive-vim ).


    1. IamKarlson
      05.04.2016 17:11
      +1

      И год программирования


    1. PerlPower
      05.04.2016 19:44
      +1

      Пройдёт немного времени, энтузиазма поубавится.


      Вы правы, после у меня после порядка 10 лет использования emacs энтузиазм уходит и накатывает безысходность от той мысли, что при всех его недостатках вменяемой альтернативы ему нет, разве что vim.

      К слову:

      беспорядки с темами

      (load-theme) и (disable-theme) уже решили эту проблему.

      невозможность выгрузить/отключить плагин без перезагрузки всего редактора. Привет лисп-машине. И именно это самый большой косяк. В емаксе нет никакой плагинной системы: весь код тупо исполняется интерпретатором в порядке подключения как есть.

      (unload-feature) это не оно?


  1. NickSin
    05.04.2016 13:02

    Мне хватило простой НАСТРОЙКИ vim'а (бесконечной настройки). Я кстати не чужусь использовать IDE и Sublime в своей работе. Особенно на работе, где по дефолту стоит слабая Windows 7 x86 машинка ( не стал ставить gvim и плясать с бубном + активировал Vintage Mode и все пока устраивает).

    Выбор редактора для работы зависит от задачи и требуемых «велосипедных подвижек».
    Ваш выбор пал на Emacs, потому что с ним вы успешно решаете свои задачи. Это прекрасно. Но я не вижу смысла в написании статьи, которая рассказывает какой редактор текста крутой и что у вас с ним получилось сделать. Такие публикации плодят только очередные многокилометровые «battle» комментарии на тему: «Какой редактор лучше?». Пишите о реальных проблемах и о том, как вы их решаете. Это намного интереснее.
    Удачи вам во всех ваших начинаниях!


    1. Sna1L
      05.04.2016 13:05

      Спасибо за хороший комментарий.
      Ну так, чтобы выбрать что-то для себя, нужно ознакомиться с ассортиментом, разве нет?
      Лично я не стал бы пробовать вышеупомянутый Atom, потому что мало что о нем слышал. Лучше попробовать emacs, vim, sublime, о которых очень много дискуссий и battle'ов. ИМХО, естественно.
      А вообще решение написать пост было принято после очередного удивления по поводу того, что я пользуюсь этим археологическим ископаемым:) Я подумал, что, может быть, кому-нибудь будет интересен взгляд человека моего возраста, а не матерого бородатого хакера.


      1. NickSin
        05.04.2016 13:15

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


  1. fshp
    05.04.2016 13:54
    +10


  1. volgatut
    05.04.2016 14:10

    А что Emacs не умеет подчёркивать Ваши грамматические ошибки?


    1. Sna1L
      05.04.2016 14:16

      мой — нет. Отключено.
      Неужели, в тексте их так много? Мне казалось, что я могу писать более-менее грамотно. Следует включить спелл-чекер.


      1. volgatut
        05.04.2016 18:58

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


        1. Sna1L
          05.04.2016 19:03

          Бывает, ничего не поделаешь. Неужели, это такой большой повод для ехидных замечаний?:)
          Если хотите помочь, отпишите, пожалуйста, в ЛС проблемные места. Я буду очень благодарен.


  1. IamKarlson
    05.04.2016 14:34
    +2

    Слушайте, а чем вы занимаетесь, что вам нужна работа с текстом, не нужна ide, a vim го… кхм кхм кхм просто потому что не нравится и все тут. Программировать везде можно. у саблайма для этого плагины там, реплы есть всякие, ну это если совсем прижмет. На том же пш/баше скрипт накидать с горем пополам можно в любом редакторе. А так да 19, подгорает, все дела.


    1. Sna1L
      05.04.2016 15:19

      Ну так программировать можно и в блокноте.

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

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

      Отвечая на Ваш вопрос, могу сказать, что работаю ruby-программистом, из фич IDE мне не хватает только умного подсказчика, который показывал бы мне методы класса, объекта. Хотя, возможно, учитывая, что я работаю с Ruby, даже у RubyMine нет НАСТОЛЬКО умного подсказчика, чтобы я перешел на него.

      И при чем тут пш/баш скрипты? С помощью них Вы не решите задачу из примера 1. Там важную роль играет контекст, который Вы должны сами определить. Скрипт этого не сделает (точнее, сделает, но это будет очень сложно и не нужно).


      1. IamKarlson
        05.04.2016 17:08
        +1

        Я вот очень завидую вам, если вы выбираете инструменты только лишь по личным предпочтениям. Я не считаю что выбор редактора не йдолжен строится исключительно на личных предпочтениях. Взять к примеру вим, я его терпеть не могу, ну прямо совсем. Меня раскладка в виме очень напрягает(IMHO) и я бы с удовольствием поковырял и сделал такую чтобы удобная была для меня, ну чтобы изначально она была наиудобнейшая. Но если умные дядьки посчитали что именно так будет удобнее и быстрее, то я не хочу изобретать очередной скрипт для замены кавычек в файле, и вынужден осваивать эту богомерзкую раскладку. Вы же утверждаете, что вот вам емакс, кастомизируй его как нравится и юзай. В чем профит кастомизации базовых функций??? Саблайм не просто текстовый редактор. Это целый мир кастомизации под ide. Но базовые функции в нем великолепны. Я могу горы свернуть с саблаймом из коробки. А с плагинами так и вовсе сдвинуть земную ось. Но зачем мне усложнять себе жизнь на этапе БАЗОВЫХ возможностей???!? Вопрос даже не в преимуществах саблайма, а в том что примеры описанные в статье настолько банальные и очевидные, что выставляет емакс в плохом свете. и свежего взгляда как-то не вышло. Как-то так…


        1. Sna1L
          05.04.2016 17:28

          Хм. Резонно.

          Однако. Вот специально сейчас загуглил эту Вашу элементарную фичу: sublime toggle quotes.
          На что получил только плагин, ничего встроенного. Или я плохо искал? С IDE та же ситуация, скорее всего, только готовый плагин искать. И это я привел в пример относительно частую задачу.

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

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

          P.S. я не умаляю преимуществ саблайма. Я считаю его очень классным и удобным редактором. Но с имаксом моя производительность улучшилась. Более того, имакс сам вынуждает меня совершенствовать знания о нем, в то время как sublime позволяет успешно пользоваться собой из коробки


          1. alexkunin
            05.04.2016 17:48

            В PHPStorm (и, наверное, во всех IDEA) смена кавычек — стандартная штука. Правда, не уверен, что она работает сразу для HTML и шаблонов, но в PHP и JS — точно работает.

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

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


            1. Sna1L
              05.04.2016 17:51

              Это прекрасно, что там есть такая функциональность. Но мне может потребоваться что-нибудь другое и этого не будет. Мне переходить на другую IDE?

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

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


              1. alexkunin
                05.04.2016 17:59

                Я просто ответил на ваше «скорее всего, только готовый плагин искать». У вас предубеждение. Кроме того, чем плохо, что что-то оформлено как плагин? Если поиск решения + время его применения меньше, чем написание своего решения + время его применения, то все ок, я так думаю.

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


                1. Sna1L
                  05.04.2016 18:05

                  Хм. Мне казалось, что я говорил про саблайм. Anyway, в плагинах ничего плохого нет, но я бы не хотел ничего дополнительно себе устанавливать. И Вы сами сказали: «Если поиск решения + время его применения меньше...». Но он не всегда меньше. Да и задача может быть настолько специфична, что готового решения не существует (хотя это уже редкость, конечно, но все же).

                  P.S. Насчет той функции с переключением. Допустим, имеется строка в файле: «а фывафыв ыфва фыва». Я помещаю курсор в любое место внутри строки, нажимаю C-' и обе ковычки заменены. Очень приятно:)


                  1. alexkunin
                    05.04.2016 18:44

                    «С IDE та же ситуация, скорее всего, только готовый плагин искать.» — вы говорили про IDE, на сколько я могу судить, и не о какой-то конкретной. И именно на это я отвечал, опять же — как и в случае с заменой кавычек

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

                    Кстати, поиск по «emacs toggle quotes» сразу выводит несколько готовых снипетов на лиспе, а также намек, что Smartparens поддерживает эту функциональность. Но это плагин, так что вам, может, не очень подходит.

                    А в Emacs как с установкой сторонних плагинов, кстати? Все сложно или все по-современному?

                    На счет примера, а как в случае такой строки: '123\'456'? PHPStorm из коробки заменить на «123'456», а после повторного применения — опять '123\'456', т.е. происходит конверсия escape-последовательностей. Кстати, если я где-то кусок текста с такими символами и вставлю внутри кавычек, то код сам экранируется слэшами где нужно.


                    1. Sna1L
                      05.04.2016 18:53

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

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

                      Про установку плагинов: лично мне если что-то нужно, то я просто ввожу команду package-list и ищу нужное. Либо гугл, а потом package-install. В общем, вполне себе удобно.


                    1. bromzh
                      05.04.2016 19:14

                      А в Emacs как с установкой сторонних плагинов, кстати? Все сложно или все по-современному?

                      el-get вполне нормальное решение: запрашиваем список пакетов, отмечаем те, что надо установить и жмём установить. Зависимости (если есть) подтянутся и установятся. Чтобы заработало, надо (обычно) добавить 1 строчку в конфиге (require 'package). В более сложных случаях придётся конфигурировать плагин.
                      Но до удобства установки пакетов, как в атоме, пока далеко.


        1. Sna1L
          05.04.2016 17:35

          > В чем профит кастомизации базовых функций???

          Никакого. Профит (черт, неужели я настолько плохо написал пост?) в том, что если редактор не обладает какой-либо функциональностью, я могу ее сделать сам, если она мелкая и специфичная. Это очень удобно, потому что не нужно ничего загружать, скачивать и устанавливать(я про плагины). Я просто привел примеры, которые были в моей практике. Со временем их количество увеличивается. Макросы меня спасают часто.

          У меня было много коллег, использующих саблайм и даже понятия не имевших, что такое сниппет. А все потому, что саблайм хорош и без настройки. Они даже не задумываются о том, что можно повысить свою эффективность. Здесь у имакса просто свой дзен, полагаю


      1. atc
        05.04.2016 18:39

        У вас действительно за единицу времени (допустим день) возникает настолько много работы с набором\исправлением кода, чтобы использовать для этого специализированное решение, а не IDE? Много рефакторинга специализируетесь на быстрой разработке прототипов?
        Это единственные сценарии, что приходят в голову.

        А как в emacs дела с интеграцией препроцессоров, линтеров и сборщиков? Для примера less, gulp и eshint.


        1. Sna1L
          05.04.2016 18:41

          Работа с текстом составляет большую часть моей работы, да. Да и даже если нет, я хочу набирать текст с комфортом с минимальным количеством телодвижений.

          На Ваш последний вопрос не могу ответить, т.к. ничем подобным не пользуюсь. Могу вспомнить только превьюшки для формул латеха:)


  1. alexkunin
    05.04.2016 16:06

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

    Не холивара ради, а справедливости для: посмотрите vim-касты от профи (http://vimcasts.org, или просто на ютубе, только выбирайте экземпляры получше), а также VimGolf (http://www.vimgolf.com). Но оставайтесь на Emacs: тот редактор лучше, с помощью которого вы лучше работаете, а тратить время еще на одну крутейшую learning curve — я не могу придумать этому серьезное оправдание.


  1. AdmAlexus
    05.04.2016 17:36
    +1

    А мне 28 и я уже 10 лет использую Notepad++.
    Конечно у меня нет крупных проектов. Все обычно сводится к редактированию скриптов и т.п.
    Уже несколько раз ставил себе Sublime, но так и не могу перейти на него. Дело привычки мне кажется.
    Можно вообще в обычном Блокноте (или nano, «кто на чем сидит») писать.
    Может кто-нибудь объяснит мне, какие преимущества мне даст Sublime, если я в основном правлю в нем bat, cmd, sql, xml, php, html? Буду очень признателен. Автокомплит для меня не критичен, поэтому преимуществом не считаю.


    1. Sna1L
      05.04.2016 17:46
      +1

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

      В nano нет макросов, насколько я знаю. Рутину никак не автоматизируешь. С Notepad++, если не ошибаюсь, та же ситуация. Мало функций для редактирования текста.

      Например, человеку не нужен смартфон, если он только звонит.


      1. AdmAlexus
        05.04.2016 20:00

        Макросы в Npp есть, просто я ими пользуюсь очень редко.
        Также есть плагины для Npp, реализующие возможность написания скриптов для Npp на разных языках, таких как JavaScript, Lua, PHP или Python


    1. alexkunin
      05.04.2016 17:53
      +1

      Вам точно приглянется фича «мультикурсор». Она настолько проста, изящна и мощна, что отказаться потом уже просто невозможно. Честно говоря, для меня весь мой опыт редактирования текстов (99% — код) делится на «до мультикурсора» и «после». Я больше 15 лет работаю с Vim, и эта фича была тем самым, что заставило меня сменить основной редактор (но в консоли по ssh лучше вима для меня все равно ничего нет).


      1. Crandel
        05.04.2016 17:59
        +1

        Советую глянуть на мультикурсор в емаксе, саблайм нервно курит в сторонке)
        EmacsRocs


        1. Sna1L
          05.04.2016 18:11
          +1

          Спасибо за ссылку!
          Мультикурсор интересная вещь, но тут тоже вопрос вкуса.
          Мне в саблайме он больше нравится, например.


        1. alexkunin
          05.04.2016 18:53
          +1

          Спасибо за добавленную ссылку, как раз это видео сразу и нашлось.

          Дело в том, что я использую не Саблим, а PHPStorm, так что не могу после просмотренного как согласиться с вами, так и возразить. Поэтому прошу вас в двух словах описать основные отличия.

          Из крутого я заметил применение мультикурсора к файлам (довольно трудно сделать в GUI-редакторах, т.к. мало кто делает файловый браузер в окне редактора) — мощно, альтернативы не так изящны (я бы создал скратч, вставил список файлов, переделал бы мультикурсором в «mv old new», затем исполнил бы — работало бы, но грубенько, Emacs круче).

          Еще интересная синергия с встроенным калькулятором. Я не пробовал, но возможно такое же в PHPStorm получилось бы с помощью стороннего плагина (а может и нет). Такое лично мне нужно редко, но Wow-фактор отличный.

          Еще что-нибудь такое есть?

          P.S. Обе вышеперечисленные фичи круты еще и потому, что если вы их знаете отдельно, то вы сразу знаете, как их применить с мультикурсором. Т.е. не нужно ничего отдельно учить, никаких новых кнопок. Я за распространение таких фич по всем редакторам, и вообще за такой подход — «zero learning».


        1. fshp
          05.04.2016 21:41

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

          Не увидел ничего, чего бы не мог саблайм.


          1. Crandel
            06.04.2016 12:20

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


            1. fshp
              06.04.2016 12:29

              В саблайме есть плагин Vintage, который реализует vim-режим. Так что там тоже от стрелочек можно отказаться.


      1. AdmAlexus
        05.04.2016 19:57

        Мультикурсор есть и в Notepad++.


        1. alexkunin
          05.04.2016 20:04
          -1

          О, ну тогда вам понравится наличие горячих клавиш. ;) Но да, киллер-фича уже есть, а детали не так важны.

          Все остальное — это плагины на все случаи жизни и т.д. Наверняка в N++ тоже есть. А все, что сверх этого — это уже уход в область IDE.


      1. thatisme
        06.04.2016 10:48

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

        Когда-то на vim я перешел очень простым способом — начал выполнять свою повседневную работу в нем.

        Точно такой же подход я периодически использую для emacs и sublime text, когда читаю новость о выходе новой версии.


        1. alexkunin
          06.04.2016 11:08

          Ну, например: беру кусок SQL с CREATE TABLE и довольно быстро переделываю его в PHP-класс (в имена полей, возможно с инициализацией в конструкторе).

          Или скопировать из документации список констант и затем преобразовать его в switch.

          Или переделать небольшой JSON в PHP.

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


          1. thatisme
            06.04.2016 11:15

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


            1. alexkunin
              06.04.2016 11:27

              «Как для описанных вами кейсов поможет мультикурсор я так и не понял.» — не могу понять, как это может быть неочевидно. Может, мы разные вещи называем одним словом? Выше привели ссылку на демонстрацию мультикурсора в Emacs (http://emacsrocks.com/e13.html), в самом начале там демонстрируется работа с HTML. Я делаю то же самое, только с JSON, PHP, SQL, с тем же HTML, или с просто текстом.


              1. thatisme
                06.04.2016 11:41

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

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

                p.s. Для vim тоже есть различный плагины для поддержки мультикурсоров.


                1. alexkunin
                  06.04.2016 12:01

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

                  Vim: я жму qa, затем вручную обрабатываю один элемент (обычно останавливая обработку в начале следующего элемента), жму q. Макрос готов, я запускаю его как 10 @a ил @a и несколько точек. Но, скажем, на 5-м элементе макрос дает сбой из-за лишнего пробела в конце строки (скажем, код пришел от коллеги, который не «парится» такими мелочами), из-за контекстно-зависимой команды (вроде u), или еще по какой-то такой причине. Мне нужно либо отредактировать макрос (а в регистре «a» будет мешанина вроде yeI'^[A' => $row['^[pa'],^[j0 — без бутылки не разобраться), либо написать его заново. И тут я начинаю вместо работы над основной задачей править макрос и вообще отвлекаться. Причем программируя что-то по основной задаче, я переключаю контекст и начинаю программировать макрос, что реально напрягает (может у меня мозг аномально маленький, не знаю).

                  PHPStorm (в смысле мультикурсор): выделяю начальный элемент или его характерный кусок, жму Ctrl-G нужное количество раз (ставлю копии курсора в начало каждого элемента), а потом правлю «наживую». И если вдруг что — у меня есть Ctrl-Z и Ctrl-R, а также дополнение и сниппеты. Т.е. я сразу в режиме отладки и исполнения «макроса», который как бы даже не пишу. Минус в том, что такой «макрос» сохранить и повторно использовать не получится. В зависимости от ситуации этот минус может быть как маленьким, так и значительным (не припомню такого случая, честно говоря).

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


                  1. thatisme
                    06.04.2016 12:47

                    Про мультикурсоры для vim — поскольку я не вижу для себя полезности от мультикурсора, то и в этих плагинах я не разбираюсь. Так что ничем в данном вопросе вам не помогу. Могу только ссылки из гугеля надергать, но вам это явно не нужно :)

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


  1. mbait
    05.04.2016 17:59
    +2

    Вот и подросло поколение, которое не участвовало в срачах «vim vs. emacs vs. обычный порошок».


  1. maxru
    05.04.2016 18:05

    У всех этих «супернастраиваемых» emacs и иже с ними (sublime сюда же) есть один большой минус — их надо настраивать.
    А я уже большой мальчик, я хочу заплатить 200$ и чтобы всё само.


    1. Sna1L
      05.04.2016 18:09

      Каждому свое. Я просто описал свое видение.

      Очень странно, я, вроде бы, просто описал, почему лично мне нравится emacs в надежде, что кто-нибудь попробует его (вдруг я воодушевлю кого-то?), а некоторые господа пишут так, будто я тут свою религию навязываю им. Да уж, анекдоты про vim vs emacs vs etc являются отражением действительности.


      1. alexkunin
        05.04.2016 19:05

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

        Так вот, применительно к Emac, Vim и т.д. — они тянут с собой из прошлого очень много. За прошедшие десятки лет требования к редактору кода значительно подросли — и заметно превосходят уровень блокнота. А эти мастодонты все еще тянут за собой много легаси в виде устаревших дефольтных настроек, древнего подхода и т.д. А иногда что-то новое на существующей основе просто нельзя (или очень сложно) создать. Multiselect вроде бы неплохо получился в Emacs (хоть вам он в Саблиме больше нравится), но вот в Vim я нормальной реализации не видел — все глючило (может за полтора года что-то изменилось, не проверял). Подстветка синтаксиса в Vim появилась через 6 лет после Turbo Pascal 7. Можно еще примеры найти.


  1. Pinsky
    05.04.2016 19:00
    -1

    У меня из знакомых emacs яро использовал только чувак с аутизмом.

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


    1. alexkunin
      05.04.2016 19:10

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


  1. Pazzik
    05.04.2016 19:27

    Когда вижу надпись «можно настроить что угодно», всегда понимаю именно этим мне и придется заниматься. А по сути не представляю что у вас за работа такая, но мне почему то 80 процентов времени приходится заниматься чтением кода и соответственно перескакиванием по файлам. И тут различные goto definition и ctrl+p из саблайма или ctrl+shift+N(если не ошибаюсь) из rubymine, гораздо важнее всего остального. Я откровенно не понимаю молодых адептов vim, эти люди явно не писали серьезные приложения под windows в visual studio. Потому что после этого понимаешь что ни вим, ни emacs ни даже саблайм не имеют и доли удобства нормальной ide работающей из коробки.


    1. Sna1L
      05.04.2016 19:32

      Действительно, многое зависит от того, чем человек занимается.
      Сомневаюсь, что я бы использовал имакс (как бы я того ни хотел), если бы писал огромный проект на Java (ну или на другом статическом языке).

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

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


      1. Pazzik
        05.04.2016 19:56

        Я тоже пишу на Ruby. Но я хочу сказать, что вас все устраивает только потому что вы не знаете что можно жить по другому. Множество вещей которые вы делаете своими велосипедами на коленке или подбором плагинов, в IDE работают из коробки. Причем если что-то не устраивает, это также можно настроить, не надо думать что настраивается только emacs или vim. Все умеют настраиваться, иметь плагины и возможность писать макросы. Это не уникальная фича. Как вы отлаживаетесь, например? Ставите binding.pry? Система breakpoint и режима отладки в IDE, это еще одна вещь которая отличает баловство с мультикурсорами от реально незаменимой вещи. Хотя опять же не знаю чем вы занимаетесь, может вы целыми днями кавычки с двойных на одинарные переделываете и вам оно не надо.


        1. Sna1L
          05.04.2016 20:05

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

          > Все умеют настраиваться, иметь плагины и возможность писать макросы.
          Спасибо, капитан. Однако степень настройки везде разная. Да и сложность использования тоже. В нотпаде тоже есть меню настроек;)

          > Как вы отлаживаетесь, например?
          Это опять же к вопросу «жить по-другому». Мне достаточно отладки с помощью вывода данных. Пока что.


      1. fshp
        05.04.2016 21:45

        на другом статическом языке

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


  1. igrishaev
    05.04.2016 19:38

    Ну что можно сказать, знание вима или емакса это хороший плюс. Я посоветую следующее:

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


    1. Sna1L
      05.04.2016 19:43

      * Стрелочки использую в только терминале (он у меня, как ни странно, внешний). Спасибо, Emacs!
      * Давно уже. Прекрасный свап. Капс-лок даже не помню, когда в последний раз использовал.
      * Это мне не нужно, т.к. рабочая машина одна. Хотя мысль здравая, конечно.
      * Спасибо, обязательно посмотрю.
      * Ну, было бы невежливо, наверное…


      1. igrishaev
        05.04.2016 20:27

        В баше и других терминалах по умолчанию работают комбинации емакса (переход по словам, удаление). Утилиты less, man тоже прокручиваются емаксовыми клавишами. Даже в хроме и маковском почтовом клиенте кое-что работает =)
        Конфигурация, намертво завязанная на одну машину, не есть гуд. Перенесите ее хотя бы в гитхаб. Иначе как вы ее на стейджинге установите, например.


        1. alexkunin
          05.04.2016 21:14

          Справедливости ради, утилита man делегирует отображение утилите less, а последняя поддерживает еще и кнопки из vim (или даже в первую очередь vim, тут как посмотреть) и пару команд ex. Попробуйте ввести 100G (переход на сотую строку), f (вниз на экран), b (вверх на экран), и т.д. А вообще было бы странно, если бы самая распространенная утилита для пейджинга не поддерживала бы все самые привычные кнопки.


  1. AfsmNGhr
    06.04.2016 00:08

    • Хотелось бы увидеть repository на github c config emacs
    • Функция заменяющая ковычки… overhead… зачем? (+ только как тренировка lisp) есть replace-string " -> '… можно с выделением — region…
    • Поиск нужен в том числе и для ruby/rails… вариантов много (ggtags-grep, vc-git-grep, etc) ...
    • Примеры без кода — не айс ...
    • Как мотиватор статья слабовата, мало киллер фич рассмотрено (только кастомизация).
      Хотелось бы видеть статьи о конкретных фичах (org, tramp, flycheck, etc)


    1. Sna1L
      06.04.2016 09:01

      Спасибо за комментарий.

      * Конфиг свой мне стыдно показывать сообществу, тем более, что уже есть примеры более удачные. Хотелось просто рассказать, как и почему именно я им пользуюсь.
      * Ну, может, я плохо знаю о функционале реплейса. Одной командой возможно реализовать тоглинг ковычек по концам строки?
      * Если текущее окно — emacs, пользуюсь rgrep. Если терминал — git grep
      * Буду иметь в виду, спасибо.


  1. sova
    06.04.2016 07:00

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


    1. sova
      06.04.2016 07:04

      прочитал ответ 'программировать можно и в блокноте' и все стало ясно. а я то тут с решарпера тащусь) удачи вам менять кавычки скриптами в своем блокноте)


      1. Sna1L
        06.04.2016 09:01

        Вам не хватает лейбла «ирония» в сообщениях?


  1. Wilk
    06.04.2016 09:01

    Здравствуйте.

    А я вот использую емакс не только потому, что он такой весь из себя настраиваемый, а ещё и потому, что мне он нравится. Есть на мой вкус в нём что-то красивое и изящное. Работа в нём доставляет мне какое-то эстетическое удовольствие. Хотя, не буду спорить, местами он тормозит, местами ведёт себя странно или непривычно, и выглядит немного непривычно.

    К слову, на широкоэкранной Full HD мониторе он выглядит вполне нормально, если убрать лишнее, вроде панели инструментов и полос прокрутки.

    P.S. Где-то прошлым летом я ощутил потребность в использовании его для получения удовольствия от жизни и не стал себе отказывать)


  1. niya3
    06.04.2016 09:02

    Попробовал решить в виме первый пример. Двадцатистрочной функции сходу придумать не получилось, написал по-простому. (Вместо ёлочек должны быть обычные кавычки, парсер...)

    a ) в предположении, что закавыченный участок располагается в одной строке
    :nmap F«r';.
    b) без этого предположения
    :nmap ?»r'N.

    Как пользоваться — установить курсор между кавычек и нажать C-a или C-b. Правда, я бы для решения такой задачи написал регексп и прогнал им файл (или набор файлов) с однокнопочным подтверждением замены, лениво руками переводить курсор-то.

    Что делалось в остальных примерах я не понял :(


    1. niya3
      06.04.2016 17:00

      Подучился работать с тегами.

      a) :nmap <C-a> F"r';.
      b) :nmap <C-b> ?"<CR>r'N.


  1. Fedcomp
    06.04.2016 09:07

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


    1. Sna1L
      06.04.2016 09:23

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

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


  1. Cheater
    06.04.2016 11:44
    -1

    Категорически не советую писать на Emacs Lisp в стиле «вызываем shell-command и делаем всё фактически на баше» (я про Git). Как минимум это может отпугнуть свитчеров на Emacs, создав впечатление, что елисп предназначен для вызова костылей на баше и именно так на нём и пишут.

    Для общения с Git есть несколько «фреймворков» (плагинов), например Magit, правильнее будет писать свои скрипты на Emacs Lisp с использованием внутренних API этих плагинов.


    1. Sna1L
      06.04.2016 15:34

      А как же unix-way? В общем, я не считаю зазорным использовать такой подход (для подобных задач) и вообще не считаю в данном случае это костылями. Сами посудите, однострочный вызов шелла сэкономил мне кучу времени (в т.ч. время на изучение АПИ), и в целом он вполне понятен.

      Тем более, я не пользуюсь магитом и пр. Гит меня и консольный более чем устраивает (работаем по flow, разработчиков не очень много, так что все до предела просто).

      Хотя, может Вы и правы. Но не имеет особого смысла городить дворец, если ребенок попросил тебя помочь ему сделать песочные куличики:)


      1. AfsmNGhr
        06.04.2016 22:58

        Это не автоматизация… пример автоматизации…

        (add-hook 'before-save-hook 'delete-trailing-whitespace) ;; И забываем про whitespace ...

        Для автоматизации подключаем magit… bind`им функцию на нужный hook… используем через magit…
        По времени дольше… но мы же хотим это автоматизировать… пример с magit не сложнее предыдущего ...
        (add-hook 'magit-log-edit-mode-hook '(lambda () (shell-command "shell command to run git's hook")))

        Есть другие варианты решения задачи (полуавтоматизация)… org-capture-templates или git hook…


        1. Sna1L
          07.04.2016 15:27

          Почему это не автоматизация?
          Вместо того, чтобы копировать-вставлять десяток ссылок на коммиты, я копирую префикс и указываю номер задачи, а редактор генерирует мне список ссылок (да еще и с описанием). Самая настоящая автоматизация, просто автоматизирован не весь процесс.
          Генератор, знаете ли, тоже не полностью автоматически все делает: в него еще топливо заливать нужно и включать.

          P.S. первый хук у меня стоит. Очень удобная вещь:)