How to set a keybinding to create and jump to the next line in emacs?

emacs cheat sheet
emacs next line
emacs delete line
emacs jump to line
emacs transpose-lines
emacs move to beginning of line
emacs show line numbers
emacs move-line up

I have the following code that attempts to create a new line and then jump to it. The idea is that move-end-of-line will jump to the end of the current line, and ["C-m"] would act as return/enter. Yet executing this command gives the error: "wrong number of arguments". How do I fix this?

(global-set-key (kbd "C-.") 'new-line)

(defun new-line ()
  (interactive)
  (move-end-of-line)
  ["C-m"]
  )

I think you need to read the Emacs & elisp manuals: these questions are pretty easy to answer. Here's one way to do it.

(defun insert-line-after-line (&optional n)
  (interactive "p")
  (end-of-line 1)                       ;end of current line
  (open-line n)                         ;open n new lines
  (forward-line 1))                     ;go to start of first of them

But seriously: Emacs has very extensive self-documentation, it is easy to find out how to do these things.

How to insert a new line and jump to it, in emacs?, You can make something akin to a keyboard macro like this. (global-set-key (kbd "<S-return>") "\C-e\C-m"). or indeed� See Variables, for how to set variables such as line-move-visual. Unlike C-n and C-p, most of the Emacs commands that work on lines work on logical lines. For instance, C-a (move-beginning-of-line) and C-e (move-end-of-line) respectively move to the beginning and end of the logical line.

An option is to record a macro and use that.

M-x kmacro-start-macro
C-e
C-m
M-x kmacro-end-macro

If you don't care about the macro persisting, just run it:

C-x e

But if you want it to persist you would save it:

M-x name-last-kbd-macro  new-line
M-x insert-kbd-macro new-line

and paste the output into your initialisation file (with your shortcut definition):

(global-set-key (kbd "C-.") 'new-line)
(fset 'new-line
   [end return])

Moving Point - GNU Emacs Manual, 7.2 Changing the Location of Point The keyboard commands C-f , C-b , C-n , and C-p move point to the right, left, down, and up, respectively. so if you start in the middle of one line, you move to the middle of the next. nil value, C-n on the last line of a buffer creates an additional line at the end and moves down into it. Quit Emacs. Key bindings global-set-key Define a global key interactively. global-unset-key Unset a global key interactively. local-set-key Define a key binding to current major mode. local-unset-key Unset a key defined locally. Edit M-x delete-trailing-whitespace Delete trailing Whistespace and ^M characters or \r from Dos or Windows. M-x tabify

["C-m"] is like the way you specify a key for doing a key binding, but this is not the same as how you programmatically tell Emacs to insert a character into a document. You could use (insert-char ?\^M) (see ref here), but that would result in a literal ^M character (try it; another way to do the same thing interactively is Ctrl-Q followed by Ctrl-M). (insert "\n") seems to be what you're looking for.

Also, the reason you're getting the message "wrong number of arguments" is because (move-end-of-line) requires an argument when called out of interactive context. (move-end-of-line 1) works.

That said, possibly an easier way to achieve the result you're looking for is with the following setting:

(setq next-line-add-newlines t)

This will allow you to just do C-n at the end of the file and not worry about the distinction between moving and inserting.

Key Binding Commands, redefines C-x C-\ to move down a line. (global-set-key [M-mouse-1] 'mouse-set- point). redefines the first (leftmost) mouse� With the keybindings.json, it was always possible to redefine all the key bindings of VS Code, but it can be difficult to make a small tweak, especially around overloaded keys, such as Tab or Escape. To remove a specific key binding, add a -to the command and the rule will be a removal rule. Here is an example:

Setting up shortcut for goto-line : emacs, I am brand new to emacs and I am finding it tedious to goto lines using: I like to hook it to something that is quick but not sure how and how to make it quicker. C-a go to the beginning-of-line C-e go to the end-of-line C-n go to next-line C-p go to previous-line C-k kill the current line C-o open-line The following two bindings are CS210 specific: C-x C-g go to a specific line numbered x C-x C-w show (in the minibuffer ) the current line number

Keep moving to the end of lines, To be able to bind a function to a key we need to make it a command, so we need to use (global-set-key [remap move-beginning-of-line] #'my-move-beginning-of -line) and suggested key bindings (these bindings are made in setup-keys.el ). (end-of-line+ &optional N) Move cursor to end of current line or end of next� Altering the key bindings in Emacs should not, on the face of it, be a difficult task. But there’s a reason why the Emacs manual has dedicated 30-odd pages to describing, in great detail, all the subtleties and nuances of how to bind keys.

Emacs: Move Cursor to Beginning of Line/Paragraph, Here's a command that move cursor to beginning of line (of visible char) or previous paragraph. (eq $p (point)) (beginning-of-line)))))) (defun xah-end-of- line-or-block () "Move cursor to end of line or next paragraph. [see Emacs: How to Define Keys] [see Keybinding Design, Fast-Repeat Commands]. A handy list of essential key bindings to commands in Emacs - leeorengel/my-emacs-keybindings Create a new/open recent buffer: Jump to previous/next empty

Comments
  • +1 for the advice to consult the manuals. The manual "Intro to Programming in Emacs Lisp" is the place to start -- C-h i.