Не знаю Emacs и не хочу знать.
Feb. 3rd, 2014 11:25 pmНесмотря на то, что пользую его постоянно.
Вот ПОЛНЫЙ список того, чем я реально пользуюсь в Emacs:
1) Базовые вещи, связанные с редактированием текста - открытие, просмотр, набор текста, перемещение курсора, выделение, копирование, вставка, удаление, отмена последнего действия (какой кретин решил, что "C-x u" это удобно???), сохранение. Notepad.exe может всё это и ещё чуть-чуть.
2) Чуть больше продвинутого редактирования: поиск и замена, в том числе по регэкспам, автодополнение (только по словам, имеющимся в открытых файлах).
3) Одновременная, в рамках одного окна, работа с несколькими файлами. В разных буферах, но в одном окне.
4) Абсолютно базовые вещи, связанные с поддержкой языка программирования. А именно: подсветка синтаксиса и более-менее разумная расстановка отступов. Сюда же: автозамена табуляций на пробелы.
5) Киллер-фича: возможность запускать REPL в том же окне (в другом фрейме). Сюда же: интеграция REPL с редактором, из которой я реально использую C-c C-l, C-c C-t и C-c C-i, причём последние два - довольно редко. Ещё сюда же: возможность использовать окно REPL по существу как то же самое окно редактора - за исключением ввода произвольного текста в произвольном месте (даже C-y работает). Ещё сюда же: грамотная подсветка в REPL.
6) Быстрый переход к месту ошибки. Помогает.
7) Даже как-то стыдно упоминать, но: полноэкранный режим работы, причём графический. У меня макось, и возможность убрать из поля зрения абсолютно всё очень приятна (ладно тулбар, я даже в меню не лазил уже несколько лет как).
ВСЁ!
А теперь то, что часто выставляется как фича, причём важная, и чем я не пользуюсь вообще.
1) Какие-либо системы управления проектами, системы автоматической сборки и т.п. То есть, я, конечно, пользуюсь ими (например, cabal-ом), но Emacs тут ни при чём, cabal запускается из терминала, либо, в крайнем случае, из того же REPL.
2) Системы контроля версий. Опять-таки, я их пользую (обычно hg), но из того же терминала. Мёржи делаются не в каком-то специальном режиме, а "как есть", в одном файле.
3) Средства удалённой работы. По-моему, редактировать нелокальный файл — некий идиотизм.
4) Сниппеты. У меня не такая хорошая память, и думать о том, на какой аккорд у меня повешен сниппет, я не имею ни малейшего желания.
5) Фолдинг. Вообще не понимаю, нафига он нужен. Если надо одновременно видеть две функции, проще разместить их рядом, а не сворачивать весь код между ними.
6) Теги, которые etags. Наличие :i в REPL позволяет в большинстве случаев получить всю необходимую информацию, вообще не заглядывая в исходник; если таки нужно посмотреть, что там, то в выводе :i сразу видно, в какой файл смотреть.
7) Языкозависимое автодополнение. Типа, я набрал точку после имени модуля, и сразу получил список функций в нём. Если сильно надо, я наберу :bro в REPL. И да, мне не лень ОДИН РАЗ набрать идентификатор типа insertWithKey, а в остальные разы я его получу примитивным автодополнением.
8) Доступ к документации. Для документации у меня открыт браузер, и я быстро найду всё, что нужно. А если я уже знаю функцию, которая мне интересна, то, как правило, кроме её типа мне не нужно ничего, а его я получу из REPL.
9) Работа с файловой системой. У меня есть командная строка, и я умею ею пользоваться.
10) Поиск по многим файлам. Это очень редко нужно, а когда нужно — я знаю grep-фу.
Список можно продолжать бесконечно.
Суммируя: единственное, что РЕАЛЬНО держит меня на Emacs'е — это REPL. Всё остальное, что мне нужно, есть в ЛЮБОЙ IDE и в почти любом редакторе для программистов. Но эта фича — ключевая. И да, Emacs — худший из имеющихся редакторов (кроме, возможно, Vim), если забыть про эту фичу. Но с ней получается, что остальные ещё хуже.
Более-менее приблизился к этому Sublime Text. Но искаропки оно работало, когда я на него смотрел, из рук вон плохо. Достаточно уже того, что подсветка в REPL была а) такая же, как в коде, и б) не отличала код, набранный мной, от результатов, выводимых выполняемой функцией. Вообще, у меня создалось впечатление, что там ещё кучу всего пилить и пилить.
Leksah и Yi у меня собрались только в текстовом режиме. Я люблю терминал, но редактор должен быть отдельно.
Всё. Выдохнул.
Update: OK, убедили, возможно когда-нибудь я стану пускать grep из Emacs.
Update 2: ещё одну полезную штуку вспомнил — htmlize.el, чтобы весь код, вместе с подсветкой, экспортировать в HTML.
Вот ПОЛНЫЙ список того, чем я реально пользуюсь в Emacs:
1) Базовые вещи, связанные с редактированием текста - открытие, просмотр, набор текста, перемещение курсора, выделение, копирование, вставка, удаление, отмена последнего действия (какой кретин решил, что "C-x u" это удобно???), сохранение. Notepad.exe может всё это и ещё чуть-чуть.
2) Чуть больше продвинутого редактирования: поиск и замена, в том числе по регэкспам, автодополнение (только по словам, имеющимся в открытых файлах).
3) Одновременная, в рамках одного окна, работа с несколькими файлами. В разных буферах, но в одном окне.
4) Абсолютно базовые вещи, связанные с поддержкой языка программирования. А именно: подсветка синтаксиса и более-менее разумная расстановка отступов. Сюда же: автозамена табуляций на пробелы.
5) Киллер-фича: возможность запускать REPL в том же окне (в другом фрейме). Сюда же: интеграция REPL с редактором, из которой я реально использую C-c C-l, C-c C-t и C-c C-i, причём последние два - довольно редко. Ещё сюда же: возможность использовать окно REPL по существу как то же самое окно редактора - за исключением ввода произвольного текста в произвольном месте (даже C-y работает). Ещё сюда же: грамотная подсветка в REPL.
6) Быстрый переход к месту ошибки. Помогает.
7) Даже как-то стыдно упоминать, но: полноэкранный режим работы, причём графический. У меня макось, и возможность убрать из поля зрения абсолютно всё очень приятна (ладно тулбар, я даже в меню не лазил уже несколько лет как).
ВСЁ!
А теперь то, что часто выставляется как фича, причём важная, и чем я не пользуюсь вообще.
1) Какие-либо системы управления проектами, системы автоматической сборки и т.п. То есть, я, конечно, пользуюсь ими (например, cabal-ом), но Emacs тут ни при чём, cabal запускается из терминала, либо, в крайнем случае, из того же REPL.
2) Системы контроля версий. Опять-таки, я их пользую (обычно hg), но из того же терминала. Мёржи делаются не в каком-то специальном режиме, а "как есть", в одном файле.
3) Средства удалённой работы. По-моему, редактировать нелокальный файл — некий идиотизм.
4) Сниппеты. У меня не такая хорошая память, и думать о том, на какой аккорд у меня повешен сниппет, я не имею ни малейшего желания.
5) Фолдинг. Вообще не понимаю, нафига он нужен. Если надо одновременно видеть две функции, проще разместить их рядом, а не сворачивать весь код между ними.
6) Теги, которые etags. Наличие :i в REPL позволяет в большинстве случаев получить всю необходимую информацию, вообще не заглядывая в исходник; если таки нужно посмотреть, что там, то в выводе :i сразу видно, в какой файл смотреть.
7) Языкозависимое автодополнение. Типа, я набрал точку после имени модуля, и сразу получил список функций в нём. Если сильно надо, я наберу :bro в REPL. И да, мне не лень ОДИН РАЗ набрать идентификатор типа insertWithKey, а в остальные разы я его получу примитивным автодополнением.
8) Доступ к документации. Для документации у меня открыт браузер, и я быстро найду всё, что нужно. А если я уже знаю функцию, которая мне интересна, то, как правило, кроме её типа мне не нужно ничего, а его я получу из REPL.
9) Работа с файловой системой. У меня есть командная строка, и я умею ею пользоваться.
10) Поиск по многим файлам. Это очень редко нужно, а когда нужно — я знаю grep-фу.
Список можно продолжать бесконечно.
Суммируя: единственное, что РЕАЛЬНО держит меня на Emacs'е — это REPL. Всё остальное, что мне нужно, есть в ЛЮБОЙ IDE и в почти любом редакторе для программистов. Но эта фича — ключевая. И да, Emacs — худший из имеющихся редакторов (кроме, возможно, Vim), если забыть про эту фичу. Но с ней получается, что остальные ещё хуже.
Более-менее приблизился к этому Sublime Text. Но искаропки оно работало, когда я на него смотрел, из рук вон плохо. Достаточно уже того, что подсветка в REPL была а) такая же, как в коде, и б) не отличала код, набранный мной, от результатов, выводимых выполняемой функцией. Вообще, у меня создалось впечатление, что там ещё кучу всего пилить и пилить.
Leksah и Yi у меня собрались только в текстовом режиме. Я люблю терминал, но редактор должен быть отдельно.
Всё. Выдохнул.
Update: OK, убедили, возможно когда-нибудь я стану пускать grep из Emacs.
Update 2: ещё одну полезную штуку вспомнил — htmlize.el, чтобы весь код, вместе с подсветкой, экспортировать в HTML.
no subject
Date: 2014-02-03 07:42 pm (UTC)что еще?
> Какие-либо системы управления проектами
запускаешь M-x compile, натравливаешь на скрипт комплиции, профит.
> Средства удалённой работы. По-моему, редактировать нелокальный файл — некий идиотизм
очень удобно когда нужно зайти на какую-нить виртуалку и там что-то поменять. гораздо быстрее чем вручную набивать ssh
> Работа с файловой системой. У меня есть командная строка, и я умею ею пользоваться.
советую все-таки почитать про dired и его возможности, например C-x C-q
> Поиск по многим файлам. Это очень редко нужно, а когда нужно — я знаю grep-фу.
Греп удобней пускать в соседнем буфере и быстро прыгать по файлам (M-x rgrep или find-grep)
> Emacs — худший из имеющихся редакторов
разверните плиз. ни один редактор который я знаю не предоставляет такой расширяемости (+ в рантайме)
no subject
Date: 2014-02-03 07:59 pm (UTC)Э... ну, вроде, вставляет в конец файла текущую дату и время, если файл начинается с .LOG. По крайней мере, раньше так было точно, сейчас не знаю.
> запускаешь M-x compile, натравливаешь на скрипт комплиции, профит.
Пишешь cabal install, никаких скриптов.
> очень удобно когда нужно зайти на какую-нить виртуалку и там что-то поменять. гораздо быстрее чем вручную набивать ssh
М-м-м... почему это?
> советую все-таки почитать про dired и его возможности, например C-x C-q
Читал. Не впечатлился. Переименовывать файлы вообще нужно крайне редко.
> Греп удобней пускать в соседнем буфере и быстро прыгать по файлам
Можно. А можно запустить его в терминале и держать отдельно от, собственно, файлов.
> ни один редактор который я знаю не предоставляет такой расширяемости
Охотно верю. И это надо объяснить отдельно.
В каком случае появляется мегарасширяемость? Я вам скажу. В том случае, когда основная, искаробочная функциональность сделана чёрт-те как. В том случае, когда все проблемы сваливаются на пользователя. А тогда пользователю ПРИДЁТСЯ заниматься настройками.
Мне неинтересно заниматься настройками. Я хочу запустить программу, поставить пару галочек в очевидных местах, и спокойно работать. Но "расширяемые" программы этого не умеют.
no subject
Date: 2014-02-03 09:49 pm (UTC)ну, это тривиально допинать (если на самом деле нужно)
скорее всего если это распространеный кейс, то существует major mode для таких файлов.
> Пишешь cabal install, никаких скриптов.
в comile буфере можно удобно прыгать между ошибками (открывается буфер с файлам в нужном месте)
> М-м-м... почему это?
Не выходишь из привычной среды редактирования.
> Можно. А можно запустить его в терминале и держать отдельно от, собственно, файлов.
и на каждую ошибку запускать редактор и переходить вручную на место ошибки?
> А тогда пользователю ПРИДЁТСЯ заниматься настройками.
Невозмножно сделать интсрумент на все случаи жизни для всех юзеров, который сразу подойдет для всех.
Всегда чего-то хватать не будет. возможность поднастроить под спефичный кейс - благо.
это философия емакса. можно пользоваться одним иснструментом для всех задач, связаных с текстом, а можно разными.
no subject
Date: 2014-02-03 10:16 pm (UTC)Я ни разу не утверждал, что Notepad.exe умеет что-то, чего не умеет Emacs. Я лишь охарактеризовал часть используемых мною возможностей как тривиальные, которые ДАЖЕ Notepad.exe умеет, и уточнил, что это даже не полный список его возможностей.
> в comile буфере можно удобно прыгать между ошибками (открывается буфер с файлам в нужном месте)
Так при C-c C-l происходит ровно то же самое.
> Не выходишь из привычной среды редактирования.
И чем это так хорошо?
> и на каждую ошибку
Мы про греп или про что?
> Невозмножно сделать интсрумент на все случаи жизни для всех юзеров, который сразу подойдет для всех.
КОНЕЧНО!!! Именно поэтому разным юзерам нужны разные инструменты. Более того, одному и тому же юзеру для разных задач нужны разные инструменты.
> это философия емакса
Что не означает, что это хорошо.
no subject
Date: 2014-02-03 07:51 pm (UTC)no subject
Date: 2014-02-03 08:01 pm (UTC)no subject
Date: 2014-02-03 08:44 pm (UTC)ido. вроде незаметно, но открытие файла/буфера по нескольким символам заметно быстрее других способов.
я использую "безымянные" макросы (c-x-( c-x-)) не часто, но раз в неделю бывает.
не знаю фича это или... иногда я делаю зачистку: закрываю все буферы, которые меня открыты. их число 70 - 80. что-то я с трудом представляю себе иде с таким числом открытых файлов.
no subject
Date: 2014-02-03 09:01 pm (UTC)Лишние комбинации клавиш для того, что и так вполне удобно делается.
> я использую "безымянные" макросы (c-x-( c-x-)) не часто, но раз в неделю бывает.
Никогда не использовал, надо сказать.
> закрываю все буферы, которые меня открыты. их число 70 - 80. что-то я с трудом представляю себе иде с таким числом открытых файлов.
Ну, в Visual Studio мне случалось открывать столько. Правда, это в любом случае суксь.
no subject
Date: 2014-02-03 08:49 pm (UTC)no subject
Date: 2014-02-03 08:58 pm (UTC)Э-э-э?
Впрочем, см. Update.
no subject
Date: 2014-02-03 10:57 pm (UTC)no subject
Date: 2014-02-04 08:49 am (UTC)no subject
Date: 2014-02-03 10:56 pm (UTC)no subject
Date: 2014-02-04 08:26 am (UTC)Касательно подсветки REPL'а, там надо написать описание синтаксиса для REPL'а, а не использовать для него тот же синтаксис, что и для исходников. К сожалению, руки не доходят, а никто больше этого не делает.
no subject
Date: 2014-02-04 08:48 am (UTC)Руки не доходят, да. У меня тоже не доходят. И вряд ли дойдут.
no subject
Date: 2014-02-04 04:30 pm (UTC)