Hace poco me enteré multiple-cursors
y parece un paquete muy útil. Revisé la documentación del repositorio original , pero los comandos aún me parecen un poco oscuros.
Luego vi el video en Emacs Rocks !, y el video es excelente, pero se enfoca principalmente en lo que multiple-cursors
es capaz de hacer, en lugar de cómo hacerlo.
¿Hay tutoriales, tutoriales o ejemplos que ilustren su funcionalidad más básica?
multiple-cursors
Amelio Vazquez-Reina
fuente
fuente
multiple-cursors
muy rápidamente con solo leer el archivo README. Mi recomendación es simplemente aprendermc/mark-next-like-this
. Pruébelo y familiarícese con lo que hace. A partir de ahí, consulte el archivo README cada vez que tenga una pregunta que comience con "Me pregunto si los cursores múltiples pueden hacer ..." Dicho todo esto, creo que es una introducción más básica que las rocas Emacs. El video sería útil para los principiantes.Respuestas:
Además de los usos que describe @bastibe, utilizo múltiples cursores para agregar o eliminar texto del principio / final de un grupo de líneas:
set-rectangular-region-anchor
(vinculada a la clave que desee, creo que la sugerencia de Magnars fue H-space, si tiene una hiperclave)C-n
yC-p
) hasta que tenga un cursor en cada línea que desea editarC-e
) para realizar cambios allí.Puede usar
forward-word
,forward sentence
etc. para moverse hacia adelante y hacia atrás a lo largo de las líneas, lo que le permite editar la cuarta palabra en cada línea, incluso si el texto en cada línea no es idéntico.Como ejemplo, hago este tipo de trabajo todo el tiempo:
C-u M-!ls / test-dat / pp5 / * fsaRETURN
Esto inserta los contenidos del directorio pp5 en el búfer. Coloco el punto
!
al comienzo del listado:→
→
→
→
Y listo, ha convertido una lista de archivos en el código para leer esa lista. ¡En realidad es mucho más difícil de describir que realmente hacer!
fuente
multiple-cursors
pueden hacer una combinación realmente poderosa.phi-search
puede ser más robusto que navegar con comandos comoM-f (x3)
phi-search
, ¡eso se ve genial!Básicamente tengo dos casos de uso frecuente para
multiple-cursors
:mc/mark-next-like-this
ymc/mark-previous-like-this
para marcar más instancias de ella. Luego presioné inmediatamente C-wpara eliminar cada instancia, y en su lugar escribí una nueva cadena. Lo uso a menudo para cambiar el nombre de una variable en el código.mc/edit-lines
para obtener un cursor por línea. Ahora puede usar comandos de edición regulares que operan en cada uno de estos cursores.El primer caso de uso es particularmente útil con
expand-region
. Me heer/expand-region
unido a C-j, ymc/mark-next-like-this
ymc/mark-previous-like-this
a C->y C-<. Con eso, puedo seleccionar fácilmente el punto de palabra que está activado y marcar la aparición siguiente / anterior de esa palabra al instante.El segundo caso de uso reemplazó la mayoría de los usos de macros para mí. En lugar de grabar una macro y luego aplicarla en varios lugares, colocaría un cursor en cada lugar y simplemente realizaría la operación en todos los lugares a la vez.
fuente
multiple-cursors
recomiende, por ejemplo, paramark-next-like-this
&mark-previous-like-this
?C->
yC-<
paramark-next-like-this
ymark-previous-like-this
.Me gustaría agregar algunos extras que a veces uso
multiple-cursors
.He encontrado que lo siguiente es útil:
iy-go-to-char
A veces, te encuentras necesitando pasar al siguiente
#
o al siguiente,
o algún delimitador específico. Esto es especialmente útil cuando necesita moverse a través de diferentes números de palabras para cada cursor. Proporciona las funcionesiy-go-to-char
yiy-go-to-char-backward
, que puede vincular y usar muy bien.expandir-región
Esto es realmente útil por una razón similar a
iy
: cuando tiene líneas ligeramente diferentes debajo de cada cursor, y tal vez desee seleccionar la cadena entre comillas debajo del punto o similar.cosas personalizadas
Estas son cosas que son solo elisp en mi configuración, pero me parecen útiles. Probablemente no escrito por mí.
Solicitud de entrada
Recibí este de Magnars en respuesta a una solicitud para poner una cadena diferente debajo de cada cursor. El código es simple, pero vincularlo a algo y usarlo para múltiples cursores es una forma práctica de insertar cosas ligeramente diferentes en cada lugar.
Número de incremento en el punto
Esto vino de SO o de emacswiki. No estoy seguro de cuál. Es bastante útil por sí solo, y también cuando se usa en combinación con
mc/insert-numbers
eval-and-replace
Esto es súper poderoso y permite algunos bits 'n' piezas realmente útiles. Evalúa cualquier sexp que esté detrás del cursor e inserta el resultado de evaluarlo.
Combínelo con,
multiple-cursors-numbers
por ejemplo, para insertar potencias de dos, o una serie que0 1 2 0 1 2 0 1 2
atraviesa cada línea o algo. (He hecho ambas cosas de manera útil) O úselas.el
para escribir esas tediosas configuraciones de Java con las cosas predeterminadas. Escribes cada unoCONFIG_VALUE_VARIABLE
, luego lo transformasCONFIG_VALUE_VARIABLE = "configValueVariable"
corriendos-camel-case
.fuente
C-S-b
oM-S-b
para seleccionar hacia atrás hasta que seleccione una parte. También puedes usar la flecha de desplazamiento hacia la izquierda.C->
(presione Mayús si la tecla>
está encima de la tecla de su teclado) hasta que seleccione más de un elemento.* Es importante seleccionar hacia atrás o la primera selección colocará el cursor en la posición incorrecta.
fuente