40 votes

Comment ajouter une nouvelle ligne sans rompre la ligne actuelle ?

Dans vim, je peux le faire en mode commande en tapant 'o', qui va ajouter une nouvelle ligne sous le curseur, et entrer dans le mode insert.

Y a-t-il un équivalent dans emacs ?

21voto

code4j Points 1268

avez-vous résolu votre problème ?

Je viens de résoudre ce problème. N'hésitez pas à utiliser ce code :) Vous pouvez lier à chaque clé que vous aimez dans le global-set-key,également pour remplacer newline-and-indent par newline au cas où vous n'aimez pas que la nouvelle ligne soit indentée.

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

8voto

phillc Points 2748

J'utilise le prélude, et S-RET est équivalent à vi' s o et C-S-RET est équivalent à vi' s O.

3voto

przbadu Points 749

J'utilise emacs 25 et j'ai quelque chose comme ça :

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

J'espère que cela aidera :)

2voto

Yunsik Jang Points 21

J'utilise les raccourcis-clés suivants pour qu'ils fonctionnent de manière similaire à vim' s o et 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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X