yibie
1
需求:
- 高亮多个相同的函数和变量
- 找到同一变量/函数名在同一份文件里的位置
- 找到同一变量/函数名在不同文件里的位置
- 给代码做笔记, 重复回顾时, 可以得到对应的提示
- 遇到不了解的变量/函数, 可以像 VSCode 的 MDN 插件那样直接提供解释
- 格式化代码
- 快速复制光标所在的单词,句子…
解决办法:
需求 1 和 2 可以通过 symbol-overlay 这个优秀的插件解决,在同一份文件里,它可以让我们高亮任意当前选中的变量/函数名,如果高亮多个变量, 它会自动安排颜色,整体体验舒服。同时它还提供了高亮变量之间相互跳转,甚至批量修改的功能,简约而强大。
需求 3 有很多插件可以解决,我用 Doom Emacs 和 helm,它自带了 helm-rg 这个插件,而且分配好了快捷键,可以很方便的查找同一个目录下,多个文件里,同一个变量/函数名。如下图所示:
关于这个需求,有很多方案可以解决,比如懒猫大的 color-rg 等。只不过,目前 Doom Emacs 的已经满足需求,就不另外折腾了。
需求 4 和 5 暂时不急需。
需求 6 可以用一个叫 format-all 的插件解决。
需求 7 是非常急需的,如果配置好了,可以解决很多重复按键操作,这里推荐使用懒猫大的 thing-edit 已经提供了非常完善的功能,可以按照自己的需求,将对的功能绑定在快捷键上。
我个人目前用 hydra 的菜单,来满足自己随时调用的需求。
6 个赞
Roife
2
其实 1 2 3 5 6 都可以靠 LSP……4 不谈,7 我习惯用 embark
Hao
3
分享一个可能常被忽视的内置功能, 算是一个简易版 symbol-overlay. Emacs 中有个叫 Interactive Highlighting 的功能:
M-s h .
(highlight-symbol-at-point) 也可以高亮当前 buffer 中当前位置的 symbol, 多个 symbol 也会自动分配不同的颜色, 如果有 universal arg 的话, 还可以自己选颜色.
M-s h u
(unhilight-regexp) 则可以取消高亮当前 symbol. 如果有前缀的话, 会取消高亮所有 symbol.
相关的还有一系列, 比如高亮当前行, sexp, regexp, 等… 具体可见 Manual: Highlight Interactively (GNU Emacs Manual).
8 个赞
yibie
5
发现第 5 个需求可以通过 corfu 和 cape 来解决,前者提供一个小的 preview 窗口,针对一个内置函数,内置命令,显示解释。
yibie
6
简单试了一下,它会在多次标记时自动分配不同的颜色,如果只是查看一下,而无须更多其他操作,其实也还蛮适合的。
yibie
7
发现了高亮代码的另外一个方法:
原因是我装了 embark,如果只是简单的高亮代码,快速看到函数名,变量名的位置,可以直接用 embark-toggle-hightlight
这个命令。
效果如图:
是一个比较快的,临时的解决方案。