Используя Emacs для больших больших проектов

Возможно, часто повторный вопрос здесь, но я ничто не могу найти похожим с поиском. Дело в том, что мне нравится использовать Emacs для моих персональных проектов, обычно очень небольшие приложения с помощью C или Python, но я задавался вопросом, как использовать его также для моей работы, в которой у нас есть проект с приблизительно 10k файлы исходного кода, так veeeery большой (на самом деле, я использую исходное понимание, которое является очень хорошим инструментом, но только для окон), вопросы:

  • Поиск: Который является наиболее удобным способом искать строку в рамках целого проекта?
  • Навигация через функцию: Я имею в виду что-то как помещение курсора по функции, определяю, var, и идущий в определение
  • Рефакторинг

Также, если Вы будете иметь опыт с этим и захотите совместно использовать свои мысли, то я буду считать это очень интересным.

Бром

15
задан Daniel M. 2 April 2010 в 12:30
поделиться

7 ответов

Мои проекты обычно находятся в git, поэтому я собрал это вместе, чтобы быстро найти их:

;; There's something similar (but fancier) in vc-git.el: vc-git-grep
;; -I means don't search through binary files
(defcustom git-grep-switches "--extended-regexp -I -n --ignore-case"
  "Switches to pass to `git grep'."
  :type 'string)

(defun git-grep (command-args)
  (interactive
   (list (read-shell-command "Run git-grep (like this): "
                             (format "git grep %s -e "
                                     git-grep-switches)
                             'git-grep-history)))
  (let ((grep-use-null-device nil))
    (grep command-args)))
9
ответ дан 1 December 2019 в 01:05
поделиться

Что касается поиска по всему проекту, я считаю чрезвычайно полезной команду rgrep .

Кроме того, imenu очень удобен для перехода к определению функции в том же файле.

Это мои 2р.

4
ответ дан 1 December 2019 в 01:05
поделиться

Существует также обозреватель кода Emacs. Это значительно упрощает изучение проектов. См. здесь и здесь для получения дополнительной информации.

6
ответ дан 1 December 2019 в 01:05
поделиться

«Традиционный» способ навигации по исходным файлам C - использовать «etags» для создания файла с именем TAGS, а затем использовать ALT-. переходить к функциям по файлам.

Для поиска строк в файлах я обычно использую grep. Вы можете создать сценарий оболочки со всеми каталогами, которые хотите искать, или что-то в этом роде, если вам надоест вводить их каждый раз.

10
ответ дан 1 December 2019 в 01:05
поделиться

посмотрите на EDE от CEDET - он обеспечивает базовую поддержку для проектов ...

3
ответ дан 1 December 2019 в 01:05
поделиться

ЕЦБ, на мой взгляд, слишком тяжеловесен. У меня были хорошие результаты с xcscope. Излишне говорить, что это не слишком помогает с Python.

http://www.emacswiki.org/emacs/CScopeAndEmacs

3
ответ дан 1 December 2019 в 01:05
поделиться

В дополнение к использованию TAGS, как уже упоминалось другими, я обнаружил igrep и igrep-find очень полезен. Есть также встроенные в Emacs grep и grep-find , но я считаю их интерфейс более неуклюжим.

Мой стандартный поиск:

M-x igrep-find some_regexp RET ~/work_area/*.cxx

Он будет искать все файлы *. Cxx в ~ / work / area и показывать результаты, соответствующие some_regexp . Как и все утилиты поиска, он заполняет подобный компиляции буфер, по которому можно перемещаться, используя C-x ` (также известный как M-x next-error ).

2
ответ дан 1 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

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