2010-07-09 2 views
4

Недавно я начал изучать GNU/Emacs. Была очень простая в использовании программа. Изучил его структуру. Настроенный приятный цвет для меня. Настройте его на класс программирования C. Все казалось нормальным. Но теперь возник вопрос о GNU/Emacs lisp. Должен ли я действительно потратить время на изучение Emacs Lisp, если я не разработал Emacs и буду использовать его как ide для разработки C/C++, почты, jabber и т. Д. ...Нужно ли знать Emacs Lisp, чтобы использовать GNU/Emacs

Дело в том, что когда я редактирую свой. emacs Я понимаю, что пишу. Но я пишу в основном готовые скрипты или если что-то они очень просты.

Спасибо.

+0

Аналогичный вопрос здесь: http://stackoverflow.com/questions/2582555/emacs-without-lisp –

ответ

1

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

К слову, если вы хотите расширить функциональность, есть возможность сценария emacs с использованием других языков (например, python, perl, не помните, какие из них есть), поэтому изучение elisp не так критично. Возможно, вы можете узнать больше начиная с данной страницы EMACS: http://www.emacswiki.org/emacs/CategoryExtensionLanguage

1

Основной объем Emacs Lisp действительно хорошо знать, на мой взгляд (например: customizing key bindings, понимание .emacs file).

Если требуется более глубокое знание Emacs Lisp, зависит от того, насколько вы довольны emacs, как есть.

Я полагаю, что большинство проблем, с которыми вы столкнетесь, уже разрешено кем-то другим. Таким образом, есть неплохие шансы получить хороший файл .el где-то, что делает именно то, что вы хотите.

Однако, если есть некоторые экзотические функции, которые вы хотите реализовать, изучение Emacs Lisp может быть вариантом. Другое дело, что в промышленности Lisp is an actually used programming language, так что никогда не бывает плохо это знать (хорошо, это Emacs Lisp, но он похож на него).

8

Нет, это не обязательно. Вы, вероятно, напишите elisp, но в основном просто установите переменные и вставьте необходимые фрагменты для любого режима или пакета, который вы хотите использовать (setq, require и т. Д.). Большая часть этого делается путем копирования и вставки, поэтому не требуется реального знания elisp.

Сказав это, определение небольших функций может быть весьма полезным и достаточно усвоить Emacs Lisp, что может оказаться полезным. Посмотрите на Xah Lee's tutorial, это довольно коротко и красно.

1

Как вы новичок, не беспокойтесь о Emacs Lisp. Станьте опытным с редактором. Большинство расширений/режимов, которые мы обычно нуждаемся, уже существуют. Но изучение Emacs Lisp - достойное усилие. ELisp предназначен не только для настройки Emacs, это полный язык программирования. Он может делать много вещей, таких как взаимодействие с файловой системой, сетью, графическим интерфейсом и т. Д. Как только вы познакомитесь с ELisp, есть шанс, что вы сбросите C/C++ и начнете разрабатывать свои приложения в самом ELisp! Развертывание приложения также упростится, так как Emacs/ELisp был перенесен на множество архитектур и может действовать как платформа развертывания.

2

Короткий ответ в «Нет», однако имеющий некоторые знания о Emacs Lisp, значительно повысит вашу производительность в некоторых областях.

Если вы решили потратить некоторое время на изучение Emacs Lisp, я не могу рекомендовать вам лучшую отправную точку, чем отличная книга «Introduction to Emacs Lisp» (она также поставляется в комплекте с Emacs в информационном формате - C-h i m Emacs Lisp Intro).

+0

Благодарим вас за ручную ссылку – 0xAX

0

Я сам пользователь Vim, но я играл с GNU/Emacs. Ваш файл .emacs - emacs lisp, поэтому, если вы пишете собственную конфигурацию вещей, вы уже используете Emacs Lisp. :) Кроме того, вы можете использовать выражения eval lisp для выполнения различных операций, но я не думаю, что вам нужно действительно беспокоиться об этом - особенно если вы придерживаетесь сильно используемых/разработанных режимов (C/C++ и т. Д.). Все дело в том, хотите ли вы открыть одну программу - Emacs - и иметь в ней свой адрес электронной почты, irc и веб-браузер или использовать его в качестве текстового редактора. Но большинство из упомянутых выше вещей уже написаны для вас - так что ... это тоссап.

5

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

Вот пример: мне пришлось некоторое время рефинансировать в моей компании. Это включало перемещение кучи методов в кучу файлов. Чтобы помочь людям, которые будут слияния нашего кода во время перехода, мы оставили комментарии «надгробия» в старом расположении, в котором говорилось, где будет новый код. Надгробные камни включали комментирование всей функции (включая декларацию), удаление тела функции и добавление комментария в место тела вместо этого.

После нескольких из них, и десятки, чтобы идти, я был готов вырвать мои волосы от скуки. Поэтому я объединил следующие команды и застрял в моем файле ~/.emacs. Вы можете получить суть того, что они делают, даже без особых комментариев.

(defun reheadstone-region (fname beg end) 
    (interactive "sFilename to use: \nr") 
    (save-excursion 
    (save-restriction 
     (narrow-to-region beg end) 
     ;; comments around entire thing 
     (goto-char (point-min)) 
     (insert "/*\n") 
     (goto-char (point-max)) 
     (insert "\n*/\n") 
     ;; zap the method body 
     (goto-char (point-min)) 
     (search-forward "{") 
     (forward-line) 
     (push-mark (point)) 
     (goto-char (point-max)) 
     (search-backward "}") 
     (beginning-of-line) 
     (kill-region (region-beginning) (region-end)) 
     (pop-mark) 
     ;; new headstone body 
     (headstone-in fname)))) 

(defun headstone-in (fname) 
    (interactive "sFilename to use: ") 
    (save-excursion 
    (beginning-of-line) 
    (insert (format "\tThis method has been moved to %s." fname)))) 

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

Это то, что Emacs Lisp может сделать для вас. Полагаю, вы можете утверждать, что это ничем не отличается от «разработки Emacs», поскольку эти команды вряд ли выглядят иначе, чем встроенные команды Emacs с точки зрения пользовательского интерфейса, но психологический эффект сильно отличается. Я расширяю редактор очень специфическими командами очень специфическими способами для выполнения задач для моего проекта, которые были бы трудными или невозможными без полного языка сценариев и редактора API в моем распоряжении. С моей точки зрения (и я пришел к этому мнению в последнее время), пользователь Emacs без какого-либо базового средства с Emacs Lisp еще не стал сильным пользователем.

+0

Thumbs up for the hack. Но это похоже на пример школьной книги, когда TAGS полезна, предполагая, что ваша система сборки достаточно умна (или настраивается) для создания тегов для вас и что каждый использует Emacs (кто не будет? :) Плюс, это не так 't оставляют беспорядок позади ... – Staffan

+0

@Staffan: Это последнее предположение является _far_ из случая, особенно когда дело доходит до времени слияния, поскольку есть специальный инструмент объединения не Emacs. Многие разработчики по всему миру сливали этот материал. Поверьте мне, лишняя боль и беспорядок стоили этого в этом конкретном случае, и они убирались позже. –

1

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

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

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

0

Зависит, что ваши цели и ваши интересы. Некоторые люди учатся Emacs Lisp, чтобы использовать Emacs. Некоторые люди учатся Emacs, чтобы использовать Emacs Lisp. ;-)