Не знаю 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.