在vim中,我可以通过输入'o'在命令模式下执行此操作,这将在光标下方添加一个新行,并进入插入模式。
emacs中是否有相同的内容?
非常感谢。
答案 0 :(得分:34)
其他人建议的命令 Co open-line
与vi中的 o 不完全相同,因为它会拆分当前行并让光标保持不变在当前行。
你得到与vi的 o 完全相同的效果,有两个笔划: Ce RET ,它将光标移动到当前的末尾然后插入一个新行,将光标留在该行的开头。
您可以将该序列绑定到它自己的键(可能会覆盖 C-o 的现有定义),但我怀疑它是否值得这么麻烦。
(顺便提一下,对称序列 Ca RET 给你vi的大写 O 的影响,在>之前插入一行 em>当前行。)
答案 1 :(得分:19)
你解决了问题吗?
我刚刚解决了这个问题。随意使用此代码:)
您可以<{> 1}} 绑定到您喜欢的每个键,也可以global-set-key
替换newline-and-indent
以防 比如要缩进的新行。
newline
答案 2 :(得分:7)
我正在使用前奏, S-RET 相当于vi的 o 和 CS-RET 相当于vi的 O
答案 3 :(得分:2)
尝试 C-o ,它会在光标所在位置插入一个新行,并将光标留在该行上。
答案 4 :(得分:1)
C-o 将运行open-line
,这将在光标后插入一个空行。默认情况下,emacs已处于“插入模式”,除非您处于只读缓冲区中。
答案 5 :(得分:1)
此配置可能有所帮助:
(defun newline-without-break-of-line ()
"1. move to end of the line.
2. open new line and move to new line"
(interactive)
(end-of-line)
(open-line 1)
(right-char))
(global-set-key (kbd "<M-return>") 'newline-without-break-of-line)
答案 6 :(得分:1)
我使用以下键绑定使其工作类似于vim&#39; s o和O:
<pre>
;; vi-like line insertion
(global-set-key (kbd "C-o") (lambda () (interactive)(beginning-of-line)(open-line 1)))
(global-set-key (kbd "M-o") (lambda () (interactive)(end-of-line)(newline)))
</pre>
答案 7 :(得分:1)
我正在使用emacs 25
,我有类似的内容:
;; Insert new line below current line
;; and move cursor to new line
;; it will also indent newline
(global-set-key (kbd "<C-return>") (lambda ()
(interactive)
(end-of-line)
(newline-and-indent)))
;; Insert new line above current line
;; and move cursor to previous line (newly inserted line)
;; it will also indent newline
;; TODO: right now I am unable to goto previous line, FIXIT
(global-set-key (kbd "<C-S-return>") (lambda ()
(interactive)
(beginning-of-line)
(newline-and-indent)
(previous-line)))
希望它会有所帮助:)
答案 8 :(得分:0)
我正在使用Emacs24。将行插入“。 emacs ”文件。
;; Move cursor to end of current line
;; Insert new line below current line
;; it will also indent newline
(global-set-key (kbd "<C-return>") (lambda ()
(interactive)
(end-of-line)
(newline-and-indent)))
;; Move cursor to previous line
;; Go to end of the line
;; Insert new line below current line (So it actually insert new line above with indentation)
;; it will also indent newline
(global-set-key (kbd "<C-S-return>") (lambda ()
(interactive)
(previous-line)
(end-of-line)
(newline-and-indent)
))
<C + Return>
表示下面的新行 <Ctrl + Enter>
和
<C + S + Return>
,这表示上方新行的 <Ctrl + Shift + Enter>
。
两者都会缩进。我希望它能起作用。