在Emacs中使用多个光标设置任意光标位置?

时间:2016-10-05 19:56:09

标签: emacs

我想用相同的字符串修改文件的不同部分。所以我在emacs中安装了precedence。但不幸的是,我不能做(简单?)标记文本不同部分并开始编辑的事情。

我检查的每个命令似乎对我想要的东西没用。例如,我需要编辑第10行的开头和第34行中间的字符。我该怎么做?

2 个答案:

答案 0 :(得分:4)

听起来你正在寻找命令mc/add-cursor-on-click,我个人已经绑定C-S-<mouse-1>。通过此设置,我可以按住CtrlShift并单击第10行的开头,然后单击第34行的中间,我将在两个位置都有一个光标。

您可以在init中按照我的方式绑定此命令:

(global-set-key (kbd "C-S-<mouse-1>") 'mc/add-cursor-on-click)

如果需要,您也可以将kbd替换为其他组合。

答案 1 :(得分:2)

以下内容源自https://github.com/magnars/multiple-cursors.el/issues/44,似乎是一种合理的键盘驱动解决方案。

(require 'multiple-cursors)

(defun mc/toggle-cursor-at-point ()
  "Add or remove a cursor at point."
  (interactive)
  (if multiple-cursors-mode
      (message "Cannot toggle cursor at point while `multiple-cursors-mode' is active.")
    (let ((existing (mc/fake-cursor-at-point)))
      (if existing
          (mc/remove-fake-cursor existing)
        (mc/create-fake-cursor-at-point)))))

(add-to-list 'mc/cmds-to-run-once 'mc/toggle-cursor-at-point)
(add-to-list 'mc/cmds-to-run-once 'multiple-cursors-mode)

(global-set-key (kbd "C-S-SPC") 'mc/toggle-cursor-at-point)
(global-set-key (kbd "<C-S-return>") 'multiple-cursors-mode)

首先使用mc/toggle-cursor-at-point标记您想要光标的每个位置,然后调用multiple-cursors-mode来激活它们。