代码语法块删除插件
一般来说我们会用 forward-word
和 backward-word
这两个命令快速在Emacs中进行单词移动。
如果开启了 subword-mode
, forward-word
和 backward-word
会在骆驼风格的单词中按子单词的范围进行移动。
比如 FooBarExample 这个单词,移动的范围依次是 Foo Bar Example
今天写了一个插件,主要融合 skip-syntax-forward
skip-syntax-backward
和 subword-mode
, 使得Emacs可以快速向左和向右进行语法块删除,同时遇到骆驼风格单词的时候可以快速删除子单词。
安装方法见Github
使用方法
使用方法很简单, 绑定按键到下面两个函数:
delete-block-forward
delete-block-backward
3 个赞
cireu
2
刚刚看老王的Github动态更新了,然后就看你发帖了
来用用我的jieba.el,可以按中文分词删除
哈哈哈,jieba分词是不是内存占用比较大? 原来写深度软件中心的时候,用过结巴分词做中文关键字搜索。
我一般对中文编辑的需求不大,主要来回切换输入法很烦。
cireu
4
都开lsp了,还差jieba这点占用啊,我没怎么注意看。
倒是nodejieba的API有点不舒服
好像这个只要开启 subword-mode 就能实现了
不是所有的人都喜欢 subword-mode , 所以只是在这个插件调用的时候,临时开启 subword-mode
刚刚试了试,这个在xubuntu emacs27.0.5下骆驼风格单词没有work。
我必须手动M-x subword-mode 才能开启这个功能,怎么回事呢
我看了看源代码
(let* ((subword-mode 1)
....)
(kill-region ....))
我没学过elisp,但是我看(let* VARLIST BODY...)
的文档,不应该是bind variables according to VARLIST then eval BODY吗,而subword-mode
是function而不是variable吧…
我刚才把(subword-mode 1)
从let*
里面移出来了,顺便在kill-region
后面关掉subword-mode
以免影响forward-word
和backward-word
。提了个PR,懒猫你看一看?
刚刚有机会尝试了一下新的code,我发现还是有问题。在没有开启subword-mode
时直接call (subword-forward)
和(subword-backward)
是没有定义的:
save-excursion: Symbol’s function definition is void: subword-backward
save-excursion: Symbol’s function definition is void: subword-forward
还是得手动开启subword-mode
,并且在跑完delete-block-forward
或delete-block-backward
后subword-mode
依然不会自动关闭,在跑M-f / forward-word
和 M-b / backward-word
时还是会受到影响。
我重新发了个PR,你看一看
函数没有定义,直接 (require 'subword) 就可以了, 见补丁: Add subword depend. · manateelazycat/delete-block@50e1df3 · GitHub
然后直接调用 subword-forward 和 subword-backward
你那种用之前 (subword-mode 1) , 用完以后 (subword-mode -1) 的方式不对,这之间的代码会受到影响。
1 个赞