IntelliJ IDEA sposób edycji wielu linii


113

Widziałem to zrobione w TextMate i zastanawiałem się, czy jest na to sposób w IDEA.

Powiedz, że mam następujący kod:

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

Jaki jest najlepszy sposób dodania „+„ foo ”” do każdej linii? Tryb kolumnowy nie będzie działał, ponieważ wiersze nie są poprawnie wyrównane po prawej stronie ... chyba że istnieje łatwy sposób na wyrównanie tekstu do prawej: P


To jest coś, co muszę robić tak rzadko, że nawet jeśli w moim edytorze był specjalny tryb, nigdy bym nie pamiętał, jak go używać. Po prostu użyłbym schowka, gdyby był tylko dla kilku wierszy (jak powyżej). Jeśli chodzi o setki wierszy, przechodzę do gadżetu znajdź / zamień.
— Michael Burr,

W trybie kolumnowym utwórz 5 kursorów po lewej stronie. Następnie użyj Ctrl-RightArrow, aby przejść w prawo. Wiele kursorów, makr i zamiana wyszukiwania to niesamowite sposoby na zrobienie tego! Nie mogę się zdecydować, który najbardziej mi się podoba.
— Daniel Alexiuc

Jego opcja + Shift + kliknięcie dla Macbooka. Wszystkie skróty Intellij: docs.google.com/document/d/…
— Soham Mehta

Odpowiedzi:


174

Od Idea IntelliJ IDEA 13.1 istnieje możliwość edycji wielu linii.

Posługiwać się:

Alt+ Shift+ Kliknięcie myszą

do wyboru. Więcej o tym nowym ulepszeniu w poście IntelliJ tutaj . Bardzo przydatna funkcja.


1
Dzięki za link. Przypadkowo trafiłem na tę funkcję, ale jakoś nie mogłem dowiedzieć się, którą kombinację klawiszy przypadkowo nacisnąłem :)
— aberrant80

12
Od lutego 2015 r. Alt-Shift-Insert: Tryb wyboru kolumny LUB po prostu Alt-Select. bardzo wydajny i łatwy w użyciu. Nie jestem pewien, dlaczego ludzie wciąż mówią OP, aby używał „wyszukaj i zamień”, kiedy wyraźnie pyta o jednoczesną edycję wiersza - fakt, o który pyta, sugeruje, że jest wystarczająco inteligentny, aby być świadomym wyszukiwania i zastępowania.
— RichieHH

4
W przypadku komputerów Mac jest to Alt + Click.
— Gowtham Gopalakrishnan

5
Na razie wystarczy środkowy przycisk myszy i przeciągnięcie.
— WesternGun

1
Jego opcja + Shift + kliknięcie dla Macbooka. Wszystkie skróty Intellij: docs.google.com/document/d/ ...
— Soham Mehta

114

Używam trybu zaznaczania kolumn ( Cmd+ Shift+ 8na Macu), który pozwala tworzyć wiele kursorów za pomocą Shift+ Uplub Shift+, Downa następnie edytować wszystkie linie razem.

Począwszy od IntelliJ IDEA 14 jest również Clone Caret powyżej / poniżej :

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

(przytrzymaj drugie naciśnięcie klawisza modyfikującego, a następnie naciśnij klawisz strzałki)


5
Przypadkowo nacisnąłem Cmd + Shift + 8 i nie mogłem przez całe życie dowiedzieć się, dlaczego do cholery wszystko było do wyboru w trybie „wielu linii”. Dzięki za skrót polecenia!
— Robin Jonsson,

4
Podwójny <kbd> Ctrl </kbd> nie działa dla mnie na IntelliJ Ultimate 2016.1. Muszę użyć podwójnej opcji <kbc> Option </kbd>, przytrzymać drugie naciśnięcie, a następnie nacisnąć klawisze strzałek.
— Big McLargeHuge

1
@DaveKennedy Masz całkowitą rację, Jet Brains zmienił domyślny skrót.
— Alexander Bogushov

rozwiązanie z podwójnym ctrl jest najlepsze, ponieważ pozwala trzymać ręce na klawiaturze
— Andrejs

Aby zmienić mapowanie klawiszy tak, aby faktycznie pasowało do któregokolwiek z innych używanych edytorów, przejdź do Ustawienia -> Mapa klawiszy i w prawym polu wyszukiwania wyszukaj „Clone Caret”. Kliknij akcję prawym przyciskiem myszy i wybierz „Dodaj skrót klawiaturowy”. Jeśli zapisze, powoduje konflikt, i tak kliknij „OK”. Następnie doda kolejny monit z pytaniem, czy chcesz „Usuń” inne przypisanie (prawdopodobnie tego, co chcesz), czy „Zostaw” (celowe wywołanie dwóch rzeczy jednym skrótem wydaje się dziwne ...) lub „Anuluj” (dlaczego czy
— kliknąłeś

38

Inne podejście oparte tylko na klawiaturze. Możliwe jest (od wersji 13.1) użycie skrótów Alt+ J/ Shift+ Alt+ J( Ctrl+ Gdla OS X) do tworzenia wielu daszków. Alt+J zaznacza następne wystąpienie aktualnie zaznaczonego tekstu i dodaje kolejny daszek.

  1. Wybierz pierwszy średnik

wprowadź opis obrazu tutaj

  1. Następnie naciśnij czterokrotnie Alt+J

wprowadź opis obrazu tutaj

  1. Edytuj, co chcesz

wprowadź opis obrazu tutaj

  1. Naciśnij, Escaby powrócić do pierwszego wiersza.

wprowadź opis obrazu tutaj


5
Boże, żyłem bez tej funkcji przez rok! Wielkie dzięki!
— coffman21

27

Umieść daszek na końcu

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

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

Aby umieścić daszek na końcu rzędów: przesuń daszek do górnego rzędu, sklonuj w dół i kliknij END.

Zmień klawisz skrótu z wieloma daszkami

Aby dodać niestandardową mapę klawiszy, CTRL+ SHIFT+ A, wpisz keymapi kliknij tę z Settingspodtekstem. Wyszukaj Clone Caret Abovei Clone Caret Below.

Zmapowałem mój na ALT+ SHIFT+ ↑ / ↓w systemie Windows i ⌘+ ↑ / ↓na komputerze Mac.

Premia

Spróbuj trzymając kombinacje CTRL, SHIFTi strzałami w celu poprawy siły selekcyjnej.


1
Dzięki za komentarz „END”, świetny do typowych przypisań do zmiennych o różnych długościach.
— Keegan 82

1
To powinna być odpowiedź, ponieważ jest to najbardziej kompletna i konkretna odpowiedź. +1.
— Ariel Mirra

Innym sposobem jest przytrzymanie „alt” i przytrzymanie klawisza „j”, co spowoduje dalsze dodawanie wierszy do zaznaczenia wielu linii.
— gaurav

13

Tryb kolumnowy działa dobrze: najpierw wybierz wszystkie wiersze w trybie kolumnowym, a następnie naciśnij END: każdy kursor przeskoczy na koniec odpowiedniego wiersza.

W systemie Linux ( NIE POTRZEBUJESZ MYSZY ):

  1. ALT+ SHIFT+, INSERTaby wejść w tryb blokowy

    wszedł w tryb edycji kolumny

  2. SHIFT + UPlub SHIFT + DOWNaby wybrać wiele linii

    wprowadź opis obrazu tutaj

  3. END przeskoczyć na koniec każdego wiersza

    wprowadź opis obrazu tutaj

  4. teraz wpisz foo, doda go do każdej linii:

    wprowadź opis obrazu tutaj

  5. Teraz odznacz wszystko za pomocą ESCAPEi wróć do normalnego trybu zaznaczania za pomocą ALT + SHIFT + INSERT.


9

Możesz także dokonać wyboru pionowego bloku kodu, klikając kółkiem myszy i przeciągając :

wprowadź opis obrazu tutaj


8

Wybierz następne wystąpienie:

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

Odznacz wystąpienie:

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

Wybierz wszystkie wystąpienia:

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

więcej informacji: link


Chodzi o (left) Alt + Jto, że musisz najpierw wybrać kod.
— ALIZEYN

7

Po prostu używam makr do tego typu rzeczy. Rozpoczynam nagrywanie makra, robię to raz, a następnie odtwarzam makro w każdej linii, którą chcę zmodyfikować. Zdziwiłbyś się, jak fantazyjną można uzyskać dzięki funkcji nagrywania / odtwarzania makr.


Wyrzucenie makr może być bardzo przydatne w przypadku tego rodzaju zmian. Jak opisujesz, dokładnie to bym zrobił, gdybym wprowadzał te zmiany w edytorze Zeusa.
— jussij

Jeśli wszystkie wiersze są zgrupowane w ten sposób, nagraj makro, aby również przesunąć kursor do następnego wiersza, a następnie wystarczy uruchomić makro w pierwszym wierszu i powtórzyć tyle razy, ile chcesz.
— weiji

Co masz na myśli, że możesz „powtarzać tyle razy, ile chcesz”? Czy istnieje sposób na automatyczne powtórzenie makra?
— pypmannetjies

Edycja-> Makra-> Odtwórz ostatnie makro. Mam to mapowane na F12, ale mam niestandardowe powiązanie klawiszy. Robię makro raz i zaczynam walić w F12 w kółko.
— Chris Kessel

makra są dobre, ale jeśli używam ideavim na intellij, makra nie mogą rozwiązać skrótu do vima
— Amitābha Kwietnia

5

Zajęło mi to trochę czasu, zanim się dowiedziałem, ale na Macu możesz dwukrotnie nacisnąć Option(naciśnij raz, zwolnij, naciśnij ponownie, trzymaj wciśnięty) i użyj klawiszy Up/ Down, aby utworzyć / usunąć daszki, jak chcesz.

Możesz także przytrzymać Shift+ Optioni kliknąć, aby utworzyć / usunąć daszki w określonych punktach.


To jest świetne, ale czy istnieje sposób, aby to zrobić i zaznaczyć całą drogę do końca pliku? W przeciwnym razie muszę przewinąć całość za pomocą strzałki i mamy kilka ogromnych plików.
— Jackie


3

W takim przypadku możesz również po prostu wybrać fragment kodu, w którym chcesz to zrobić, i wykonać na nim zamianę. Zastąp:

";

z:

" + "foo";

Tak więc w przypadku, gdy nie wiedziałeś: Jeśli zaznaczyłeś tekst podczas wykonywania zamiany (Ctrl + R lub Cmd + R), zostanie to zastosowane tylko do zaznaczonego fragmentu tekstu.





1

W przypadku nowszych wersji użyj: Alt+ Shift+Insert


1
działa bez zarzutu! dzięki @Meysam
— gaurav

Innym sposobem jest przytrzymanie „alt” i przytrzymanie klawisza „j”, co spowoduje dalsze dodawanie wierszy do zaznaczenia wielu linii.
— gaurav

0

Zwykle używam (NetBeans, ale uważam, że jest prosty w użyciu w każdym IDE) find&replace.

Po prostu znajdź ;\ni zamień go na, a + $foo;\nnastępnie nie stosujesz się do WSZYSTKICH linii, ale umieszczasz kursor w pierwszej linii i po prostu wciskasz przycisk "zamień" (przypuszczam, że zależy od twojego IDE) 7 razy, aby zmienić 7 linii w mgnieniu oka. Łatwe i proste i powinno być zrobione z najbardziej podstawowym i najbardziej zaawansowanym IDE, jakie możesz znaleźć.

EDYCJA: W IntelliJ (nie wiem, czy to działa również w innych IDE) możesz użyć wyszukiwania i zamiany wyrażenia regularnego tylko na zaznaczenie, aby faktycznie użyć opcji „zamień wszystko”


Często zdarzają się przypadki, w których nie można zastosować tej metody, kiedy linie są zupełnie inne lub coś w tym rodzaju, ale myślę, że niewiele można z tym zrobić, nawet stosując zaawansowane metody.
— Srneczek

Więc dlaczego -1? Odpowiedziałem na zadane przez niego pytanie. -1 pytanie, jeśli uważasz, że to głupie, a nie poprawna odpowiedź. Zaakceptowana odpowiedź z makro jest moim zdaniem wolniejszą metodą, szczerze mówiąc.
— Srneczek


0

Wszystkie powyższe odpowiedzi są świetne, ale jeśli chcesz edytować multilinię na końcu linii, naciśnij klawisz „End”, gdy aktywny jest wybór multilinii.

Sekwencja poleceń dla komputerów Mac będzie wyglądać następująco:

shift option click # wybierz zestaw linii

command right arrow # przejdź do końca linii

Spowoduje to wybranie multilinii na końcu linii i możesz ją edytować zgodnie z wymaganiami

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.