admin管理员组文章数量:1029911
emacs 代码导航
整理记录一下emacs编辑代码,浏览代码用到的工具和方法。日常开发的项目基本上用了。其中有些快捷键是默认的,有些是自定义的,如果不习惯,可以根据自己需要重新定义。
我把我的emacs的安装目录上传到了:gitee 和github。可以直接作为.emacs.d。emacs 28 29 都可以。
网上代码搜索
这里可以直接搜索代码,但我没怎么用过。
grep.app 和 sourcegraph
项目的文件查找
- 可以用emacs之外的命令行工具
fd、find、locate、which
- emacs中可以用helm-projectile
最常用的就是helm-projectile-find-file C-c p f 查找文件。
比如模糊定位文件"plugin/reassemble/app_smtp.c":
C-c p f 之后直接输入smtp.c,这时候再按一个空格就定位到了。
要递进定位。那么按:
plug 空格 reas 空格 smtp
这样在一堆文件中,你不需要在列表中逐个查找,可以通过模糊搜索快速定位文件,打开文件。其余的命令还有:
helm-projectile-find-file-dwim
helm-projectile-find-dir
helm-projectile-recentf
这些命令都可以通过C-c p 弹出菜单找到,菜单中也有各自的快捷键。
代码导航
global
global可以生成gtags,让emacs根据索引文件查找代码。配合helm-gtags使用更方便。需要首先在代码目录下执行gtags生成索引文件。然后才能查找。比如:
- 跳转到定义:helm-gtags-dwim M-.
- 查找函数或变量的被引用位置:helm-gtags-find-rtag M-r
- 跳转之后返回:helm-gtags-pop-stack M-,
- 项目范围内查找helm-gtags-select C-c h
lsp
global对c语言支持足够了,而且安装简单依赖少。但现在lsp更好一些。而且支持更多语言。有些新的语言global的索引方式跳转起来已经不那么好使了。
- 跳转到光标所在处定义xref-find-definitions M-.
- 查找光标所在处的引用lsp-find-references M-r
- 跳转之后返回xref-go-back M-,
- buffer内查找函数和变量helm-imenu C-c i
lsp-ui-imenu M-j 没有模糊查询
lsp-treemacs-symbols C-c C-c S 没模糊查询
- 整个项目内查找函数和变量 helm-lsp-workspace-symbol C-c x i
- 整个项目内查找引用lsp-find-references M-r
lsp-treemacs-references
lsp-ui-peek-find-references C-c C-p r
- 函数调用级别lsp-treemacs-call-hierarchy C-c C-c h
- buffer内跳转返回
在用imenu 跳转到一个位置后,C-u C-SPC 会返回跳转之前的位置。仅限于本buffer中用imenu的方式
临时标记一个位置C-SPC,移动到其他位置之后也可以用C-u C-SPC跳回来。如果标记多个,可以倒叙返回。也仅限于本buffer
查找关键字
- buffer中查找关键字isearch C-s
此外M-s 菜单中还有isearch系列搜索
- 更快速地在当前buffer查找关键字:helm-occur C-c o 或 C-x c M-s o 实时交互
occur M-s o 列出关键字的完整列表,同时可以预览。但在执行命令时,不会自动填充关键字
- 高亮buffer中的关键字isearch C-s
isearch-forward-symbol-at-point M-s . 光标所在当前的thing(不管是否在开头)比C-s稍快,而且是基于语法的变量
isearch-forward-thing-at-point M-s M-. 光标所在当前的thing(不管是否在开头)比C-s稍快 比上面多一个M快捷键
symbol-overlay M-i 高亮函数范围内的符号。锁定。可以取消。可以高亮多个。
- 文件中查找关键字rg 也就是ripgrep。功能丰富速度快
emacs 代码导航
整理记录一下emacs编辑代码,浏览代码用到的工具和方法。日常开发的项目基本上用了。其中有些快捷键是默认的,有些是自定义的,如果不习惯,可以根据自己需要重新定义。
我把我的emacs的安装目录上传到了:gitee 和github。可以直接作为.emacs.d。emacs 28 29 都可以。
网上代码搜索
这里可以直接搜索代码,但我没怎么用过。
grep.app 和 sourcegraph
项目的文件查找
- 可以用emacs之外的命令行工具
fd、find、locate、which
- emacs中可以用helm-projectile
最常用的就是helm-projectile-find-file C-c p f 查找文件。
比如模糊定位文件"plugin/reassemble/app_smtp.c":
C-c p f 之后直接输入smtp.c,这时候再按一个空格就定位到了。
要递进定位。那么按:
plug 空格 reas 空格 smtp
这样在一堆文件中,你不需要在列表中逐个查找,可以通过模糊搜索快速定位文件,打开文件。其余的命令还有:
helm-projectile-find-file-dwim
helm-projectile-find-dir
helm-projectile-recentf
这些命令都可以通过C-c p 弹出菜单找到,菜单中也有各自的快捷键。
代码导航
global
global可以生成gtags,让emacs根据索引文件查找代码。配合helm-gtags使用更方便。需要首先在代码目录下执行gtags生成索引文件。然后才能查找。比如:
- 跳转到定义:helm-gtags-dwim M-.
- 查找函数或变量的被引用位置:helm-gtags-find-rtag M-r
- 跳转之后返回:helm-gtags-pop-stack M-,
- 项目范围内查找helm-gtags-select C-c h
lsp
global对c语言支持足够了,而且安装简单依赖少。但现在lsp更好一些。而且支持更多语言。有些新的语言global的索引方式跳转起来已经不那么好使了。
- 跳转到光标所在处定义xref-find-definitions M-.
- 查找光标所在处的引用lsp-find-references M-r
- 跳转之后返回xref-go-back M-,
- buffer内查找函数和变量helm-imenu C-c i
lsp-ui-imenu M-j 没有模糊查询
lsp-treemacs-symbols C-c C-c S 没模糊查询
- 整个项目内查找函数和变量 helm-lsp-workspace-symbol C-c x i
- 整个项目内查找引用lsp-find-references M-r
lsp-treemacs-references
lsp-ui-peek-find-references C-c C-p r
- 函数调用级别lsp-treemacs-call-hierarchy C-c C-c h
- buffer内跳转返回
在用imenu 跳转到一个位置后,C-u C-SPC 会返回跳转之前的位置。仅限于本buffer中用imenu的方式
临时标记一个位置C-SPC,移动到其他位置之后也可以用C-u C-SPC跳回来。如果标记多个,可以倒叙返回。也仅限于本buffer
查找关键字
- buffer中查找关键字isearch C-s
此外M-s 菜单中还有isearch系列搜索
- 更快速地在当前buffer查找关键字:helm-occur C-c o 或 C-x c M-s o 实时交互
occur M-s o 列出关键字的完整列表,同时可以预览。但在执行命令时,不会自动填充关键字
- 高亮buffer中的关键字isearch C-s
isearch-forward-symbol-at-point M-s . 光标所在当前的thing(不管是否在开头)比C-s稍快,而且是基于语法的变量
isearch-forward-thing-at-point M-s M-. 光标所在当前的thing(不管是否在开头)比C-s稍快 比上面多一个M快捷键
symbol-overlay M-i 高亮函数范围内的符号。锁定。可以取消。可以高亮多个。
- 文件中查找关键字rg 也就是ripgrep。功能丰富速度快
本文标签: emacs 代码导航
版权声明:本文标题:emacs 代码导航 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747618530a2194118.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论