lsp 是通过 lsp-enable-which-key-integration
这个函数加的,然后我的前缀是 SPC l
,所以 (setq lsp-keymap-prefix "SPC l")
就可以了
刚才发现 emacs 内置的一些 keymap 上面是有用 symbol 做为别名的,比如说这个 C-x C-k
kmacro-keymap。
参照
刚才更新了一下 Meow, 现在可以正确的显示这样的 keymap 别名了。
自己定义的例子
似乎没有什么好办法给已有的来添加。
嗯嗯,用是没有问题的,只是对 keypad 的提示有点疑问。
狗哥再麻烦问下,我在尝试将 scroll-up 和 scroll-down 通过 meow-normal-define-key 绑定到 C-f C-b 上的时候,发现这个绑定会同时影响 meow-left 和 meow-right ,后两个方法也变成了 scroll-up/down ……检查过 meow-selection-command-fallback ,没有相关配置。
另外,似乎 qwert 下的 z 键被默认绑了 meow-pop-selection ,我觉得应该使用 meow-pop 吧?不然无法利用 fallback pop 第二选区。
提个问题(或者是需求):
在查找 thing 的时候,对于
def fun(param) do
end
是可以用过 defun 确认范围的;但对于
test "xxxx" do
end
无效,这是 bug 吗?如果不是,希望可以增加对于任意 do end 块的支持。
meow 下层都是从原生绑定获取的命令,因为设计上就是使用者不改原生的命令的。如果你修改了原生的绑定,比如把 forward-char 改到 C-t, (C-f 留给 scoll-up) 你也要对应的改
meow--kbd-forward-char
这个变量到 “C-t”. 具体在翻页上,用 C-f C-b 翻页并不比 Emacs 内置的 C-v M-v 好按,不妨就用默认的。
关于 pop selection, 可以这样。
(meow-pop-selection . meow-pop-grab)
其实 meow-pop-selection
更符合命令的原子性,meow-pop
应改成 meow-pop-selection
的别名。meow 里面有一些多余的命令,注意到了就会 deprecate 或设成推荐命令的 alias。
关于 thing 的问题,大部分的 thing 是 emacs 里面就有的。比如 line
, defun
之类的,每个语言的 mode 实现的时候会实现 thing 的范围如何获取。Meow 里面有的获取的方式依赖于这个。
(bounds-of-thing-at-point 'defun)
如果一个 mode 里面实现的不合适的话,表现的行为就不对。目前没有打算自己实现一个针对每个语言的,以前试着搞过,但是语言很多规则很乱,自己另搞一套并不划算。
meow-thing.el
里面是相关的实现。
- 明白,就是说 meow-left 依赖 C-b,所以我改了 C-b 就会影响 meow-left ; meow-right 同理。
- 明白,
- 好的,我试试看能不能为自己使用的语言单独搞下规则。
谢谢回复 。
加了一个自动调整 face 颜色的功能,感觉相比给别的主题一个个 PR,这个方式更好一些。主要是基于光标的颜色来调亮、调暗。
在一些主题上的效果:
Zenburn
Solarized Dark
Solarized Light
Doom One
Dracula
虽然对比度的感觉忽高忽低,不过还可以接受。
支持了 TUI 里面终端光标样子的变化。测试了 alacritty, urxvt, gnome-terminal 等终端。
太赞了,看到之后立刻尝试了一下。windows terminal 里 powershell 和 cmd 不起作用。Archwsl 可以,ssh 到 centos 服务器也没问题!!不过在 windows 下基本用 GUI,也不是什么大问题。
能在这些地方有效,就已经符合预期了。非常感谢!
BMACRO 模式的说明
名称
Batch Macro,用于批量执行 kmacro 的模式。如有更好的名字可以更换。
启动和关闭的方法
当前处于 NORMAL 模式,光标进入第二选择区域时自动激活。 光标离开第二选区或第二选区消失时自动关闭。
PS:使用 meow-grab 或 Alt + 鼠标选择创建第二选区。
启动后可用的命令
启动后光标移动的时候,会跟据移动的方式不同,在第二选区内产生不同位置的假光标(或假选区)。
目前支持上下左右,word, symbol, line, join, find, till, visit, mark-word, mark-symbol 等命令。
使用 F3 (绑定了 kmacro-start-or-insert-counter 的位置会被 bmacro 临时覆盖,下同) 来录制宏,F4 结束的时候,宏会自动的应用到所有的假光标。如果没有在录制宏,F4 会直接应用最后一个宏到当前真光标和所有的假光标。
insert, append, change 会进入 insert 模式,并自动开始宏的录制,在 exit 的时候自动应用到所有的假光标。
PS: replace 可以相当于对多个地方 replace (这个功能实现和 kmacro 无关)
TPS:
- 已有第二选区相关的功能不受影响, 依然可以用 swap-grab 交换两种选区或是用 sync-grab 将主选区内容覆盖掉第二选区。
- BMACRO 模式的光标不能直接用于编辑,只能用于 kmacro,这样规避了各种插件的兼容性问题,不需要像 multiple-cursor 里面那样备份还原变量,或是打补丁。
- 在 BMACRO 下无法唤出 KEYPAD 模式。
- 开始宏的录制后所在的模式是 NORMAL。
- 用户配置中没有需要新绑定的按键和命令。
对比旧方案
旧方案使用 meow-kmacro-lines 和 meow-kmacro-matches ,两个独立的命令。
虽然用起来还可以,但是能解决的问题场景比较固定。新方案同样能做到这两个命令的效果,某些情况下可以用更少的按键。新方案还复用了 meow 自带的多种移动命令。更符合 meow 的 less is more 的思想。
新方案同旧方案一样对 kmacro 有良好的兼容性,保证了
- 已有的 kmacro 可以应用在当前的这套流程
- 这套流程产生的 kmacro 可以后续继续应用
默认关闭了 cursor 位置的 hack, 当前的默认行为 cursor 和以前是相同的。需要位置处理的话,使用
(setq meow-use-cursor-position-hack t
meow-use-enhanced-selection-effect t)
两个设置。需要在激活 meow-mode 前设置。
光标的位置是为了更符合 vim 用户的习惯,但是感觉并不是编辑的核心需求,所以默认关闭了。
开启时:
关闭时:
修复了,少了一行 require 'dash…
再麻烦问个问题,关于 meow-cancel-selection 这个方法,他的描述是 "Cancel selection or grab " 。但实际上好像并没有取消 grap 的效果,这个是文档没有更新还是我用法不对呢?
(我明白可以设置 meow-selection-command-fallback 来达成目的)
文档问题,我更新一下。感觉经过很多改动之后,需要一波大的文档工作了。
期待新文档和教程了,尤其期待使用思路方面的描述
目前仅简单的使用,有几个优点兼容性,和meow以及近乎所有的emacs按键都能兼容,灵活性很好。然后,可以复用kmacros的那一套,包括录制和保存。最后,多行的匹配更加灵活,不仅包括了我之前习惯的vim行编辑,而且也能享受宏的优势
狗哥做出了很神奇的功能,很棒,很实用。
补充一下,太赞了,一键进入录制退出到normal自动执行宏,好多行文字多次同步修改太快了,太快了,原vim用户震惊