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.