emacs 如何新增一行

比如当前行是 aaaaaaaaaaaaBBaaaaaaaaaaaaaaaaa,光标在BB 之间,如何像vim 的 o 那样,在当前行下新增一行,并且进入到下一行;像vim的 O 那样,在当前行的上方新增一行。 网上搜索一下 newline 和 newline-and-indent 似乎都是在当前字符那里新增一个换行符,这样就切割了当前行

<C-e><Ret>。<C-e>到行尾,<Ret>新增一行。

可以参考一下stack overflow上的这个问题:

感谢,stackoverflow 比gpt靠谱 :joy:

第一个是 o, 我绑在 C-o ; 第二个是 O, 我绑在 M-o

(defun newline-and-indent-1 ()
    (interactive)
    (end-of-line)
    (newline-and-indent))

  (defun newline-and-indent-2 ()
    (interactive)
    (beginning-of-line)
    (newline-and-indent)
    (previous-line))
1 个赞

除了插入新行,还要考虑到 undo 光标能回到原来的位置:

(defun newline-bellow ()
  "Insert a new line bellow like `evil-open-below'."
  (interactive)
  (push (point) buffer-undo-list)
  (end-of-line)
  (newline-and-indent))
3 个赞

所以stackoverflow禁gpt防答案被污染,,啥叫污染,,,垃圾答案