¿Cómo manejar la línea siguiente en la macro del teclado?

12

Creé una macro de teclado para unir líneas en un búfer usando:

F3 C-n M-x join-line RET F4.

Funciona bien, excepto cuando las líneas se alargan demasiado y comienzan a ajustarse, lo que hace que esta macro dependa del ancho del marco. next-lineno parece ir a la siguiente línea real, sino a la parte de "ajuste" de la línea actual.

¿Cómo solucionar ese problema?

Sébastien Le Callonnec
fuente

Respuestas:

13

Tienes dos tres opciones:

  1. Use en next-logical-linelugar de next-lineal definir la macro:

    Mueva el cursor verticalmente hacia abajo de las ARGlíneas. Esto es idéntico a next-line, excepto que siempre se mueve por líneas lógicas en lugar de líneas visuales, ignorando el valor de la variable line-move-visual.

  2. Establecer line-move-visualen nil:

    (setq line-move-visual nil)

    Esto hace que se next-linecomporte como next-logical-linepor defecto.

  3. Active el truncamiento de línea haciendo

    M-x toggle-truncate-lines RET

    antes de grabar la macro.

itsjeyd
fuente
¡Perfecto! Gracias. Sin embargo, me pregunto en qué situación preferiría next-lineel comportamiento actual del de usted next-logical-line...
Sébastien Le Callonnec
@ SébastienLeCallonnec Creo que hay un caso de uso para todo ... y es bueno saber que Emacs los maneja a todos;)
itsjeyd
1
@ SébastienLeCallonnec Erm ... cuando escribes en lenguaje natural? En una situación no orientada a la línea, presionar <down>o C-nse espera que lo haga ir una línea hacia abajo, no saltar el límite de la línea. Piense que no todos los usuarios provienen del bloc de notas (donde no hay ajuste de línea, en absoluto) ... Imo, la excepción son más bien situaciones en las que next-logical-linees el comportamiento esperado, y en estas situaciones, a menudo tiendo a deshabilitarlas por visual-line-modecompleto. Y +1 @itsjeyd, es realmente bueno poder tener cualquiera de los comportamientos dependiendo de la situación.
T. Verron
2
@ T.Verron bastante justo. Supongo que siempre puedo volver C-na unirme next-logical-line. ;)
Sébastien Le Callonnec
0

C-ay C-eambos toman un argumento de prefijo que le permite omitir líneas. Por ejemplo, C-2 C-asaltará al comienzo de la siguiente línea y C-2 C-esaltará al final de la siguiente línea. Un argumento prefijo de 3 mueve dos líneas, y así sucesivamente. También puede usar argumentos negativos para pasar a líneas anteriores.

Claramente, estos no son de mucha utilidad cuando necesita que el cursor permanezca en la misma columna, pero creo que la mayoría de mis macros implican ir al inicio o al final de una línea de todos modos, por lo que son muy convenientes.

Alan Third
fuente