Что такое клавиша быстрого доступа для перехода к объявлению в Emacs? - PullRequest
27 голосов
/ 21 января 2011

В Visual Studio легче нажимать кнопку F12, чтобы перейти к объявлению функции или переменной при редактировании кода C / C ++.

Есть ли в emacs сочетание клавиш для этого?

Ответы [ 4 ]

25 голосов
/ 21 января 2011

Ну, это немного сложнее, чем это.

По умолчанию Emacs не «знает» о объявлениях функций для кода C или C ++. Сначала получите Exuberant Ctags . Затем используйте команду etags (ctags для Emacs) в вашем исходном коде. Будет создан файл с именем TAGS.

Затем при редактировании исходного кода, когда вы хотите перейти к объявлению, нажмите M -. (мета и точка или alt и точка на современных клавиатурах). Сначала Emacs спросит вас, где находится ваш файл тегов. Укажите его на тот, который вы создали, и после этого навигация будет автоматически.

Я бы посоветовал прочитать статью Emacswiki о тегах для лучшего понимания этой функции.

Новейшая версия Emacs (23.2) поставляется с интегрированной CEDET , которая имеет более продвинутые функции для навигации C и C ++, но ее может быть немного сложно настроить правильно, поэтому читайте больше если тебе интересно.

11 голосов
/ 09 марта 2016

Как уже говорили другие, в emacs нет встроенного универсального решения для этого. Тем не менее, после этой функциональности в IntelliJ я захотел ее и в emacs, поэтому я сделал Dumb Jump .

Прямо сейчас Тупой прыжок имеет базовую поддержку:

  • JavaScript
  • Emacs Lisp
  • Python
  • Go
  • PHP
  • рубин
  • Faust
  • и более ... (сейчас более 20)

Он доступен через MELPA и активно развивается.

5 голосов
/ 13 октября 2015

M-. Клавиша приведет вас к определению функции emacs.

5 голосов
/ 04 февраля 2013

Есть несколько способов сделать это. Как упоминалось в darioo, Ctags - один, но он идет к определению по умолчанию (что может работать для вас). Однако, если посмотреть дальше, вы увидите, что префикс M-. (то есть C-u M-.) приведет вас к следующему совпадению тега (которое часто является объявлением). Существует также опция --declarations, но Exuberant Ctags, похоже, ее не поддерживает.

CEDET - еще один вариант, но, по моему опыту, он все еще не готов к производству. Часто в C ++ semantic-ia-fast-jump будут идти вперед декларации вместо определения или объявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...