salir - como usar emacs
en Emacs, edita mĂșltiples lĂneas a la vez (8)
Creo que el compañero de texto tiene un modo en el que si comienzas a escribir, se ingresará lo mismo en todas las líneas que hayas seleccionado. ¿Hay algo similar a esto en emacs? Supongo que hay una forma en que los rectángulos pueden ayudarme, pero no estoy seguro de cómo ...
Creo que estás buscando el modo cua propuesto por boskom. http://www.vimeo.com/1168225?pg=embed&sec=1168225 este screencast puede darle una idea de cómo usar esto.
Es absolutamente necesario que intentes instalar varios cursores:
Está en mermelada y melpa así que solo:
M-x package-install multiple-cursors
Es tan simple como esto: Cx rt
Las respuestas que se muestran arriba son para insertar texto en columnas. "Editar cada línea en la selección" de TextMate inserta el mismo texto en cada línea, independientemente de la longitud de cada línea. Estoy aprendiendo Lisp ahora, así que como ejercicio escribí una función para hacer esto:
(defun append-to-lines (text-to-be-inserted)
;;Appends text to each line in region
(interactive "sEnter text to append: ")
(save-excursion
(let (point-ln mark-ln initial-ln final-ln count)
(barf-if-buffer-read-only)
(setq point-ln (line-number-at-pos))
(exchange-point-and-mark)
(setq mark-ln (line-number-at-pos))
(if (< point-ln mark-ln)
(progn (setq initial-ln point-ln final-ln mark-ln)
(exchange-point-and-mark))
(setq initial-ln mark-ln final-ln point-ln))
(setq count initial-ln)
(while (<= count final-ln)
(progn (move-end-of-line 1)
(insert text-to-be-inserted)
(next-line)
(setq count (1+ count))))
(message "From line %d to line %d." initial-ln final-ln ))))
Primero realiza una selección que incluye todas las líneas que desea afectar y luego ejecuta la función con Mx append-to-lines.
Los rectángulos son para cosas simples como eliminar la misma cantidad de espacios en líneas adyacentes.
De lo contrario, las macros de teclado son el camino a seguir.
Para aquellos de ustedes que quieran hacer esto para escenarios más complicados y quieran hacerlo sin instalar un nuevo módulo, continúen leyendo. (Esto es posible en Emacs sin instalar MarkMultiple, aunque personalmente uso y amo MarkMultiple)
Hace poco tuve que sacar una consulta SQL a un archivo y luego formatearla en una consulta MYSQL INSERT. Así es como Emacs me hizo la vida más fácil ...
El archivo se ve así:
1 I am a random text
2 I am not
3 G, you''ve gone mad
4 Click on this link
5 Transfer in progress (we''ve started the transfer process)
6 But transfer happend yesterday
7 No you are
8 Oh please! this is getting too much!
9 I love emacs
10 I cant be bothered with this any more
11 its time to raise the bar
12 show me how to expand my territory
Y quiero que se vea como:
(1, ,''I am a random text''),
(2, ,''I am not''),
(3, ,''G, youve gone mad''),
(4, ,''Click on this link''),
(5, ,''Transfer in progress (weve started the transfer process)''),
(6, ,''But transfer happend yesterday''),
(7, ,''No you are''),
(8, ,''Oh please! this is getting too much!''),
(9, ,''I love emacs''),
(10, ,''I cant be bothered with this any more''),
(11, ,''its time to raise the bar''),
(12, ,''show me how to expand my territory''),
- Coloque el cursor en la primera línea
- Presione
Cx (
para comenzar a grabar macro [En este punto se están grabando todas las entradas clave, por favor siga las instrucciones cuidadosamente] - Presione
Ca
para ir al comienzo de la línea - Escriba "(" seguido de
Mf
para avanzar una palabra y luego escriba "," -
Cn
para ir a la siguiente línea, seguido deCx )
para finalizar la macro -
Cu 11 Cx e
repite el macro n (11 en este caso) veces
Eureka! Por ahora, si no has fallado obtendrás algo que se ve así:
(1, I am a random text
(2, I am not
(3, G, youve gone mad
(4, Click on this link
(5, Transfer in progress (weve started the transfer process)
(6, But transfer happend yesterday
(7, No you are
(8, Oh please! this is getting too much!
(9, I love emacs
(10, I cant be bothered with this any more
(11, its time to raise the bar
(12, show me how to expand my territory
En este punto, voy a dejarte para que averigües el resto. Pero, antes de irme, me gustaría mencionar que hay bastantes formas de lograr este tipo de cosas. Esta es solo una de esas formas y resulta ser mi forma favorita.
Espero que lo hayas encontrado útil;)
Puede usar los siguientes comandos (y teclas) para lograr esto:
- rectángulo abierto (Cx, r, o) agregar espacios
- kill-rectangle (Cx, r, k) borrar
- rectángulo transparente (Cx, r, c) reemplazar con espacios
- Mx string-insert-rectangle relleno con texto especificado
Aquí hay una descripción completa de esas características: http://www.gnu.org/software/emacs/manual/html_node/emacs/Rectangles.html
Una de las soluciones es usar el modo CUA. Active el modo cua con Mx cua-mode
modo Mx cua-mode
, seleccione rectángulo comience: primero presione C-Enter
y mueva el cursor con los comandos de movimiento estándar para hacer la selección, ahora presionando enter en cualquier momento, desplazará el cursor por las esquinas del rectángulo permitiéndole anteponer o agregar texto a la selección.