Обновить
Комментарии 109
Такое ощущение, что вы полностью аргументировали старый анекдот.

Emacs — хорошая операционная система, которой не хватает нормального текстового редактора.


А вообще, из вашего описания я не понял, чем вообще Emacs отличается от Vim или Sublime Text, кроме как любовью к скобочкам.
Я тоже было подумал, что будет что-то навроде «этот ваш vim — это круто, конечно, но можете ли вы в нём так же быстро и удобно как в emacs делать <описание рутинной операции>».
Я несколько лет пользовался emacs, потом перешел на vim. Я свой выбор сделал, хотя некотрых вещей мне не хватает. Емаксовское Alt-t, к примеру, которое меняеет места словами, сохраняя скобки и пунктуацию. Нажав несколько раз можно протащить слово, что очень удобно. Режимы в режимах, можно сделать чтоб для выбранной области подгрузился синтаксис и команды, например вы редактируете sql запрос внутри файла на питоне. Емакс хорошо работает с процессами, лучше чем в vim. Выделить функцию, кинуть ее интерпретатору, который запущен в соседнем окне, забрать ответ, при этом все асинхронно без подвисаний, вообще связка emacs + ipython-mode, при этом ipython запущен внутри emacs, себя очень хорошо зарекомендовала., даже код пишется лучшего качества, более связный и в тоже время с меньшими внешними зависимостями, ведь так удобно писать класс и тут же его запускать и тестировать)))

Огромный плюс емакса org-mode, вы должны попробывать, даже если далеки от емакса)) полноценной альтернативы этому режиму в vim нет.

Emacs враждебен новичку, очень не эргономичные сочетания клавишь по умолчанию, куча вещей висит на Cntr-C Cntr-X что-то там дальше, потому что так исторически сложилось. По умолчанию опять же требуется долгая и нудная кастомизация под себя. vim в этом отношении, конфетка из коробки

Опять же lisp, я не проникся им. Видимо любовь к лиспу это одно из требований к успешному емаксеру. Хотя объективно язык vimscript в этом отношении еще хуже, но есть надежда что vim полностью перейдет к написанию конфигурации на питоне.

По размерам сообщества, более высокий порог входа в емакс делает его гораздо меньше, по сравнению с vim. пользователей vim больше
А плагинами не пользуетесь? Вот для перемены слов местами. Или просто "xdiwdwep"xp.
Переброс текста из vim возможен с помощью tslime, если вы пользуетесь tmux, в обратном порядке работает xmpfilter. Не знаю, как для python, я с ruby работаю.

Orgmode да, тут ничего не скажешь, жаль, что полноценного нет для vim.

По поводу коробки — vim тоже из коробки не подарок, и настраивать его получается долго. А если взять сразу чужой конфиг — не получается вообще начать работать, я так три раза пытался начать с vim, и так и не начал пока не начал с пустого конфига.

В vim можно писать и на python'е, и на ruby, и на lua, и на perl, и на tcl, и на scheme.

Порог вхождения высок хоть туда хоть сюда, уверен, что на данный момент пользователей STE уже больше, чем у vim и emacs вместе взятых.
Но я и не пытался сравнивать эти 3 редактора. Смысл в том, что вам стоит попробовать — и либо начать плеваться и вернуться на IDE, либо понять что что-то в этом есть но именно emacs как редактор вам не подходит и посмотреть на Vim и Sublime, либо таки пополнить сообщество емаксеров.
Про рефакторинг, Java и C# — имхо стоит упомянут как минимум cedet.sourceforge.net/.

А вообще, товарищ, надеюсь, каска твоя крепка и мушка спилена заранее…
НЛО прилетело и опубликовало эту надпись здесь
Всё равно как-то непонятно. Если Emacs — это просто базовый редактор с гибчайшим набором расширяющих плагинов, то я не понимаю, как в мире могут существовать Notepad++ или Sublime. Получается, что Sublime Text / Notepad++ — это просто Emacs с соответствующими плагинами.

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

Стало быть, в vi первый и единственный вопрос заключается в том, как черт побери, из него выйти?
Саблайм и Notepad++ — суть редактор и плагины. В случае emacs граница того где заканчивается редактор и начинаются плагины очень размытая. И нужно пробовать, чтобы понять что вам нужно — есть те, кто с emacs переходят на Sublime, есть те, кто наоборот. Тут дело не в совершенном редакторе, а в выборе того который подойдет именно вам.
Есть четыре этапа освоения программирования (да и не только программирования на самом деле):

1. Как это делать вообще. На этом этапе практически без разницы каким редактором вы пользуетесь. Они все для вас одинаково «непонятны».
2. Как это делать также эффективно как большинство профессионалов в этой области. Тут приоритетами становятся разного рода IDE и специализированнные редакторы типа Sublime.
3. Как это делать максимально эффективно для меня. На этом этапе начинают кастомизировать среду под свои нужды и стиль разработки. Здесь Emacs выстреливает. Потому что возможности кастомизации большинства IDE как правило весьма не высоки.
А четвёртый этап — это полное познание дзен программирования и написание кода силой сотни джуниоров, которые внезапно оказались в подчинении?)
Ну да… Это называется guru… Им уже не важно каким редактором пользоваться… )
возможности кастомизации большинства IDE как правило весьма не высоки
уточните, пожалуйста, о каких именно IDE и требованиях к кастомизации идёт речь.
Возьмем например JIdea — на хабре есть замечательное руководство по созданию плагинов к ней в 7 частях. habrahabr.ru/post/187106/

Не буду утверждать, что для написания расширений для emacs нужно меньше знаний, но проглядев первые 3 части вы можете увидеть насколько громоздко создание расширений для этой IDE.
а) Java, который используется в качестве ЯП для примеров в руководстве, сам по себе громоздкий язык, это бесспорно. Однако плагины можно писать и на Ruby, и на Clojure (в котором есть namespaces, в отличие от)
б) расширения IDEA на минуточку оперируют сущностями уровнем повыше, чем расширения emacs
а) тем не менее структура плагина для JIdea все равно сложнее. Есть ли в Идее возможность написать функцию(не макрос) для автоматизации и забайндить ее на хоткей без создания плагина? Скорее всего нет — потому что она создавалась как законченный продукт, заточенный под конкретную задачу, у emacs идеология другая.

б) не понимаю к чему вы это написали — то, что emacs не может в AST и api для работы с ним же — очевидно(это редактор в конце концов), но каким образом наличие в JIdea хорошего java-парсера облегчает процесс создания расширений в целом?
Есть ли в Идее возможность написать функцию(не макрос) для автоматизации [skip]? Скорее всего нет
Срань господня, то есть вы даже не пытались найти эту функциональность.
она создавалась как законченный продукт, заточенный под конкретную задачу
Вы даже не знаете, что она умеет. Так откуда вам знать, как и для чего создавалась IDEA?
emacs не может в AST и api для работы с ним же
Также он не может ни в «проекты», ни в контроль версий, ни в локальную историю, ни в API для работы с ними; и уж совсем не может (строго говоря, не могут авторы плагинов — принято считать, что пользователям emacs это не нужно) в интеграцию всего этого между собой
каким образом наличие в JIdea хорошего java-парсера облегчает процесс создания расширений в целом?
Ну, там не только парсер и не только Java. А процесс облегчает примерно вот таким образом — habrahabr.ru/post/161877/
Срань господня, то есть вы даже не пытались найти эту функциональность.


Читайте пожалуйста внимательно — я говорю НЕ про клавиатурные макросы, а про функцию которую можно вызвать. Например функция удаляющая все строки длиннее 100 симоволов, или функция проверяющая сущствует ли файл имя которого находится в текущем выделении.

Вы даже не знаете, что она умеет. Так откуда вам знать, как и для чего создавалась IDEA?


А для чего она создавалась? Если она такая универсальная, то почему Jetbrains поддерживает несколько продуктов, заточенных под конкретные языки?

Также он не может ни в «проекты», ни в контроль версий, ни в локальную историю, ни в API для работы с ними; и уж совсем не может (строго говоря, не могут авторы плагинов — принято считать, что пользователям emacs это не нужно) в интеграцию всего этого между собой


github.com/bbatsov/projectile
github.com/magit/magit

Я использую оба этих расширения и они у меня не конфликтуют.

Ну, там не только парсер и не только Java. А процесс облегчает примерно вот таким образом — habrahabr.ru/post/161877/


Первый же комментарий к статье полностью совпадает с моей точкой зрения.
Если она такая универсальная, то почему Jetbrains поддерживает несколько продуктов, заточенных под конкретные языки?

Насколько я понимаю, есть платформа, и есть куча плагинов. В том числе плагины, поддерживающий тот или иной ЯП.
Тем не менее JetBrains выпускают все это как отдельные IDE: PHPStrom, RubyMine, Idea…
Чисто маркетинговый ход. Насколько я понимаю, в Idea ставятся без проблем плагины для всех языков, которые поддерживаются. То есть нет смысла покупать Idea и PhpStorm — достаточно установить плагин для PHP в Idea.

Idea типа Ultimate Edition, в WebStorm — Starter :)
я говорю НЕ про клавиатурные макросы, а про функцию которую можно вызвать. Например функция удаляющая все строки длиннее 100 симоволов, или функция проверяющая сущствует ли файл имя которого находится в текущем выделении.
Пока только PMIP. Годится?
почему Jetbrains поддерживает несколько продуктов, заточенных под конкретные языки?
С вами скучно разговаривать — вы не владеете матчастью. IDEA Ultimate умеет и Ruby, и Python и PHP — плагины ставятся парой кликов мыши. А специализированные IDE продают тем, кому нужен только один из помянутых ЯП и кто не хочет платить 200$ в год.
они у меня не конфликтуют.
Но и не помогают друг другу — projectile мог бы, например, печатать имена грязных файлов другим цветом. Именно вот такое и обозначает буква «I» в акрониме «IDE».
Первый же комментарий к статье полностью совпадает с моей точкой зрения.
И что?
Пока только PMIP. Годится?


Оно-то годится. Но вы же сами критикуете подход когда элементарный функицонал реализуется плагинами. Т.е. когда в emacs ставится плагин для проектов — это плохо, а если в Идее нужно поставить плагин чтобы иметь возможность человеческой автоматизации — то это нормально. Двойные стандарты-с :)

С вами скучно разговаривать — вы не владеете матчастью. IDEA Ultimate умеет и Ruby, и Python и PHP — плагины ставятся парой кликов мыши. А специализированные IDE продают тем, кому нужен только один из помянутых ЯП и кто не хочет платить 200$ в год.


Простите, я правильно понял, что вы гордитесь тем, что находитесь в курсе маркетинговой политики какой-то компании? Изначально спор был о том, для чего создавалась Idea. Я предположил что она создавалась как законченная IDE для конечного пользователя, вы проигнорировали это и прицепились к маркетингу. Так если Idea не IDE, то что?

Но и не помогают друг другу — projectile мог бы, например, печатать имена грязных файлов другим цветом. Именно вот такое и обозначает буква «I» в акрониме «IDE».


Так emacs и не является IDE в том смысле слова, в каком ей является Idea. Emacs — в первую очередь редактор, в нем можно программировать, а можно статьи писать.

И что?


Ну как минимум то, что не мне одному кажется, что писать такое обилие кода для решения столь простой задачи — перебор.
вы же сами критикуете подход когда элементарный функицонал реализуется плагинами
Уточню: элементарная функциональность, необходимая практически любому программисту. И вам, и мне фактически необходима поддержка «проектов» (вы используете projectile). Но вот необходимость «человеческой автоматизации» постулируется только вами — я не помню, чтобы мне хотя бы раз в за 8 лет понадобилось «удалять строки длиннее 100 символов», из чего следует, что я это делал а) редко, б) средствами вроде grep и не приходя в сознание
emacs и не является IDE в том смысле слова, в каком ей является Idea
Integrated DE он не является ни в каком смысле — его сторонние компоненты в лучшем случае не мешают друг другу. Как бы ни хотелось обратного адептам.
не мне одному кажется, что писать такое обилие кода для решения столь простой задачи — перебор.
а) пишите на Clojure, кода будет меньше
б) напишите аналог на elisp, который будет корректно обрабатывать хотя бы
View:factory ( //"foo.tpl"
"foo.tpl" //)
);
Уточню: элементарная функциональность, необходимая практически любому программисту. И вам, и мне фактически необходима поддержка «проектов» (вы используете projectile). Но вот необходимость «человеческой автоматизации» постулируется только вами — я не помню, чтобы мне хотя бы раз в за 8 лет понадобилось «удалять строки длиннее 100 символов», из чего следует, что я это делал а) редко, б) средствами вроде grep и не приходя в сознание


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

Integrated DE он не является ни в каком смысле — его сторонние компоненты в лучшем случае не мешают друг другу. Как бы ни хотелось обратного адептам.


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

а) пишите на Clojure, кода будет меньше


Вариант с руби меня вполне устраивает, и если возникнет потребность в использовании Idea, то буду применять именно его.

б) напишите аналог на elisp, который будет корректно обрабатывать хотя бы

View:factory ( //«foo.tpl»
«foo.tpl» //)
);


Я уже устал вам повторять, что в emacs нет полноценного парсера языков… Вы сами говорите, что это не IDE и сами требуете от него, чтобы она вела себя как IDE. Но если бы мне нужно было решить задачу из поста(ваш пример ведь оттуда?), указанного выше, я бы написал функцию вида:

(defun find-template ()
  (interactive)
  (setq views-dir "/path/to/proj/path/to/views/")
  (save-excursion
    (find-file (concat (buffer-substring 
     (+ (search-backward-regexp "[\"']") 1)
     (- (search-forward-regexp "[\"']" nil t 2) 1))))))

(global-set-key [f7] 'find-template)


Эта функция бы не понимала, что перед ней php, да и что перед ней вообще, но для перехода к указанному шаблону достаточно было бы перейти на его имя и нажать f7. С практической точки зрения задача решена — все работает, с точки зрения сферического коня в вакууме все конечно очень и очень печально.
По количеству символов кода будет меньше при использовании Clojure. Но семантически — все тоже самое. Ровно столько же реализаций классов (дада, reify), ровно столько же методов. Так что не стоит приводить это как довод.
промахнулся комментом, извините
Integrated DE он не является ни в каком смысле — его сторонние компоненты в лучшем случае не мешают друг другу. Как бы ни хотелось обратного адептам.


Я тут кое-что гуглил и попал сюда в комментарии, прочитал этот тред. Хочу вам сказать, что вы ошибаетесь – в Emacs компоненты (по крайней мере популярные) очень часто неплохо интегрируются. Более того, elisp позволяет всё это проделывать достаточно легко. Например, я как список буферов использую плагин IBuffer. Среди прочего, он может группировать буферы по проектам. Информацию о проектах он берет от projectil. Есть разные реализации всяческих меню и списков, и все плагины, которым нужна такая функциональность – могут использовать другие плагины. Projectil может открыть ваш консоль в директории проекта, а в качестве эмулятора терминала и шелла могут быть любые из доступных в Emacs вариантов (да, их несколько, минимум 5). То, о чем вы писали, – печатать имена грязных файлов другим цветом, это реализуемо, и скорее всего реализуемо без особых костылей. Правда поддержка вывода цветом при этом должна быть в том плагине, с помощью которого projectil выводит список файлов в вашей конкретной конфигурации. Плюс Emacs – вам даже не нужно править сами плагины, всю функциональность поверх вы можете реализовать у себя в конфиге. Расширяемость грандиозная, авторы плагинов стараются по мере возможностей оправдать её.
я тогда был не совсем прав — согрешил против истины в угоду экспрессивности.
в настоящее время я с тезисом «некоторые плагины интегрируются между собой» не спорю. мне кажется, однако, что сломать емакс злоб«экспериментальным» плагином гораздо проще чем IDEA
в качестве эмулятора терминала и шелла могут быть любые из доступных в Emacs вариантов (да, их несколько, минимум 5)
о, а в скольки из них работает «выделить ссылки на файлы из проекта цветом и при клике/спецкоманде над ними переходить в соответствующий файл на указанную позицию»?
Вы как-то не так смотрите на Emacs, в том смысле что сравниваете его с коммерческой IDE. Конфиг Emacs и есть один большой экспериментальный плагин, и пользователям Emacs это нравится. Собственно говоря, автор в топике об этом и говорил.

о, а в скольки из них работает «выделить ссылки на файлы из проекта цветом и при клике/спецкоманде над ними переходить в соответствующий файл на указанную позицию»?


Да в любом можно, нужно только написать какую-то магию в конфиге ;-) А вот в идее я не вижу такой фичи, только что попробовал.
Разница здесь в том, что Emacs требует от пользователя изучать elisp, поэтому порог от простого конфига до написания плагинов меньше, чем в идее.
И ещё – в emacs из коробки есть функции для перехода к файлу, которые умеют подхватывать путь под курсором, если распознают его. Так что это или из коробки заработает, или после каких-то доработок вроде подсовывания на вход пути относительно projectile root. Такие вещи обычно живут в конфигах отдельных пользователей.

Emacs это не IDE. IDE – это готовый набор функций и вам с ним жить. Какие-то из них удачно реализованы, какие-то нет. Зато все они есть сразу из коробки. Emacs же позволяет вам сделать то что хочется и предоставляет для этого кучу готового кода, но всё это «экспериментальные плагины». Вот мне, например, не нравится как в идее реализована работа с git, мне проще в терминале некоторые из действий сделать. А вот в Emacs magit просто обалденный и я знаю что делать, если мне не понравится какая-то мелочь.

Мне очень не хватает некоторых возможностей semantic для php. Я знаю что можно их реализовать, и знаю что работа неспешно ведется у пары пользователей на github. Но вот прямо сейчас её нет и мне не по зубам её быстро реализовать. Но это вполне возможно.
Вы как-то не так смотрите на Emacs, в том смысле что сравниваете его с коммерческой IDE
то есть когда мне говорят «зачем тебе idea, бери emacs» — это правильный взгляд, а когда я в ответ «emacs вот это, это и это не может, а IDEA может» — это неправильный?
в идее я не вижу такой фичи, только что попробовал
ага, там в обычной терминалке такого нет (неожиданно), только в терминале run configuration.
Но вот прямо сейчас её нет и мне не по зубам её быстро реализовать. Но это вполне возможно.
я не спорю, что возможно. но её нет.
Вот мне, например, не нравится как в идее реализована работа с git, мне проще в терминале некоторые из действий сделать
а мне нравится, хоть некоторые действия и правда проще из терминала сделать
И немного отойду от темы разработки ПО, ещё пример интеграции разных компонентов: в любом почтовом клиенте, встроенном в Emacs, вы можете использовать markdown, org-mode, или любой другой режим для написания текстов письма. Или, например, можно добавить поддержку gravatar в любой почтовый клиент, или в git-клиент. Реализация опять же на уровне конфига – вы можете вмешаться в работу другого плагина или переопределить его части. Вопрос только в том какие решения уже реализованы (а их, прошу прощения, туева хуча), а какие можно реализовать. В IDE для вас уже всё реализовали специально для разработки ПО. В Emacs энтузиасты без проблем наклепали несколько замечательных почтовых клиентов, несколько IRC клиентов, но никому не понадобилось вывести грязные файлы отдельным цветом (хотя, если порыться по конфигам, то и такое может быть найдете).
но никому не понадобилось вывести грязные файлы отдельным цветом
а может никто из тех, кто пытался, не смог :)
Да вроде бы ничего сложного, только вот мне, например, совершенно не хочется и пытаться. Не думаю что это востребованная фича. В идее я, кстати, её тоже не вижу в ⌘⇧O. В сайдбаре я её тоже не вижу, хотя сайдбар у меня всегда скрыт, я не пользуюсь списком файлов проекта в нём.
фичи объективно нет, исследований на предмет возможности реализации нет, поэтому любые предполагаемые причины отсутствия равновероятны
1) Есть очень удобный auto-complete-mode который работает со всеми языками.
2) Очень не хватает выполнения лиспа в бэкграунде. Когда Emacs застывает чтобы распарсить двадцать инклюдов то поневоле думаешь о другом редакторе.
Только из-за этой фичи(auto-complete-mode) и пользуюсь Emacs (пишу на Verilog), хотя считаю его ужасно не удобным. Может быть просто еще не привык, но в других редакторах вообще нет никакого verilog-мода. Emacs в моем случае позволяет ускорить процесс разработки в некоторых случаях в десятки если не сотни раз (РТЛ-щики кто им пользуется меня поймут).
Я более-менее настроил Emacs под стандартные клавиши Copy/Past (какой-то плагин поставил который это делает). Но беда в том что этими клавишами нельзя вставить/скопировать в/из Emacs из/в другие приложения. Приходится пользоваться старым-добрым shift-Inst/Ctrl-Inst, и этот метод тоже не всегда работает. Т.е. в ряде случаев я не могу перенести текст в окно Emacs из других приложений(например из браузера) и наоборот. Это жутко бесит. Или то что указатель ввода устанавливается под символ а не справа от него когда тыкаешь туда мышкой, как во всех остальных приложениях. Т.е. чтобы выделить мышью что-то, необходимо начинать выделять на один символ правее нужного. Я понимаю что Emacs — это только хардкор, только клавиатура, и поэтому поддержка мыши реализована как-то совсем странно. И таких мелочей еще вагон и маленькая тележка, которые накапливаясь создают общий неприятный фон от работы. Я понимаю, что многое можно настроить, но на это нужно потратить уйму времени, чтобы разобраться.
Скорее, нужно поискать сборку, где стандартные клавиши copy/paste тоже работают. Если вы работаете не с консольным редактором, то в буфер обмена он должен сохранять результат по умолчанию.
Я так понимаю вы emacs используете под windows? Тут я мало чем могу помочь. Проблемы с клипбордом скорей всего дйствительно из-за корявой сборки…

C-x/C-c/C-v, так называемый cua-mode, включается встроенной командой (сua-mode 1). Просто вписываете это в .emacs…

Для выделения текста используйте лучше С-space. ) Мышь в emacs'е как пятое колесо на машине…
В еmacs'e ecли что-то для вас неудобно, то значит явно есть более простой способ сделать это.
Работаю именно под Linux. Как раз cua-mode у меня и установлен, но видимо как-то не так настроен… Вот такие строчки в файле .emacs
(cua-mode t)
(setq cua-auto-tabify-rectangles nil)
(transient-mark-mode 1)
(setq cua-keep-region-after-copy t)
В linux у меня проблем со вставками текста в emacs ни разу не было. Какой emacs используете 23.х или 24?
Это моут быть проблемы программы откуда вы пытаетесь вставить или глюки конкретно verilog-mode… Поизучайте проблему. Попробуйте покопипастить в в других редакторах. И в emacs в другом major-mode. Это очень странная проблема…
Про все другие редакторы не скажу, но в виме кое-что есть — verilog в vim.
Достаточно спорная статья.

Да, emacs хорош для языков, которым не нужна IDE. Я успешно использовал emacs для Common Lisp — потому что есть slime. С переменным успехом для C/C++ — как ни странно, Visual Studio местами сильно удобнее по части автодополнения. Для Java — да, плохо.

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

Сейчас пишу на Java в Eclipse, настроил чтоб он максимально был похож на emacs. Но вот для JVM-like языков я бы не согласился заново перейти на emacs.
Наверное всё же java-like языков. Потому что JVM'ный clojure — лисп, и emacs для него самая популярная и православная среда разработки.
Да нет там ничего спорного — это просто призыв попробовать. Может кому-то понравится, может не понравится. Проблема emacs в том, что пока не попробуешь его для своих ежедневных задач не поймешь, нужен ли он тебе.
Задумайте реальную команду Emacs, Я попытаюсь отгадать её. (с) Акинатор.
Как-то слышал выражение — «IDE makes you stupid». Смысл в том, что редакторы типа emacs, vim и прочие подобные, заставляют думать, что очень хорошо, особенно для начинающих программистов.
Разве не так? Минусующие, аргументируйте.
Как они заставляют думать? Больше клавиш нажимать заставляют, чаще в документацию заглядывать — тоже. Думать тут причем?
Нет автодополнения, например. Это банально заставляет запоминать хотя бы базовые вещи.
Память и интеллект вроде особо не связаны.
Как так нет? Или вы имеете в виду, что из коробки нет?
Частенько на собеседованиях просят писать код в интерактивном режиме в простом редакторе, даже без подсветки. Не представляете сколько народа отсеивается.
Если есть рядом открытый браузер или другая дока, то без проблем. Если запрещено, то задумаюсь об адекватности работодателя.
Это ещё чё, меня заставили на бумажке писать, причём дали только один листик
А чем IntelliJ Idea именно как редактор кода, а не Java IDE, хуже Emacs?
Мне очень удобно редактировать текст именно на Emacs, хотя в случае с Java я использую Eclipse.
Попробуйте Идею и для того, и для другого. Я не пытаюсь сказать, что Имакс хуже или лучше Идеи как текстовый редактор, просто мне часто приходилось сталкиваться с людьми, которые поплевавшись от Эклипса перешли потом на Имакс или Вим. Да, сравнивая с Эклипсом, эти текстовые процессоры определенно выигрывают — по удобству и разнообразию возможностей манипулирования текстом. Но Идея им как минимум не уступает именно в этом аспекте — редактирование текста.

Кроме того, мне лично Идея нравится больше тем, что сочетания клавиш все-таки там лучше гармонирует с принятыми в OSX и Windows. Плюс к тому, вы получаете действительно качественную поддержку семантического анализа множества языков прямо из коробки. И это касается далеко не только Java, но, скажем, и JavaScript. У Емакса этого тоже можно добиться, но в Идея почти все идет из коробки.

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

Идея и Имакс стоят для меня примерно на одном уровне как текстовые редакторы. Если хотите, можем обсудить функциональность более детально.
Зачем обсуждать? Вы нашли себе редактор которым довольны — тут радоваться нужно, а не обсуждать. :) А мнение других людей об инструменте, который вы используете, никак не влияет на эффективность и удобство этого инструмента для вас.
Дискуссия могла бы помочь в выявлении сильных и слабых сторон того или иного продукта. Разумеется, речь идет не о холиваре. Я предпочитаю выбирать те инструменты, которые лучше подходят для выполнения поставленных задач. И именно в ключе такого диалога между сообществами мы можем улучшить собственное представление о том, с чем работаем, выйти за рамки стереотипов.
> Тем не менее вы вполне можете попасть в коллектив, где за использование текстового редактора вместо серьезной(тм) IDE вас будут презирать. Но это скорее проблема коллектива, а не Emacs.
True. Говоришь что кодишь в блокноте/mcedit/nano/geany и сразу ты ламер, а не крутой прогер, ибо как можно жить без 100500 кнопочек и подсказок? Emacs пока побаиваюсь пробовать — вдруг понравится, а я уже прикепел к банальному mcedit.
У меня ситуация ровно обратная. Пришел на новую работу со своей IDE и как белая ворона тут :)
Признаться честно, никогда с таким сам не сталкивался. И мои друзья/знакомые тоже. Может в больших корпорациях ситуация иная — но я полагаю, такая тенденция уже сходит на «нет».
Мне «везло» раньше на такое, сейчас работодателям всеравно где и как я набираю код, главное чтобы работало как требуется. Осталось дождаться когда перестанут косо смотреть на то что не пихаю везде где только можно фрейморки и ООП и станет совсем хорошо.
пытался использовать emacs после долгих лет использования vim. Использовал evil в emacs. Но так и не смог перейти. Слишком «тяжелым» оказался для меня emacs. Не в плане функционала и возможностей, а в плане его внутреннего устройства.
Странно, что PHP не приравнен к Java и C#, а как бы им противопоставляется. Что из того, что удобно при работе с последними бесполезно при работе с первым?
А почему PHP должен быть приравнен к Java и C#?
Как по мне (опыт с Java и C# минимален), то примерно одни инструменты нужны для эффективной работы. Внутренне могут различаться (статическая типизация vs динамический вывод типов и type hinting), но внешне примерно одни. Прежде всего для умного автодополнения — не показывать private и protected члены класса в глобальном контексте, подсказывать если ожидаемый функцией/методом тип параметра не совпадает с переданным и т. п.
Под ваши критерии подпадает в таком случае почти любой язык с поддержкой ООП — emacs не различает какие методы какие. Если вам важно умное автодополнение, то вам безусловно необходима полноценная IDE.
Навскидку таких в мэйнстриме: C++, C#, Java и PHP.
emacs, как и vim и другие — просто тулз/инструмент,
инструментом либо получаеться пользоваться и он подходит под задачи либо не получаеться/не подходит.

Плюс все эти ньюансы удобства: нужна мышка или нет, расцветки и тд — но это все субъективно и индивидуально — вообщем спорить глупо.

IMHO
— vim удобно если что то быстро подправить и тд
— вести проекты и рефакторинг — emacs чуть впереди

emacs 24.x — очень приятен и прост в настройке

но главное — просто знать что есть альтернатива, которая поможет сделать задачу :)
Пользовался Emacs относительно долго время (около 4 лет), перешел на него с вима(после 2 лет написания С++ в оном), сейчас на Sublime Text.

По моему вот основные минусы Emacs:
— потребляет просто огромное количество памяти, с моим конфигом выходит около 200 МБ (vim — 20, sublime — 50)
— загружается очень долго, по сравнению с другими редакторами (вим и саблайм грузятся почти моментально)
— скрипты написаны на elisp, который достаточно тяжел в понимании обычному программисту, а написание кода на нём не доставляет никакого удовольствия, больше всего бесит обилие скобок( тут имхо, кому-то это может быть плюс, особенно тем, кто пишет на функциональных языках), в виме там свой язык, который тоже далек от нормальных, а в саблайме нормальный и человеческий питон
— тормозит при скролинге, это скорее обусловлено тем, что в редактор не встроено отображение номеров строк и это приходится делать через отдельный скрипт, который каждый раз все пересчитывает заново(не могу утверждать точно, это предположение), если его отключить, таких тормозов не будет. Ну и если использовать отображение строк, то оно будет плохо работать в консоли.
— есть артефакты отрисовки при использовании в линуксе, в самой последней версии такого не замечал, но раньше стабильно были, это как-то связано с GTK2
— из-за долгой загрузки и тормозов этот редактор невозможно использовать для редактирования файлов на лету(когда надо что-то немного поправить и закрыть)
— большинство вещей, которые должны быть в редакторе по умолчанию реализуются с помощью скриптов и их нет из коробки (нумерация строк, подсветка синтаксиса популярных на сегодня языков, нормальное удаление по словам, клавиша Home, которая возвращает не тупо в начало строки, а на первый символ в строке и т.п.)

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

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

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

Вот мой конфиг для Emacs github.com/kodx/emacs.d (рекомендую к ознакомлению, если решите переходить на него). Некоторые вещи я взял из конфига AlexOtt github.com/alexott/emacs-configs
НЛО прилетело и опубликовало эту надпись здесь
Для редактора текста это действительно много. VS это IDE, а Idea вообще на Java написана, так что тут нечего сравнивать.
У меня потребление памяти составляет 152 мб при 130 открытых файлах в случае если запущено с тулкитом. Если запущено через emacs -nw, то кушает 51 мб памяти на тех же 130 файлах. Версия -24.3.50.1. Можете описать на проектах каких объемов у вас было такое потребление памяти?

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

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

Я кстати тоже мечтал о емаксе с питоном вместо лиспа, но когда получил в свое распоряжение саблайм, с сожалением понял что код на лиспе не вызывает у меня отторжения.
Это примерные показатели по памяти при запуске, ни одного файла еще не открыто. Если начать работать, то объем занимаемой памяти увеличивается. Замеры я проводил год назад, сейчас может что-то изменилось.

По поводу тормозов при скролинге — это было на debian 6, там еще и артефакты были, emacs там был 23.

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

Свой конфиг для Emacs я немало дописывал, в том числе и сторонние плагины и после него код на питоне это просто сказка.
Отображение номеров строк вроде одной строчкой конфига делается, я пробовал, но не понравилось чисто визуально.
Для быстрого редактирования сделал шорткат с параметром -Q — так подгружается редактор без плагинов и настроек.
клавиша Home, которая возвращает на первый символ в строке: Alt-m

Для установки плагинов в последнее время пользуюсь package — он сам выкачивает плагины из репозитория и устанавливает не выходя из редактора.
— потребляет просто огромное количество памяти, с моим конфигом выходит около 200 МБ (vim — 20, sublime — 50)

Это просто жесть… Если вам сейчас хватает sublime, то 95% вашего конфига emacs'а можно было смело выбрасывать…
Не 95%, но много. Действительно в Sublime Text из коробки все необходимые функции для текстового редактора, которых нет в Emacs.
Любопытно. Не ради троллинга, можете перечислить эти функции?

Вы, кстати, говорили, что emacs долго грузился свашим конфигом. Долго это сколько? Я бегло просмотрел ваш конфиг, и честно говоря не понял чему там долго грузиться.
Примерный список я уже привел, сейчас могу повторить и немного дополнить:
— отображение нумерации строк
— рулеры по заданным границам
— внутристроковые рулеры по отступам(удобно для питона)
— поддержка синтаксиса Go, python, json из коробки (питон кое-как поддерживается, но для него всегда надо ставить отдельный скрипт)
— поддержка проектов
— авто-комплит по словам, которые встречаются в файле
— поддержка сниппетов
— удаление по словам, а не целым предложениям по комбинации клавиш(в моём конфиге это делает syntax-subword)
— складывание фрагментов кода с отображением сложенных строк на отдельной панели (в саблайме отображает там, где номера строк)
— панель, для отображения открытых файлов или файлов проекта
— быстрый переход по открытым файлам/файлам проекта через сочетание клавиш с поддержкой неточного поиска
— быстрый переход по определениям функций/классов в открытом файле или проекте
— при закрытии, редактор сам запоминает открытые файлы и открывает их в следующий раз, даже если файл был изменен и не сохранен, то он сохраняет все изменения между сессиями и позволяет сохранить их позже
— комментирование строк и блоков по сочетаниям клавиш (это можно настроить в Emacs, но из-за слабой поддержки различных синтаксисов это далеко не везде работает, приходится самому наворачивать)
— возможность перевести весь код на отступы пробелами или табами через одну команду
— подсветка парных скобок в файле и переход между ними (даже в виме такое есть)
— работа с колесом мыши (прокрутка)
— встроенное сочетание клавиш на удаление строки и дублирование
— немногословность редактора, на каждый чих надо отвечать да или нет, там где это совсем не нужно(настраивается, но выискивать все это очень утомляет)

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

По поводу старта, у меня он занимает где-то 30 секунд на моем стареньком ноутбуке 6и летней давности. Дольше всех загружается плагин для питона. Вим и саблайм загружаются за секунду или меньше.

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

Отлично понимаю вас, сам этого тут наелся уже.

Удобные вещи — это всё же сугубо индивидуальное. Бывает такое, вроде и вещь хорошая, но в какой-то момент устаешь от неё и очущаешь, что вещь не твоя. И ничего с этим не сделаешь. Как я понял, у вас c emacs'ом тот самый случай. )

Я спрашивал чтобы оценить на сколько ваши «хотелки», скажем так, критичны лично для меня. Sublime в моём окружении используют как минимум половина программистов. Но как-то он меня до сих пор слабо впечатляет. Тут видимо сказывается то, что я помимо кодинга часто занимаюсь и администрированием. и в этом emacs меня выручает «по-взрослому»…
Могу предложить Вам редактировать файлы сразу на удаленных хостах или делать это через git, так даже безопаснее будет, потому как у вас будет история правок и можно будет раскрыть компрометацию данных, в случае взлома сервера.

Если бы мне надо было только конфиги править, то настраивать Emacs сильно долго не надо, но для программирования необходимы более продвинутые функции. Для конфигов использую vim, в нём удобно много копировать и вставлять (конфиги обычно из этого и строятся).

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


A-x linum — доступно с 23 версии без установки сторонних скриптов

— рулеры по заданным границам

— внутристроковые рулеры по отступам(удобно для питона)


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

— поддержка синтаксиса Go, python, json из коробки (питон кое-как поддерживается, но для него всегда надо ставить отдельный скрипт)


На данный момент все это ставится в пару кликов из пакетного менеджера.

— поддержка проектов


В emacs есть десктопы по в поставке по умолчанию. Ближе всего к саблаймовским проектам является пакет projectile, который есть в репах.

— авто-комплит по словам, которые встречаются в файле


A-/ — без всяких настроек

— поддержка сниппетов


Yasnippet. Есть в репе. Гуглится по emacs snippets первой ссылкой. Вообще да, сам удивляюсь почему yasnippet до сих пор не включили в стандартную поставку.

— удаление по словам, а не целым предложениям по комбинации клавиш(в моём конфиге это делает syntax-subword)


А чем вас не устроило C-Backspace?

— складывание фрагментов кода с отображением сложенных строк на отдельной панели (в саблайме отображает там, где номера строк)


Есть outline-mode который скорее всего вам бы не понравился.

— панель, для отображения открытых файлов или файлов проекта


Из стандартной поставки есть Speedbar, но честно его не использовал.

— быстрый переход по открытым файлам/файлам проекта через сочетание клавиш с поддержкой неточного поиска


Projectile.

— быстрый переход по определениям функций/классов в открытом файле или проекте


Etags вроде есть в стандартной поставке.

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


Первая ссылка в гугле по запросу emacs sessions показывает как включить эту стандартную фичу.

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


A-; С питоном работает отлично. В 23 версии тоже работало.

— возможность перевести весь код на отступы пробелами или табами через одну команду


A-x tabify/untabify

— подсветка парных скобок в файле и переход между ними (даже в виме такое есть)


A-x show-paren-mode

— работа с колесом мыши (прокрутка)


А чо с ним не так?

— встроенное сочетание клавиш на удаление строки и дублирование


Про дублирвоание не понял, удаление — C-k

— немногословность редактора, на каждый чих надо отвечать да или нет, там где это совсем не нужно(настраивается, но выискивать все это очень утомляет)


Есть такое на чистом конфиге.

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

По поводу старта, у меня он занимает где-то 30 секунд на моем стареньком ноутбуке 6и летней давности. Дольше всех загружается плагин для питона. Вим и саблайм загружаются за секунду или меньше.

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


Короче говоря, беда emacs в том, что он не совпал с вашими представлениями о том каким должен быть редактор. Да и 200 мегабайт для ноутбука шестилетней давности, учитывая прожорливость современных браузреов — очень немало. Саблайм очень хорош в этом плане — автор собирает наиболее вкусные фишки из остальных сред и редакторов и встраивает их в дефолтную поставку.
A-x linum — доступно с 23 версии без установки сторонних скриптов

Вы видели как он работает в консоли? Можете посмотреть почему на emacswiki лежит несколько форков.

На данный момент все это ставится в пару кликов из пакетного менеджера.

Нет уж, спасибо. Все эти пакетные менеджеры превращают конфиг в помойку (если вы про MELPA и тому подобные)

А чем вас не устроило C-Backspace?

Посмотрите как происходит удаление по словам в виме и саблайме(в нем даже 2 вида) и поймете о чем я, для решения этого придумали bitbucket.org/jpkotta/syntax-subword

Большинство из перечисленного надо ставить отдельно, либо прикручивать к своему конфигу из набора скриптов. Я же подразумевал, что все это надо ставить и настраивать, тогда в том же саблайме или виме это есть по умолчанию и никуда лезть не надо.
(setq package-archives '((«ELPA». «tromey.com/elpa/»)
(«gnu». «elpa.gnu.org/packages/»)
(«marmalade». «marmalade-repo.org/packages/»)))

(when (load (expand-file-name "~/.emacs.d/marmelade-package.el"))
(package-initialize))

Это все что нужн вставить что бы работать с тремя репозиториями пакетов одновременно.
Использование
load (expand-file-name "~/.emacs.d/marmelade-package.el")

является не мультиплатформенным, в своём конфиге я заменил это на функцию:

;; get-config dir platform independent
(defun kodx/get-config-dir (VPath)
  "get default config dir for plugins"
  (concat user-emacs-directory
          (convert-standard-filename VPath))
)


последующий вызов производится так для вашего случая:
(load (kodx/get-config-dir "marmelade-package.el"))


Работу своего конфига проверял под GNU/Linux и OSX.
Можно посмотреть тут github.com/kodx/emacs.d/blob/master/init.el
Я понял вашу позицию. Просто по пунктам расписал, чтобы люди не думали, что emacs плох настолько :)
Я тоже не хотел народ сильно отпугивать, только указал на существенные, по моему мнению, недостатки.
linum работает в консоли плохо… допустим.
Ну Вы теперь используете Sublime Text — наверное он в консоли хорошо работает?
Я, кстати, для часто используемых языков прикручиваю плагины для умного автокомплита / навигации. Они как правило не так продвинуты, как в настоящих IDE, но auto-complete с ними намного полезнее, чем без них.
Например jedi для python, emacs-clang-complete-async для C и C++, для Erlang есть distel но там как то и необходимости не испытывал.

Ещё улётная вещь — flymake. Практически в реальном времени подсвечивает ошибки (в фоне отправляет ваш исходник компилятору / линтеру и подсвечивает ошибки и warnings. Крайне рекомендую.

ido-mode тоже незаменимая штука для облегчения навигации между буферами или при выборе нужного файла в директории.

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

С другой стороны, кроме Emacs использовал только Eclipse, так что сравнивать практически не с чем.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Главное достоинство Emacs это то, что он был есть и будет. Если вы его настроили и к нему привыкли, можете не волноваться насчет каких-то неожиданных изменений или что он пропадет. Кроме того он был есть и будет на всех десктоп платформах. Одинаковый. Единственная, на мой взгляд ошибка — использование нестандартного лиспа, в качестве скрипта. В остальном прекрасный инструмент.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.