В Emacs, как я могу переключаться между функциями в текущем файле?

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

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

9 ответов

Решение

Просто прыгать по функциям в текущем файле? Используйте имя. Это самая простая и легкая из всех перечисленных альтернатив, которых может быть достаточно для того, что вы хотите. Он также встроен в Emacs и имеет минимальные хлопоты при настройке. Он имеет графический и текстовый интерфейсы. Ничего лишнего, и вам будет лучше, если вы воспользуетесь другими замечательными предложениями, сделанными здесь

Спидбар входит в стандартную комплектацию и предоставляет вам сворачиваемое меню для каждого файла в текущем каталоге, по умолчанию средний щелчок по записи для определения функции переходит к этому определению. С emacs23 это было изменено на более обычный щелчок левой кнопкой мыши.

Вы можете использовать etags-select для выбора из нескольких совпадающих тегов. Но ответ на то, что вы спросили, есть имя.

Глобальные gtags очень хороши

Если М-. воспитывает неправильный метод, вы можете набрать Cu M-. найти следующий с тем же именем.

Попробуйте CEDET. Сложно настроить первый, но вот отличное руководство: Алекс Отт

И когда он будет установлен, вы можете использовать semantic-complete-jump, нажал пару раз вкладку, и это также вызывает определения символов.

Сосульки, вероятно, ближе к тому, что вы ищете:

http://www.emacswiki.org/emacs/Icicles_-_Tags_Enhancements

Это расширение etags и включает (помимо прочего) имя файла с тегом, чтобы вы могли определить, ищите ли вы его.

Для навигации по текущему файлу или выбранному набору файлов вам не нужен файл TAGS. Вы можете использовать Imenu. Но лучше использовать команды Icicles imenu.

Зачем? Потому что они позволяют вам использовать завершение. Подстрока, регулярное выражение, префикс или нечеткое завершение. Объединяйте простые шаблоны, чтобы соответствовать или вычитайте их.

команда icicle-imenu связан в режиме сосульки с Cc =. Но вы также можете найти только команду или просто некомандную функцию (неинтерактивную), используя команду icicle-imenu-command или же icicle-imenu-non-interactive-function,

Эти команды являются мультикомандами, что означает, что они на самом деле являются браузерами: вы можете переключаться между определениями функций, используя клавиши C-RET или C-mouse-2 (прямые переходы) и C-down (цикл). Нажмите RET или щелкните мышью-2, чтобы обосноваться в конечном пункте назначения.

я использую C-M-aа также C-M-eдля перехода между началом и концом функций.

В противном случае откройте Speedbarи нажмите на +значок рядом с именем файла для просмотра списка функций, содержащихся в файле. Затем щелкните имена функций, чтобы перейти к ним напрямую.

Другие вопросы по тегам