Возможно, часто повторный вопрос здесь, но я ничто не могу найти похожим с поиском. Дело в том, что мне нравится использовать Emacs для моих персональных проектов, обычно очень небольшие приложения с помощью C или Python, но я задавался вопросом, как использовать его также для моей работы, в которой у нас есть проект с приблизительно 10k файлы исходного кода, так veeeery большой (на самом деле, я использую исходное понимание, которое является очень хорошим инструментом, но только для окон), вопросы:
Также, если Вы будете иметь опыт с этим и захотите совместно использовать свои мысли, то я буду считать это очень интересным.
Бром
Мои проекты обычно находятся в 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)))
Что касается поиска по всему проекту, я считаю чрезвычайно полезной команду rgrep .
Кроме того, imenu очень удобен для перехода к определению функции в том же файле.
Это мои 2р.
Существует также обозреватель кода Emacs. Это значительно упрощает изучение проектов. См. здесь и здесь для получения дополнительной информации.
«Традиционный» способ навигации по исходным файлам C - использовать «etags» для создания файла с именем TAGS, а затем использовать ALT-. переходить к функциям по файлам.
Для поиска строк в файлах я обычно использую grep. Вы можете создать сценарий оболочки со всеми каталогами, которые хотите искать, или что-то в этом роде, если вам надоест вводить их каждый раз.
посмотрите на EDE от CEDET - он обеспечивает базовую поддержку для проектов ...
ЕЦБ, на мой взгляд, слишком тяжеловесен. У меня были хорошие результаты с xcscope. Излишне говорить, что это не слишком помогает с Python.
В дополнение к использованию 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 ).