В настоящее время мой рабочий процесс с Emacs, когда я пишу код на C или C ++, включает три окна. Самый большой справа содержит файл, с которым я работаю. Левая часть разделена на две части, нижняя - оболочка, которую я использую для ввода команд компиляции или создания, а верхняя часть часто представляет собой какую-то документацию или файл README, с которыми я хочу ознакомиться во время работы. Теперь я знаю, что есть некоторые довольно опытные пользователи Emacs, и мне любопытно, что функционально полезно другим Emacs, если предполагается использовать его как полноценную IDE. В частности, большинство IDE обычно выполняют эти функции в той или иной форме:
- Редактор исходного кода
- составитель
- Отладка
- Поиск документации
- Контроль версий
- ОО функции, такие как поиск классов и инспектор объектов
Для некоторых из них довольно очевидно, как Emacs может соответствовать этим функциям, но как насчет остальных? Кроме того, если конкретный язык должен быть сфокусирован, я бы сказал, что это должен быть C ++.
Изменить: один пользователь указал, что я должен был быть более конкретным, когда я сказал «что насчет остальных». В основном мне было интересно узнать об эффективном контроле версий, а также о поиске документации. Например, в SLIME довольно просто выполнить быстрый поиск по гиперспецификации в функции Lisp. Есть ли быстрый способ найти что-то в документации C ++ STL (если я, например, забыл точный синтаксис hash_map )?
источник
Ответы:
Вы должны быть конкретны в отношении того, что вы подразумеваете под «остальными». За исключением инспектора объектов (о котором я знаю), emacs выполняет все вышеперечисленное довольно легко:
M-x compile
и введите команду компиляции. Оттуда вы можете простоM-x compile
и использовать по умолчанию. Emacs будет регистрировать ошибки компилятора C / C ++ (лучше всего работает с GCC) и поможет вам перейти к строкам с предупреждениями или ошибками.M-x gdb
и он создаст буфер GDB со специальными привязкамиИзменить: я понимаю, мой ответ о поиске документации действительно относится к навигации по коду. Вот еще немного точной информации:
Поиск в Google, несомненно, покажет дальнейшие примеры.
Как видно из второй ссылки, поиск функций (и всего остального) в другой документации может быть выполнен, даже если он не поддерживается "из коробки".
источник
Я должен рекомендовать Emacs Code Browser как более «традиционную» среду стиля IDE для emacs.
РЕДАКТИРОВАТЬ : я также сейчас рекомендую Magit по сравнению со стандартным интерфейсом VCS в Emacs.
источник
Вместо запуска команды make в окне оболочки вы пробовали Mx-компиляцию? Он запустит вашу команду make, отобразит ошибки и во многих случаях упростит переход к строке кода, которая вызвала ошибку, если выходные данные содержат имена файлов и номера строк.
Если вы поклонник IDE, вы также можете взглянуть на пакет скоростных панелей emacs (Mx speedbar). И, если вы еще этого не сделали, узнайте, как использовать таблицы тегов для навигации по вашему коду.
источник
Есть уголки Emacs, которые когда-то обнаружили, делают вас более продуктивным, чем вы никогда не думали. Как уже упоминали другие, использование тегов - это фантастический и быстрый способ масштабирования исходного кода, а использование M- / (dabbrev-expand) часто дает именно то, что вы ожидаете при заполнении имени переменной.
Использовать происходит полезно, чтобы получить буфер со всеми вхождениями регулярного выражения в буфере. Это очень удобно при рефакторинге кода и поиске фрагментов кода или использования переменных, или если вы используете маркеры TODO в своих исходных файлах и хотите посетить их все.
Функции flush-lines, sort-numeric-fields, replace-regexp и rectangle могут быть действительно полезны для получения дампа из какого-либо инструмента и преобразования его в полезные данные, такие как программа elisp или электронная таблица с разделителями-запятыми.
Я написал страницу о IDE, как то, что вы можете сделать с Emacs
http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html
Изучение elisp - это еще один отличный способ ответить на вопрос, что еще может сделать emacs помимо того, что может сделать типичная IDE.
Например, я писал в блоге о написании вспомогательных функций Perforce, таких как «вина» (если вы пишете свои собственные, вы можете заставить их вести себя именно так, как вы хотите) ...
http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html
Я также написал код, который динамически создает комментарии для функции в точке, которая соответствует стандартам кодирования, с которыми я работаю.
Ни один из моих elisp-кодов не особенно хорош, и большая его часть уже существует в библиотеках, но действительно полезно иметь возможность заставить emacs выполнять нестандартные вещи, которые появляются в течение рабочего дня.
источник
Вы можете найти подробное описание интеграции с emacs и контролем версий на моем сайте . Я также работаю над статьей об использовании Emacs в качестве среды разработки для многих языков - C / C ++, Java, Perl, Lisp / Scheme, Erlang и т. Д.
источник
Для контроля версий есть несколько вещей, которые вы можете использовать, в зависимости от того, какую систему контроля версий вы используете. Но некоторые функции являются общими для всех из них.
vc.el - это встроенный способ управления версиями на уровне файлов. Он имеет бэкэнды для большинства систем контроля версий. Например, бэкэнд Subversion поставляется с Emacs, а есть git-бекенды и другие, доступные из других источников.
Наиболее полезная команда - Cx vv (vc-next-action), которая выполняет соответствующее следующее действие для файла, который вы просматриваете. Это может означать обновление из репозитория или принятие ваших изменений, vc.el также повторно связывает Cx Cq для проверки и извлечения файлов, если вы используете систему, которая нуждается в этом (например, RCS).
Другими очень полезными командами являются Cx vl и Cx v =, которые показывают журнал и текущий diff для файла, который вы используете.
Но для реальной производительности вам следует избегать использования однофайловых команд vc.el, кроме простых вещей. Существует несколько пакетов, которые могут дать вам обзор состояния всего дерева и дать вам больше возможностей, не говоря уже о возможности создавать согласованные коммиты, охватывающие несколько файлов.
Большинство из них находятся под сильным влиянием или основаны на исходных pcl-cvs / pcvs для CVS. Есть даже два из них , что происходит с подрывной, psvn.el и dsvn.el . Есть пакеты для мерзавцев и т. Д.
источник
Хорошо, все здесь дают отличные советы, чтобы сделать Emacs отличной IDE.
Но любой должен иметь в виду, что когда вы настраиваете свой emacs с большим количеством расширений (особенно с теми, которые проверяют на лету, ищут определения функций и т. Д.), Ваши emacs будут загружаться очень и очень медленно для редактора.
Чтобы обойти это, я настоятельно рекомендую использовать Emacs в
server mode
.Он довольно прост в использовании, нет необходимости настраивать файл инициализации. Вам просто нужно запустить emacs в режиме демона;
Это создаст сервер emacs, после чего вы сможете подключить его либо из терминала, либо из графического интерфейса. Я бы также порекомендовал создать псевдонимы, чтобы было удобно звонить.
Таким образом, emacs будет запускаться даже быстрее, чем gedit, обещаю.
Единственная возможная проблема здесь: если вы запускаете emacs daemon от своего обычного пользователя, вы, вероятно, не можете подключиться к серверу emacs как
root
.Итак, если вам нужно открыть файл с правами root; используйте
tramp
вместо этого. Просто запустите ваш клиент emacs с обычным пользователем и откройте файлы, как это;Это сделало мою жизнь проще, я могу открыть свою мощную специализированную среду разработки Python за миллисекунды таким образом. Вы также можете добавить emacs --daemon в вашу систему или создать файл рабочего стола для emacsclient. Это зависит от вас.
Более подробную информацию о emacs daemon и клиенте emacs можно найти на вики;
http://www.emacswiki.org/emacs/EmacsAsDaemon
http://www.emacswiki.org/emacs/EmacsClient
источник
EDITOR="emacsclient -t" VISUAL="emacsclient -c"
вы можете выполнять редактирование на основе sudo с помощьюsudo -e
илиsudoedit
, что иногда предпочтительнее, чем использование TRAMP (обычно по причинам аудита). Вы также можете вызвать emacsclient с помощью--alternate-editor=
( нужно место в конце), и он запустит демон, если он не работает, что устраняет необходимость включать демон в запуск системы, если вы готовы ждать его в первый раз, когда вы запускать редактор при каждой загрузке.Я согласен, что вы должны узнать о Mx compile (свяжите это и Mx next-error с последовательностью коротких клавиш).
Узнайте о привязках для контроля версий (например, vc-diff, vc-next-action и т. Д.)
Посмотрите на регистры. Вы можете помнить не только местоположения в буферах, но и целые конфигурации окон (Cx rw - window-configuration-to-register).
источник
Отправной точкой (которая может быть неочевидна) для изучения возможностей VC в Emacs является Mx vc-next-action .
Он выполняет «следующую логическую операцию контроля версий» для текущего файла, в зависимости от состояния файла и серверной части VC. Таким образом, если файл не находится под контролем версий, он регистрирует его, если файл был изменен, изменения передаются и т. Д.
Требуется немного привыкнуть, но я нахожу это очень полезным.
Связывание клавиш по умолчанию - Cx vv
источник
Существует TFS.el для интеграции emacs в Microsoft TFS . Он работает с любой TFS, включая TFS, на которой работает Codeplex.com.
Основные шаги для настройки:
Поместите tfs.el в ваш путь загрузки.
В вашем файле .emacs:
также в вашем файле .emacs, установите локальные или глобальные привязки клавиш для команд tfs. вот так:
источник
compile, next-error и previous-error - довольно важные команды для разработки на C ++ в Emacs (прекрасно работает и с выводом grep). Etags, visit-tags-table и find-tag также важны. complete.el - один из величайших невоспетых хаков 20-го века, и может на порядок увеличить скорость вашего взлома C ++. Ох, и давайте не будем забывать Эдифф.
Мне еще предстоит научиться использовать контроль версий без посещения оболочки, но теперь, когда я запускаю коммиты, гораздо чаще (с помощью git) мне, вероятно, придется.
источник
Вы также можете найти вкладку полезной. Он имитирует единственное поведение, которое я пропустил при переходе от Eclipse к Emacs. Связано с "," и "." для перехода к предыдущей и следующей панели вкладок он избавляет вас от необходимости постоянно переключать буфер с помощью Ctrl-x b.
К сожалению, упомянутая веб-страница не предоставляет правильную версию для загрузки. Однако большинство версий Ubuntu поставляют его в своих пакетах emacs-goodies.
источник
Я использую Emacs на Windows. модуль компиляции хорош, но я хотел, чтобы компиляция была более умной в отношении командной строки компиляции, которую он предлагает. Можно указать «Файловые переменные»
compile-command
, но я хотел что-то более умное, чем это. Поэтому я написал небольшую функцию, чтобы помочь. Он угадывает команду compile, чтобы использовать ее для подсказки пользователю при запускеcompile
.Функция предположения ищет файл vbproj или csproj или sln, и, если найден, предлагает msbuild. Затем он смотрит на имя файла буфера и, в зависимости от этого, предлагает разные вещи. Файл .wxs означает, что это проект WIX, и вы, вероятно, захотите построить MSI, поэтому логика предположения предполагает команду nmake для MSI. Если это модуль Javascript, то советуем запустить jslint-for-wsh.js для линтинга файла .js. Как запасной вариант, это предлагает nmake.
Код, который я использую, выглядит следующим образом:
Я попытался сделать это как «до рекомендации» для функции компиляции, но не смог заставить ее работать удовлетворительно. Поэтому я определил новую функцию и привязал ее к той же комбинации клавиш, для которой я использовал
compile
.источник
При поиске документации: это зависит от вашего языка (языков) программирования.
Библиотеки C и системные вызовы обычно документируются на страницах руководства. Для этого вы можете использовать
M-x man
. Некоторые вещи могут быть лучше задокументированы на информационных страницах; использоватьM-x info
.Для самого elisp, используйте
C-h f
. Для python используйте>>> help(<function, class, module>)
в интерпретаторе.Я считаю, что большинство других языков предлагают документацию в виде HTML. Для этого попробуйте встроенный браузер (я использую w3m). Установите
BROWSER
переменную окружения на скрипт-оберткуemacsclient -e "(w3m-goto-url-new-session \"$@\")"
(на * nix), на случай, если что-то может открыть браузер, и вы хотите, чтобы он открывался внутри emacs.источник
Я знаю, что это очень старый пост. Но этот вопрос актуален для начинающих в Emacs.
IMO лучший способ использовать emacs как идеал - это использовать протокол языкового сервера с emacs. Вы можете найти всю информацию о языковых серверах на связанном веб-сайте.
Для быстрой настройки, я призываю вас перейти на эту страницу eglot . IMO eglot делает свою работу довольно хорошо. Он хорошо интегрируется с пакетами автозаполнения, такими как компания. Обеспечивает поиск ссылки и многое другое.
Также для отладчика вам могут понадобиться специальные отладчики для определенных языков. Вы можете использовать GDB из Emacs. Просто введите
M-x gdb
.Для компиляции вашего кода лучше всего использовать команды оболочки. Я работаю над этим проектом eproj . Это займет некоторое время, чтобы завершить это. Но все, что он делает, отображает команду оболочки на тип проекта. И строит ваш проект через оболочку. Это делает то же самое, чтобы выполнить команду. Мне может понадобиться помощь в завершении этого проекта. Он не готов к использованию, но если вы знаете, что такое elisp, вы можете просмотреть код.
Кроме того, всегда лучше использовать команду компиляции emacs.
Для контроля версий я еще не видел ни одного другого пакета, который мог бы соответствовать мощности magit . Это специфично для мерзавца. Также для git есть еще один пакет git-timemachine, который я считаю очень полезным.
Поиск объектов и поиск классов обеспечивается протоколом языкового сервера.
Дерево проекта может быть использовано для интерфейса ide с интерфейсом treemacs .
Существует также проект Interaction Library, который называется снаряд .
Для автозаполнения я считаю режим компании очень полезным.
Поистине, Emacs можно сделать что угодно.
источник
В последние годы Clang стал важной частью поддержки Emacs C ++. Атила Невес выступил с докладом на CppCon 2015: «Emacs как C ++ IDE»
Это 16-минутная беседа, где он показывает решения по следующим темам:
Слайды можно найти здесь .
источник
В стиле Unix или X windows я не знаю, что есть интегрированная IDE, которая работает для всего.
Для взаимодействия с отладчиками, просто одним из компонентов IDE, рассмотрим realgud . Еще одна полезная вещь - парсеры для сообщений о местоположении, так что если у вас есть трассировка стека вызовов и вы хотите редактировать ее в определенном месте стека вызовов, этот интерфейсный интерфейс может это сделать.
Безусловно, эта программа может использовать улучшения. Но тогда он мог бы также использовать людей, работающих над этим, чтобы улучшить его.
Отказ от ответственности: я работаю на реалгуд
источник
Попробуйте lsp-mode. Теперь вы можете использовать другие функции IDE внутри emacs, подключающегося к серверу. Смотрите больше информации: lsp-mode
источник