IntelliJ IDEA forma de editar varias líneas


113

He visto esto en TextMate y me preguntaba si hay una manera de hacerlo en IDEA.

Digamos que tengo el siguiente código:

 leaseLabel = "Lease";
 leaseLabelPlural = "Leases";
 portfolioLabel = "Portfolio";
 portfolioLabelPlural = "Portfolios";
 buildingLabel = "Building";

¿Cuál es la mejor manera de agregar '+ "foo"' a cada línea? El modo de columna no funcionará ya que las líneas no están alineadas correctamente en el lado derecho ... a menos que haya una manera fácil de justificar el texto a la derecha: P


Esto es algo que necesito hacer con tan poca frecuencia que incluso si hubiera un modo especial en mi editor, nunca recordaría cómo usarlo. Solo usaría el portapapeles si fuera solo por unas pocas líneas (como arriba). Si es para cientos de líneas, entonces me movería al gadget de buscar / reemplazar.
Michael Burr

En el modo de columna, cree 5 cursores en el extremo izquierdo. Luego use Ctrl-RightArrow para ir a la derecha. ¡Varios cursores, macros y búsqueda-reemplazo son formas increíbles de hacer esto! No puedo decidir cuál me gusta más.
Daniel Alexiuc

Su Opción + Mayús + Clic para Macbook. Todos los atajos de Intellij: docs.google.com/document/d/…
Soham Mehta

Respuestas:


174

Desde Idea IntelliJ IDEA 13.1 existe la posibilidad de editar varias líneas.

Utilizar:

Alt+ Shift+ Clic del mouse

para la selección. Más sobre esta nueva mejora en la publicación de blog de IntelliJ aquí . Característica muy útil.


1
Gracias por el enlace. Accidentalmente toqué esta función, pero de alguna manera no pude averiguar qué combinación de teclas presioné accidentalmente :)
aberrant80

12
A partir de febrero de 2015 Alt-Shift-Insert: modo de selección de columna O simplemente Alt-Seleccionar. muy potente y fácil de usar. No estoy seguro de por qué la gente sigue diciéndole al OP que use "buscar y reemplazar" cuando claramente pregunta sobre la edición de líneas simultáneas; el hecho de que pregunte eso sugiere que es lo suficientemente inteligente como para estar al tanto de la búsqueda y el reemplazo.
RichieHH

4
Para Mac, es Alt + Clic.
Gowtham Gopalakrishnan

5
Y por ahora, basta con el botón central del mouse + arrastrar.
WesternGun

1
Su Opción + Mayús + Clic para Macbook. Todos los atajos de Intellij: docs.google.com/document/d/…
Soham Mehta

114

Utilizo el modo de selección de columna ( Cmd+ Shift+ 8en Mac) que permite crear varios cursores a través de Shift+ Upo Shift+ y Downluego editar todas las líneas juntas.

A partir de IntelliJ IDEA 14, también hay Clone Caret Arriba / Abajo :

  • Ventanas: Ctrl, Ctrl+ Up/Down
  • MacOS: Option, Option+ Up/Down

(mantenga presionada la tecla modificadora por segunda vez, luego presione la tecla de flecha)


5
Accidentalmente había presionado Cmd + Shift + 8 y no pude por mi vida averiguar por qué diablos todo era seleccionable en "múltiples líneas". ¡Gracias por el atajo de comando!
Robin Jonsson

4
Double <kbd> Ctrl </kbd> no me funciona en IntelliJ Ultimate 2016.1. Tengo que usar doble <kbc> Option </kbd>, mantener presionada la segunda vez y luego presionar las teclas de flecha.
Big McLargeHuge

1
@DaveKennedy Tiene toda la razón, Jet Brains ha cambiado el acceso directo predeterminado.
Alexander Bogushov

La solución de doble ctrl es la mejor, ya que permite mantener las manos en el teclado
Andrejs

Para cambiar la asignación de teclas para que coincida con cualquiera de los otros editores que usa, vaya a Configuración -> Mapa de teclas, y en el cuadro de búsqueda de la derecha busque "Clone Caret". Haz clic derecho en la acción y elige "Agregar atajo de teclado". Si se guarda, causa un conflicto, haga clic en "Aceptar" de todos modos. Luego agregará otro mensaje que le preguntará si desea "Eliminar" la otra asignación (probablemente lo que desea), o "Dejarla" (activar intencionalmente dos cosas con un atajo parece extraño ...) o "Cancelar" (por qué ¿
Hiciste

38

Otro enfoque de solo teclado. Es posible (desde la versión 13.1) usar Alt+ J/ Shift+ Alt+ J( Ctrl+ Gpara OS X) atajos para crear múltiples signos de intercalación. Alt+ Jselecciona la siguiente aparición del texto seleccionado actualmente y agrega otro signo de intercalación.

  1. Seleccione el primer punto y coma

ingrese la descripción de la imagen aquí

  1. Luego presione Alt+ Jcuatro veces

ingrese la descripción de la imagen aquí

  1. Edita lo que quieras

ingrese la descripción de la imagen aquí

  1. Presione Escpara regresar a la primera línea.

ingrese la descripción de la imagen aquí


5
¡Dios, viví sin esta función durante un año! ¡Muchas gracias!
coffman21

27

Coloque el símbolo de intercalación al final

Windows: CTRL + CTRL(Sostener) +↑ / ↓

Mac: option + option(Sostener) + ↑ / ↓.

Para colocar el cursor al final de las filas: mueva el cursor a la fila superior, clone hacia abajo y haga clic END.

Cambiar tecla de acceso rápido de múltiples signos

Para agregar un mapa de teclas personalizado, CTRL+ SHIFT+ A, escriba keymapy haga clic en el que tiene Settingscomo subtexto. Busque Clone Caret Abovey Clone Caret Below.

Mapeé el mío a ALT+ SHIFT+ ↑ / ↓en Windows y + ↑ / ↓en Mac.

Prima

Trate de combinaciones que llevan a cabo CTRL, SHIFTy flechas para mejorar la potencia de la selección.


1
Gracias por el comentario 'FIN', excelente para asignaciones comunes en variables con diferentes longitudes.
Keegan 82

1
Esta debería ser la respuesta, ya que es la respuesta más completa y precisa. +1.
Ariel Mirra

otra forma es mantener presionada la tecla "alt" y seguir presionando "j", seguirá agregando líneas a la selección de varias líneas.
gaurav

13

El modo de columna funciona bien: primero seleccione todas las líneas en el modo de columna, luego presione FIN: cada cursor saltará al final de la línea respectiva.

En Linux ( NO SE NECESITA RATÓN ):

  1. ALT+ SHIFT+ INSERTpara entrar en modo bloque

    ingresó al modo de edición de columna

  2. SHIFT + UPo SHIFT + DOWNpara seleccionar varias líneas

    ingrese la descripción de la imagen aquí

  3. END para saltar al final de cada línea

    ingrese la descripción de la imagen aquí

  4. ahora escriba foo, lo agregará a cada línea:

    ingrese la descripción de la imagen aquí

  5. Ahora anule la selección de todo con ESCAPEy vuelva al modo de selección normal con ALT + SHIFT + INSERT.


9

También puede hacer una selección de bloque de código vertical haciendo clic en la rueda del mouse y arrastrando :

ingrese la descripción de la imagen aquí


8

Seleccione Siguiente ocurrencia:

      Alt+J on Windows, Ctrl-G on Mac OS X

Deseleccionar Ocurrencia:

      Alt+Shift+J on Windows, Ctrl-Shift-G on Mac OS X

Seleccionar todas las apariciones:

      Ctrl+Alt+Shift+J on Windows, Ctrl-Cmd-G on Mac OS X

para más referencia: enlace


El punto (left) Alt + Jes que primero debes seleccionar el código.
ALIZEYN

7

Solo uso las macros para este tipo de cosas. Empiezo a grabar la macro, lo hago una vez y luego reproduzco la macro en cada línea que quiero modificar. Se sorprenderá de lo elegante que puede ser con la función de grabación / reproducción de macros.


Las macros desechables pueden ser muy útiles para realizar este tipo de cambios. Cómo lo describe es exactamente lo que haría si estuviera haciendo estos cambios dentro del editor de Zeus.
jussij

Si las líneas están todas agrupadas de esa manera, grabe la macro para mover también el cursor a la siguiente línea, entonces solo tiene que comenzar a ejecutar la macro en la primera línea y repetir tantas veces como desee.
Weiji

¿Cómo quiere decir que puede "repetir tantas veces como quiera"? ¿Existe alguna forma de repetir automáticamente una macro?
pypmannetjies

Editar-> Macros-> Reproducir la última macro. Lo tengo asignado a F12, pero tengo una vinculación de teclas no estándar. Hago la macro una vez y empiezo a golpear F12 una y otra vez.
Chris Kessel

las macros son buenas, pero si uso ideavim en intellij, las macros no pueden resolver el atajo de vim
Amitābha

5

Me tomó un tiempo averiguarlo, pero en una Mac puedes Optionpresionar dos veces (presionarlo una vez, soltarlo, presionarlo nuevamente, mantenerlo presionado) y usar las teclas Up/ Downpara crear / eliminar signos de intercalación como desees.

También puede mantener presionado Shift+ Optiony hacer clic para crear / eliminar signos de intercalación en puntos específicos.


Esto es genial, pero ¿hay alguna manera de hacer esto y seleccionar todo el camino hasta el final del archivo? De lo contrario, tengo que desplazarme por todo el contenido usando la flecha y tenemos algunos archivos masivos.
Jackie


3

En este caso, también puede seleccionar el fragmento de código en el que desea hacer esto y realizar un reemplazo en él. Reemplazar:

";

con:

" + "foo";

Entonces, en caso de que no lo supiera: si ha seleccionado texto mientras realiza un reemplazo (Ctrl + R o Cmd + R), solo se aplicará al fragmento de texto seleccionado.


2

Mantenga presionada la tecla ALT y use el mouse para hacer clic y arrastrar




1

Para versiones más recientes, use: Alt+ Shift+Insert


1
funciona perfectamente ! gracias @Meysam
Gaurav

otra forma es mantener presionada la tecla "alt" y seguir presionando "j", seguirá agregando líneas a la selección de varias líneas.
gaurav

0

Lo que suelo usar (NetBeans, pero creo que es fácil de usar en cualquier IDE) es find&replace.

Simplemente busque ;\ny reemplace con + $foo;\nentonces no se aplica a TODAS las líneas, pero coloca el cursor en la primera línea y simplemente presiona el botón "reemplazar" (depende de su IDE, supongo) 7 veces para cambiar 7 líneas en poco tiempo. Fácil y simple, y debe hacerse con el IDE más básico y avanzado que pueda encontrar.

EDITAR: En IntelliJ (no sé si también funciona en otros IDE) puede usar su búsqueda de expresiones regulares y reemplazar solo a la selección para que pueda usar "reemplazar todo"


Por supuesto, hay casos en los que no puede aplicar este método, cuando las líneas son totalmente diferentes o algo así, pero creo que no hay mucho que pueda hacer al respecto, incluso con métodos avanzados.
Srneczek

Entonces, ¿por qué -1? Respondí a la pregunta que me hizo. -1 la pregunta si crees que es estúpida, no la respuesta correcta. La respuesta aceptada con macro es, en mi opinión, un método más lento para ser honesto.
Srneczek


0

Todas las respuestas anteriores son geniales, pero si desea editar varias líneas al final de las líneas, debe presionar la tecla "Fin" mientras la selección de varias líneas está activa.

Para Mac, la secuencia de comandos será:

shift option click # seleccione un conjunto de líneas

command right arrow # ir al final de las líneas

Esto hará una selección de líneas múltiples al final de la línea y puede editarla según sea necesario

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.