新手求助: emacs 展开 隐藏 折叠 代码用什么插件

新手求助: emacs 展开 隐藏 折叠 代码用什么插件

自带的 hideshow

有什么快捷键??

C-c @ C-c ;; hs-toggle-hiding

快捷键很长,你可以自己设置得短一点

也可以试试这个minor mode origami

我用outline mode, 在注释的时候,# * 表示一级, # ** 表示二级,支持tab的折叠。其中#可替代为其他语言的注释符号。

这个跟spacemacs自带的evil-close-fold函数有啥区别呢?

没用过evil, hideshow 更底层,可以定制折叠语法什么的

hideshow, origami, yafolding, … 不是语法支持度的问题就是性能问题,我已经放弃折叠很久了。

vimish-fold 倒是移植了部分 vim 的功能,不过手动设置折叠区域还是比较麻烦,并且它是把折叠区域信息存放放在一个文件里,存在与源代码更新同步的问题,还不如直接在代码里写折叠标记。

貌似是一样的,只是映射了下

确实,跟一般的编辑器都差很多,一般行数那边会多出一列,点击起来折叠展开很方便,要是Emacs也实现了就好了

实现这个很简单,你开行号,然后在行号上加按键绑定就行了。或者把 left-margin 开得大一点,也和别的编辑器差不多的


记错了,行号叫 left-margin, 然后行号右边有一栏名字叫 fringe…

有package 吗?

建议不要用折叠的功能, 感觉意义不大, 你如果想看 代码的骨架 可以用 counsel-imenu 或helm-imenu 这样的

1 个赞

这个是一个方案,但是在浏览html, json, xml的时候并不好用,我现在还是采用evil的方法吧,底层就是hideshow,基本效果是这样,但我之前好像是因为什么原因转到origami的来着。。。好像是不太稳定?

不知道有没有 package

主要是可以自己定制。比如json折叠

(add-to-list 'hs-special-modes-alist
     `(web-mode ,(rx (or "<" "{" "["))
                ,(rx (or ">" "}" "]"))
                "/[*/]"
                web-mode-forward-sexp nil))

看代码结构的时候感觉evil-matchit用得很多,在各种配对的括号之间跳来跳去。再比如一个json的大概结构是[{A}, {B}],A和B都很大,内容只有开头一点点不一样,我在整个的开头,要看B的开头那一点,就找到[,再找到它后面的{,再跳到配对的A末尾的},往后走一点就到B的开头了。不用一行行往下翻人肉找A的结尾。

spacemacs C-c C-f