我想通过方法跳转我的java文件,例如当我到达任何地方时,执行一个键盘快捷键即可跳转到方法的下一个结尾或方法的开头。
Emacs 的“通过 defuns 移动”与 C-M-a 和 C-M-e 对于 C 来说非常有用,并且完全符合我的要求。但显然在 Java 中,defun 是一个完整的类。
通过 defuns 移动:http://www.gnu.org/software/emacs/manual/html_node/emacs/Moving-by-Defuns.html http://www.gnu.org/software/emacs/manual/html_node/emacs/Moving-by-Defuns.html
我发现我可以强迫 C-M-f 和 C-M-b 做我想做的事。它们在任何括号平衡表达式上向前和向后移动。问题是,它们只有在从方法定义的左括号或右括号之外调用时才具有我正在寻找的功能,这是极其有限的。
带平衡括号的表达式:http://www.delorie.com/gnu/docs/emacs/emacs_282.html http://www.delorie.com/gnu/docs/emacs/emacs_282.html
任何想法都会受到欢迎!
imenu http://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html and speedbar http://www.gnu.org/software/emacs/manual/html_node/emacs/Speedbar.html接近您正在寻找的东西。
否则你可以自己定义它。
你可以从这样的事情开始:
(defvar java-function-regexp
(concat
"^[ \t]*" ; leading white space
"\\(public\\|private\\|protected\\|" ; some of these 8 keywords
"abstract\\|final\\|static\\|"
"synchronized\\|native"
"\\|[ \t\n\r]\\)*" ; or whitespace
"[a-zA-Z0-9_$]+" ; return type
"[ \t\n\r]*[[]?[]]?" ; (could be array)
"[ \t\n\r]+" ; whitespace
"\\([a-zA-Z0-9_$]+\\)" ; the name we want!
"[ \t\n\r]*" ; optional whitespace
"(" ; open the param list
"\\([ \t\n\r]*" ; optional whitespace
"\\<[a-zA-Z0-9_$]+\\>" ; typename
"[ \t\n\r]*[[]?[]]?" ; (could be array)
"[ \t\n\r]+" ; whitespace
"\\<[a-zA-Z0-9_$]+\\>" ; variable name
"[ \t\n\r]*[[]?[]]?" ; (could be array)
"[ \t\n\r]*,?\\)*" ; opt whitespace and comma
"[ \t\n\r]*" ; optional whitespace
")" ; end the param list
))
(defun my:next-java-method()
(interactive)
(re-search-forward java-function-regexp nil t)
)
(defun my:prev-java-method()
(interactive)
(re-search-backward java-function-regexp nil t)
)
然后绑定my:next-java-method
and my:prev-java-method
到您想要转到的任何键
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)