Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add a new line without breaking the current line?

Tags:

emacs

In vim, I can do this in command mode by typing 'o', which will add a new line below the cursor, and enter the insert mode.

Is there an equivalent in emacs?

like image 297
Minqi Pan Avatar asked May 05 '11 13:05

Minqi Pan


People also ask

How do I add a new line in emacs?

Insert the line to ". emacs" file. <C + S + Return> that means <Ctrl + Shift + Enter> for new line above. Both will indent also.

How do I start a new line in Xcode?

Search for "line" under the Text tab. There are lots of "Insert Newline" commands for which you can set key combos. There's Ctrl+o, Cmd+Enter, Opt+Enter, etc.


Video Answer


4 Answers

The command C-o open-line that others have suggested is not quite the same as o in vi, because it splits the current line and lets the cursor remain in the current line.

You get the exact same effect as vi's o with two strokes: C-e RET, which moves the cursor to the end of the current line and then inserts a new line, which leaves the cursor at the beginning of that line.

You could bind that sequence to a key of its own (perhaps overriding the existing definition of C-o), but I doubt if it's worth the trouble.

(Incidentally, the symmetric sequence C-a RET gives you the effect of vi's capital O, inserting a line before the current line.)

like image 132
drmirror Avatar answered Nov 05 '22 17:11

drmirror


have you solved your problem?

I just solved this problem. Feel free to use this code :) You can bind to every key you like in the global-set-key,also to replace newline-and-indent with newline in case you don't like the new line to be indented.

;; newline-without-break-of-line
(defun newline-without-break-of-line ()
  "1. move to end of the line.
  2. insert newline with index"

  (interactive)
  (let ((oldpos (point)))
    (end-of-line)
    (newline-and-indent)))

(global-set-key (kbd "<C-return>") 'newline-without-break-of-line)
like image 23
code4j Avatar answered Nov 05 '22 17:11

code4j


I am using prelude, and S-RET is equivalent to vi's o and C-S-RET is equivalent to vi's O.

like image 20
phillc Avatar answered Nov 05 '22 16:11

phillc


I am using emacs 25 and I have something like this:

;; 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)))

Hope it will help :)

like image 25
przbadu Avatar answered Nov 05 '22 17:11

przbadu