EmacsEmacs является культовой программой для редактирования текстов. Я думаю, что у людей, которые впервые о нем слышат, должно вызвать удивление номер версии Emacs'а, например стандартный GNU Emacs нумеруется уже 20 версией, а XEmacs --- 21. Количество версий, я думаю, свидетельствует о популярности, распространенности и возрасте этой программы. Фактически, Emacs не является текстовым редактором в том виде, в котором он представляется, например, программой Notepad из стандартной поставки Windows. Все дело в том, что предназначение Emacs как программы не столько в предоставлении жестко запрограммированных возможностей по редактированию текста, а в предоставлении расширения этих возможностей. Для этого предназначен специальный язык программирования Emacs Lisp. Практически все, что представляет из себя Emacs тогда, когда вы его запустите в перый раз, является результатом работы "дополнений", написанных на Emacs Lisp'е. Этот редактор текстов очень популярен в среде Unix. Все дело в том, что он существует практически для каждой архитектуры и каждой вариации Unix'а, что позволяет использовать его вне зависимости от операционной системы. Да и "родился" он именно в Unix'е... Под Windows он тоже есть, но тут несколько все сложнее. Его идеология пользовательского интерфейса несколько не совпадает с той, которая присутствует в Windows, поэтому обычного Windows-пользователя Emacs только отпугивает. Во-первых, у него свои собственные "горячие" клавиши, что всегда несколько неприятно. То есть, например, Shift-стрелки могут и не выделять блок, как это принято. Вместо этого надо нажать Ctrl-Space в начале блока а концом блока будет считаться позиция курсора (или "точки" в терминологии Emacs'а) на момент выполнения команды, оперирующей с этим блоком. И разговоры о том, что все эти клавиши могут быть настроены таким образом, как это захочет пользователь, но для этого надо немного разобраться, ни к чему не приводят. Во-вторых, он построен таким образом, что при работе с ним человеку можно вообще не пользоваться меню. Все доступные команды могут выполняться из его собственной командной строки (минибуфера) и для того что бы записать файл можно нажать Ctrl-x Ctrl-s, а можно набрать Alt-x save-buffer. И так --- для любой команды, включая те, которым "горячие" клавиши не назначены. Но все это было бы совершенно бесполезно, если бы командная строка Emacs не предоставляла бы удобные средства для набора команд. Согласитесь, помнить все, что можно набрать, совершенно нереально. Поэтому в ней работает идеология завершения имен, что выражается в следующем: набираете часть команды (что можно вспомнить или догадаться, например, понятно что команда сохранения будет начинаться на save), после этого нажимаете TAB. Если такая команда единственная, то ее название автоматически завершится, иначе будет выдан список возможных вариантов. Тем самым пользователь может выполнить любую операцию не убирая рук с клавиатуры; мало того, даже не перенося пальцев на дополнительную клавиатуру "со стрелочками". Это очень удобно. Вообще говоря, тут стоит отвлечься и сказать несколько слов про интерфейсы. Ален Голуб в своих "Правилах программирования на C и C++" пишет о том, что интерфейс бывает понятный, а бывает удобный. Разница заключается в том, что при использовании понятного интерфейса человек, который никогда не видел компьютера, все равно может выполнить некоторые операции, потому что ему будет понятно как это сделать. То есть, идеология меню является понятной, потому что изучив его в течение нескольких минут, можно все-таки найти то место, где можно выполнить требуемое действие. Это понятно. Но неудобно. Потому что даже если вы умеете пользоваться компьютером, вам все равно придется искать по тому же меню нужный пункт и вы потратите пару лишних минут. В тоже самое время, используя Emacs (который не будет сразу же понятен и на его изучение уйдет некоторое время) вы очень удобно, только при помощи основной клавиатуры, сможете выполнить любое действие. Вот это --- удобно. Что лучше, потратить несколько дней на изучение непонятного сразу интерфейса, но потом не мучаться с его использованием, или приступать сразу к работе с использованием понятного интерфейса но неудобного? По-моему, первое лучше. Потому что мой личный опыт показывает, что выполнение операций "руками" всегда будет быстрее, чем каждый раз разбираться с "понятным" интерфейсом. Потому что используя удобный интерфейс мысли всегда сосредоточены на действии, а при использовании понятного приходиться еще думать что и как сделать. Тем не менее, вернемся к Emacs. Он существует в практически любых вариантах. Он может быть консольным, может быть графическим. Может использовать X-сервер или рисовать свои окна через графический интерфейс пользователя операционной системы (я имею в виду, например, Windows). Для Emacs существует громадное количество "расширений". Есть режимы чтения почты, новостей; есть даже свой собственный Web-браузер. Под Emacs написаны игры (тетрис, сокобан и т.д.). Есть поддержка большого количества режимов редактирования текстов: исходные тексты программ на C/C++, html/xml/sgml, TeX, nroff, ... Для многих из этих режимов есть автоматическая расстановка отступов. Он это делает не так, как обычные редакторы для программистов: "тупо" вставляя столько же пробелов, сколько было на предыдущей строчке, а анализирует текст и расставляет отступы в соответствии с тем, чем является строка. В общем, это очень удобно, потому что после, например, "обнесения" некоторого блока текста C++ фигурными скобками вам не потребуется везде вставлять символы табуляции для того, что бы восстановить структурный внешний вид программы. Все это сделает Emacs, когда ему подадут команду indent-region. Emacs позволяет запускать компилятор и автоматически "выдирает" сообщения о синтаксических ошибках, после чего можно позиционировать курсор сразу же на место ошибки. Есть поддержка gdb, в результате чего Emacs'ом можно отлаживать программы. В общем, много чего можно сделать при его помощи. Для этого надо просто попробовать и посмотреть что получится. Повторю, даже если он вам не понравится, от Emacs'а все равно будет много пользы, потому что с ним можно будет работать на любой платформе. На моей прошлой работе мои сотрудники пытались угадать, под чем я сейчас "сижу": Windows, FreeBSD или Linux. Это было очень непросто сделать, потому что во всех операционных системах внешний вид экрана был одинаковый: "распахнутое" окно Emacs'а, по которому очень сложно что-то сказать. Определяли по ICQ: я им пользуюсь только под Windows'ом (больше по привычке, наверно, скоро перестану; этот "интернет-пейджер" уже достал; электронная почта надежнее и удобнее), поэтому под Win32 в правом верхнем углу у меня была зеленая ромашка, чего не было в остальных ОС. РезюмеEmacs является одним из самых популярных текстовых редакторов для программистов (да и не только для них). Он поддерживает большое количество режимов и позволяет расширять себя до того вида, в котором он будет удобен пользователю. Несмотря на то, что его использованию относительно сложно обучиться, это того стоит.
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
© 2000-2008, Andrey L. Kalinin mailto:andrey@kalinin.ru |
|