emacs - ejemplos - django
¿Cómo agregar una nueva línea sin romper la línea actual? (8)
En vim, puedo hacer esto en el modo de comando escribiendo ''o'', que agregará una nueva línea debajo del cursor e ingresará en el modo de inserción.
¿Hay un equivalente en emacs?
Muchas gracias.
Esta configuración podría ayudar:
(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)
Estoy usando emacs 25
y tengo algo como esto:
;; 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)))
Espero que te ayude :)
Estoy usando prelude, y S-RET es equivalente a vi''s o y CS-RET es equivalente a vi''s O.
Intente Co , insertará una nueva línea donde está el cursor y dejará el cursor en la línea.
Uso los siguientes enlaces de teclas para que funcione de manera similar a vim''s o y 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>
has resuelto tu problema?
Acabo de resolver este problema. Siéntase libre de usar este código :) Puede enlazar a cada clave que desee en global-set-key
, también para reemplazar la newline-and-indent
con la newline
en caso de que no le guste la nueva línea a sangrar.
;; 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)
Co ejecutará open-line
que insertará una línea en blanco después del cursor. Por defecto, emacs ya está en "modo de inserción" a menos que esté en un búfer de solo lectura.
El comando Co open-line
que otros han sugerido no es exactamente el mismo que o en vi, porque divide la línea actual y permite que el cursor permanezca en la línea actual.
Obtienes exactamente el mismo efecto que el de vi con dos movimientos: Ce RET , que mueve el cursor hasta el final de la línea actual y luego inserta una nueva línea, que deja el cursor al principio de esa línea.
Podría vincular esa secuencia a una clave propia (quizás anulando la definición existente de Co ), pero dudo que valga la pena.
(Por cierto, la secuencia simétrica Ca RET le da el efecto de la capital O de Ali, insertando una línea antes de la línea actual).