IntelliJ IDEA спосіб редагування декількох рядків


113

Я бачив це в TextMate і мені було цікаво, чи є спосіб це зробити в IDEA.

Скажіть, у мене є такий код:

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

Який найкращий спосіб додати "+" foo "'до кожного рядка? Режим стовпця не буде працювати, оскільки рядки неправильно вирівняні з правого боку ... якщо тільки не існує простого способу правильного виправдання тексту: P


Це те, що мені потрібно робити так нечасто, що навіть якби в моєму редакторі був спеціальний режим, я ніколи не пам’ятаю, як ним користуватися. Я б просто скористався буфером обміну, якби він був лише для кількох рядків (як вище). Якщо це сотні рядків, саме тоді я перейду до гаджета пошуку / заміни.
Майкл Берр

У режимі стовпців створіть 5 курсорів зліва. Потім використовуйте Ctrl-RightArrow, щоб перейти вправо. Кілька курсорів, макросів і пошуку-заміни - це дивовижні способи зробити це! Я не можу вирішити, який мені найбільше подобається.
Даніель Алексюк

Його варіант + Shift + клацніть для Macbook. Усі ярлики Intellij: docs.google.com/document/d/…
Сохам Мехта

Відповіді:


174

Оскільки Idea IntelliJ IDEA 13.1 є можливість редагувати кілька рядків.

Використання:

Alt+ Shift+ Клацання миші

для відбору. Докладніше про це нове вдосконалення в блозі поштов IntelliJ тут . Дуже корисна функція.


1
Дякуємо за посилання. Я випадково потрапив на цю функцію, але я якось не міг зрозуміти, яку комбінацію клавіш я випадково натиснув :)
aberrant80

12
Станом на лютий 2015 Alt-Shift-Insert: Режим вибору стовпців АБО просто Alt-Select. дуже потужний і простий у використанні. Я не впевнений, чому люди продовжують говорити ОП використовувати "пошук і заміна", коли він чітко запитує про одночасне редагування рядків - той факт, що він запитує, говорить про те, що він досить розумний, щоб бути в курсі пошуку та заміни.
RichieHH

4
Для Mac - його Alt + Click.
Gowtham Gopalakrishnan

5
А поки просто середня кнопка миші + перетягування.
WesternGun

1
Його варіант + Shift + клацніть для Macbook. Усі ярлики Intellij: docs.google.com/document/d/…
Сохам Мехта

114

Я використовую режим вибору стовпців ( Cmd+ Shift+ 8на Mac), який дозволяє створювати кілька курсорів через Shift+ Upабо Shift+, Downа потім редагувати всі рядки разом.

Починаючи з IntelliJ IDEA 14, є також клони клонів вгорі / внизу :

  • Вікна Ctrl, Ctrl+ Up/Down
  • MacOS: Option, Option+ Up/Down

(утримуйте друге натискання клавіші модифікатора, потім натисніть клавішу зі стрілкою)


5
Я випадково натиснув Cmd + Shift + 8 і не міг за все життя зрозуміти, чому чорт все вибирає "багато рядків". Дякуємо за ярлик команди!
Робін Джонсон

4
Подвійний <kbd> Ctrl </kbd> не працює для мене в IntelliJ Ultimate 2016.1. Мені потрібно скористатися подвійним <kbc> Варіантом </kbd>, утримуючи друге натискання, а потім натискати клавіші зі стрілками.
Big McLargeHuge

1
@DaveKennedy Ви абсолютно праві, Jet Brains змінив ярлик за замовчуванням.
Олександр Богушов

рішення подвійного ctrl найкраще, оскільки воно дозволяє тримати руки на клавіатурі
Андрейс

Щоб змінити відображення клавіш, щоб насправді відповідати будь-яким іншим вашим редакторам, перейдіть у меню Налаштування -> Клавіатура та у правій панелі пошуку знайдіть "Клонірувати клопотання". Клацніть правою кнопкою миші дію та виберіть "Додати ярлик клавіатури". Якщо це збереже, це спричинить конфлікт, натисніть "Добре" все одно. Тоді він додасть ще одне підказку із запитанням, чи бажаєте ви "Видалити" інше завдання (можливо, те, що ви хочете), або "Залиште" його (навмисне запускаючи дві речі одним ярликом здається дивним ...) або "Скасувати" (чому ви раніше натискали ОК?)
ArtOfWarfare

38

Ще один підхід лише для клавіатури. Можливо (починаючи з версії 13.1) використовувати ярлики Alt+ J/ Shift+ Alt+ J( Ctrl+ Gдля OS X) для створення декількох карток. Alt+ Jвибирає наступне виникнення вибраного тексту та додає ще одну карету.

  1. Виберіть перший крапку з комою

введіть тут опис зображення

  1. Потім натисніть Alt+ Jчотири рази

введіть тут опис зображення

  1. Відредагуйте те, що ви хочете

введіть тут опис зображення

  1. Натисніть, Escщоб повернутися до першого рядка.

введіть тут опис зображення


5
Боже, я жив без цієї особливості як рік! Дуже дякую!
coffman21

27

Покладіть каре в кінці

Windows: CTRL + CTRL(утримуйте) +↑ / ↓

Mac: option + option(утримуйте) + ↑ / ↓.

Щоб розмістити каре в кінці рядків: перемістіть карету до верхнього ряду, клонуйте вниз і натисніть кнопку END.

Змініть клавіш швидкої клавіші

Щоб додати спеціальну ключову карту, CTRL+ SHIFT+ A, введіть keymapта натисніть на одну із Settingsпідтекстом. Шукати Clone Caret Aboveі Clone Caret Below.

Я відобразив шахту до ALT+ SHIFT+ ↑ / ↓у Windows та + ↑ / ↓на Mac.

Бонус

Спробуйте утримують комбінації CTRL, SHIFTі стрілки для підвищення потужності відбору.


1
Дякуємо за коментар "END", чудово підходить для загальних призначень змінних різної довжини.
Кіган 82

1
Це має бути відповіддю, оскільки це найповніша та точна відповідь. +1.
Аріель Мірра

інший спосіб - утримувати "alt" і продовжувати натискати "j", це дозволить додавати рядки до вибору багато рядків.
гаурав

13

Режим стовпця працює чудово: спочатку виберіть усі рядки в режимі стовпців, потім натисніть кнопку END: кожен курсор перейде до кінця відповідного рядка.

У Linux ( НЕ ПОТРІБНО МУЗИ ):

  1. ALT + SHIFT + INSERTдля входу в режим блоку

    введений режим редагування стовпців

  2. SHIFT + UP або SHIFT + DOWN для вибору декількох рядків

    введіть тут опис зображення

  3. END щоб перейти до кінця кожного рядка

    введіть тут опис зображення

  4. тепер введіть foo , він додасть його до кожного рядка:

    введіть тут опис зображення

  5. Тепер зніміть позначку ESCAPEі переключіться на звичайний режим вибору за допомогою ALT + SHIFT + INSERT.


9

Ви також можете зробити вибір вертикального блоку коду, натиснувши колесо миші та перетягнувши :

введіть тут опис зображення


8

Виберіть Наступне виникнення:

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

Скасувати вибір:

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

Виберіть Усі випадки:

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

для довідки: посилання


Справа в (left) Alt + Jтому, що ви повинні спершу вибрати код.
АЛІЗЕЙН

7

Я просто використовую макроси для подібних речей. Я починаю записувати макрос, роблю це один раз, потім відтворюю макрос у кожному рядку, який хочу змінити. Ви були б вражені тим, як ви можете отримати фантазію за допомогою функції макро запису / відтворення.


Викинути макроси може бути дуже зручно для таких змін. Як ви вважаєте, це саме те, що я робив би, якби робив ці зміни всередині редактора Zeus.
jussij

Якщо рядки всі згруповані так, то запишіть макрос, щоб також перемістити курсор до наступного рядка, тоді вам просто потрібно почати запускати макрос у першому рядку і повторювати скільки завгодно разів.
weiji

Як ти означає, що ти можеш "повторювати скільки завгодно разів"? Чи є спосіб автоматично повторити макрос?
pypmannetjies

Правка-> Макроси-> Відтворення останнього макроса. У мене це відображено у F12, але у мене є нестандартне прив'язування ключа. Я роблю макрос один раз і починаю бити F12 знову і знову.
Кріс Кессель

макроси - це добре, але якщо я використовую ideavim на intellij, макроси не можуть вирішити ярлик vim
Amitābha

5

Це знадобило мені деякий час, але на Mac ви можете двічі натиснути Option(натисніть його один раз, відпустіть, натисніть його ще раз, натисніть) та скористайтесь Up/Down клавіші для створення / видалення піклувань за вашим бажанням.

Ви також можете утримувати Shift+ Optionта клацнути, щоб створити / видалити піклування у певних точках.


Це чудово, але чи є спосіб це зробити і вибрати весь шлях до кінця файлу? Інакше мені доведеться прокручувати всю річ за допомогою стрілки, і у нас є масивні файли.
Джекі


3

У цьому випадку ви також можете просто вибрати фрагмент коду, в якому ви хочете це зробити, і виконати його заміну. Замінити:

";

на:

" + "foo";

Тож у випадку, якщо ви не знали: якщо у вас вибрано текст під час заміни (Ctrl + R або Cmd + R), він застосовуватиметься лише до обраного фрагмента тексту.


2

Утримуйте ALT та використовуйте мишу для клацання та перетягування




1

Для новіших версій використовуйте: Alt+ Shift+Insert


1
працює бездоганно! дякую @Meysam
gaurav

інший спосіб - утримувати "alt" і продовжувати натискати "j", це дозволить додавати рядки до вибору багато рядків.
gaurav

0

Що я зазвичай використовую (NetBeans, але я вважаю, що його просто використовувати в будь-якому IDE) find&replace.

Ви просто знайдете ;\nі заміните його, + $foo;\nтоді ви не застосовуєтесь до ВСІХ рядків, але ви кладете курсор на перший рядок, і ви просто натискаєте кнопку "Замінити" (залежить від вашого IDE, я думаю) 7 разів, щоб змінити 7 рядків за один раз. Легко і просто, і це потрібно робити з найпростішими та найдосконалішими IDE, які ви можете знайти.

EDIT: В IntelliJ (не знаю, чи працює він і в інших IDE), ви можете використовувати пошук і замінити regexp лише для вибору, щоб ви могли фактично використовувати "замінити всіх"


Звичайно, є випадки, коли ви не можете застосувати цей метод, коли рядки зовсім інші або щось подібне, але я думаю, що ви не можете зробити з цією ситуацією навіть за допомогою прогресивних методів.
Srneczek

То чому -1? Я відповів на запитання, яке він задав. -1 питання, якщо ви вважаєте його дурною, а не правильною відповіддю. Прийнята відповідь з макросом, на мою думку, більш повільний метод, якщо бути чесним.
Srneczek


0

Відповідь вище є чудовою, але якщо ви хочете редагувати багаторядкові лінії в кінці рядків, тоді вам потрібно натиснути клавішу "Кінець", коли активний вибір ряду.

Для Mac Послідовність команд буде:

shift option click # виберіть набір рядків

command right arrow # перейти до кінця рядків

Це зробить багаторядковий вибір у кінці рядка, і ви можете редагувати його за потребою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.