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

hdx
fuente
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.

shobull
fuente
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)

Alexander Bogushov
fuente
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í

Valle
fuente
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.

Gibolt
fuente
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.

Andrey Tyukin
fuente
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í

DimaSan
fuente
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

Snehal Parmar
fuente
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.

Chris Kessel
fuente
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.

Rafael Eyng
fuente
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
4

ALT + CTRL + MAYÚS + CLIC en linux

metanerd
fuente
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.

Tom van Zummeren
fuente
2

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

Davijr
fuente
1

Para Mac:

Option + Shift + Click & Drag
Erick Aky
fuente
1

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

Meysam Sadeghi
fuente
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"

Srneczek
fuente
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

Para los usuarios de mac es: ALT + SHIFT + Click

K-Marouane
fuente
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

sanjaykumar81
fuente