所标即所见,所见即所得
我也觉得multiple cursors真是好用到爆炸
对于绝大数编码的场景,multiple cursors已经足够用了,更重要的还非常容易上手。
vim那些复杂的操作,虽然可以应对更多更复杂的场景,但是太难上手了,这些场景也不多见。
multiple cursors的发明,大大增强vscode这类编辑器的文本操作能力。
我觉得vim和emcas也应把multiple cursors整合到核心代码中去,用c来实现,开箱即用,也可以做好跟各种第三方库的支持。
目前这种第三方差插件支持的multiple cursor,跟很多package的兼容都有问题,很难受。
不知道大佬们是怎么想的
问下跟哪些包兼容性有问题?
evil-mc与company似乎就不太兼容,也可能是我的配置有问题?
和 emacs 29 的像素级滚动 pixel-scroll-precision-mode 有冲突。
多光标支持确实应该 Emacs 内置,我用过 Emeditor 的多光标,很好用。
最好用的还是sublime的multi cursor,其他都是模仿的,包括vscode。要不要内置需要取舍,这个要问下maintainer看看。
pixel-scroll-precision-mode
跟很多包都有冲突,我在macOS上卡的不行。
我没有用evil,所以不清楚是不是配置问题,日常使用没有碰到问题。
推荐试试 markmacro 或 marcrusors ,这两个插件是受 meow 中的 beacon 启发的。
基本原理是: 只在一处编辑然后用 kmacro 把编辑应用到所有 mark 文本上,速度比 mc 快多了。
mc 的一个问题就是光标一多就太卡了。
我用的包不多,在 macOS 用着还不错。另外,pixel-scroll-precision-mode
还和 beacon 有冲突,beacon-blink-when-window-scrolls
要设置为 nil 才行。
推荐用我写的 markmacro, 门槛很低, 而且灵活性要比 multiple-cursors 好, 性能也要好很多。
如果 evil 用户直接用狗哥的 meow, 应该比 markmacro 还要强大。
用 Hydra 写的 multiple-cursors,
(use-package multiple-cursors
:ensure t
:after hydra
:bind
(("C-x C-h m" . hydra-multiple-cursors/body)
("C-S-<mouse-1>" . mc/toggle-cursor-on-click))
:hydra (hydra-multiple-cursors
(:hint nil)
"
Up^^ Down^^ Miscellaneous % 2(mc/num-cursors) cursor%s(if (> (mc/num-cursors) 1) \"s\" \"\")
------------------------------------------------------------------
[_p_] Prev [_n_] Next [_l_] Edit lines [_0_] Insert numbers
[_P_] Skip [_N_] Skip [_a_] Mark all [_A_] Insert letters
[_M-p_] Unmark [_M-n_] Unmark [_s_] Search [_q_] Quit
[_|_] Align with input CHAR [Click] Cursor at point"
("l" mc/edit-lines :exit t)
("a" mc/mark-all-like-this :exit t)
("n" mc/mark-next-like-this)
("N" mc/skip-to-next-like-this)
("M-n" mc/unmark-next-like-this)
("p" mc/mark-previous-like-this)
("P" mc/skip-to-previous-like-this)
("M-p" mc/unmark-previous-like-this)
("|" mc/vertical-align)
("s" mc/mark-all-in-region-regexp :exit t)
("0" mc/insert-numbers :exit t)
("A" mc/insert-letters :exit t)
("<mouse-1>" mc/add-cursor-on-click)
;; Help with click recognition in this hydra
("<down-mouse-1>" ignore)
("<drag-mouse-1>" ignore)
("q" nil)))
来自 Pavinberg 的 ” 专业 Emacs 入门(六):插件篇——功能增强类“