Сделайте я должен знать Lisp Emacs для использования GNU/Emacs

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

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

Спасибо.

6
задан Will Hartung 9 July 2010 в 06:26
поделиться

8 ответов

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 еще не стал опытным пользователем.

5
ответ дан 8 December 2019 в 12:18
поделиться

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

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

2
ответ дан 8 December 2019 в 12:18
поделиться

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

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

8
ответ дан 8 December 2019 в 12:18
поделиться

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

1
ответ дан 8 December 2019 в 12:18
поделиться

На мой взгляд, действительно полезно знать базовое количество Emacs Lisp (например: настройка привязки клавиш , понимание файла .emacs ).

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

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

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

1
ответ дан 8 December 2019 в 12:18
поделиться

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

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

1
ответ дан 8 December 2019 в 12:18
поделиться

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

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

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

1
ответ дан 8 December 2019 в 12:18
поделиться

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

0
ответ дан 8 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: