emacs 光标移出屏幕外

各位 emacs 道友大家好。 最近发现我的 emacs 光标只能在一屏移动。这就很不爽了,因为我写的代码如何太多,我要看到成对的括号或者标签。所以我想让光标随着不断的滚动或者翻屏后,光标还在原来的那个位置不动。请问如何实现呢?

书签功能凑合用吧

Emacs里做不到

如楼上所说 Emacs 不支持。GUI 下应该有使用场景,终端里的 Emacs 由于一般只能用键盘估计用不上。

我想了一个模拟这种操作的方法(需要开启 Lexical-binding):

(defun pin ()
  "开始使用鼠标滚轮滚屏、鼠标点击设置光标、键盘重置光标."
  (interactive)
  (let ((op (point))
        (oc cursor-type))
    (setq cursor-type nil)
    (set-transient-map
     nil
     (lambda ()
       (string-match-p "wheel" (symbol-name this-command)))
     (lambda ()
       (setq cursor-type oc)
       (unless (string-match-p "mouse" (symbol-name this-command))
         (goto-char op))))))

应该可以设置为一滚屏就进入这个模式,但是估计比较麻烦,不想折腾了。

不是特别清楚为什么要这样做。

如果想保持光标位置不动,是不是想在光标处编辑呢? 翻滚屏幕是为了查找当前 buffer 里面的文档, 然后做拷贝的动作?

我经常做这样的操作:

  1. 在光标当前位置编辑
  2. 上下浏览当前 buffer 或者 swiper 关键词
  3. 拷贝到 kill-ring
  4. M-x goto-last-change
  5. 继续编辑

回复错了。。。不知道怎么改回复目标。 有个包可以显示对应括号所在行的内容,可以试试。

哪个包啊,可以帮我找找吗?我现在急需解决这个问题。

我一般用 C-M-f forward-sexpC-M-b backward-sexp 在成对括号间跳转。也有很多更强的包比如懒猫的 awesome-pair

1 个赞