IntelliJ IDEA способ редактирования нескольких строк

113

Я видел это в TextMate, и мне было интересно, есть ли способ сделать это в IDEA.

Скажем, у меня есть следующий код:

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

Как лучше всего добавлять '+ "foo"' к каждой строке? Режим столбца не будет работать, поскольку линии неправильно выровнены с правой стороны ... если нет простого способа выровнять текст по правому краю: P

HDX
источник
Это то, что мне нужно делать так редко, что даже если бы в моем редакторе был специальный режим, я бы никогда не вспомнил, как его использовать. Я бы просто использовал буфер обмена, если бы он был только для нескольких строк (как указано выше). Если это для сотен строк, тогда я бы перешел на гаджет поиска / замены.
Майкл Берр,
В режиме столбца создайте 5 курсоров слева. Затем используйте Ctrl-RightArrow, чтобы перейти вправо. Множественные курсоры, макросы и поиск-замена - все это отличные способы сделать это! Я не могу решить, какой из них мне больше нравится.
Daniel Alexiuc
1
Его Option + Shift + Click для Macbook. Все ярлыки Intellij: docs.google.com/document/d/…
Mehta,

Ответы:

175

Начиная с Idea IntelliJ IDEA 13.1 появилась возможность редактировать несколько строк.

Использование:

Alt+ Shift+ Щелчок мышью

для выбора. Подробнее об этом новом улучшении в блоге IntelliJ здесь . Очень полезная функция.

шобуль
источник
1
Спасибо за ссылку. Я случайно наткнулся на эту функцию, но почему-то не мог понять, какую комбинацию клавиш я случайно нажал :)
aberrant80
12
По состоянию на февраль 2015 г. Alt-Shift-Insert: режим выбора столбца ИЛИ просто Alt-Select. очень мощный и простой в использовании. Я не уверен, почему люди продолжают говорить OP использовать «поиск и замену», когда он явно спрашивает об одновременном редактировании строк - факт, который он спрашивает, говорит о том, что он достаточно умен, чтобы знать о поиске и замене.
RichieHH
4
Для Mac это Alt + Click.
Гаутхэм Гопалакришнан
5
А пока просто средняя кнопка мыши + перетаскивание.
WesternGun
1
Его Option + Shift + Click для Macbook. Все ярлыки Intellij: docs.google.com/document/d/…
Mehta,
114

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

Начиная с IntelliJ IDEA 14 есть также Clone Caret Above / below :

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

(удерживайте второе нажатие клавиши-модификатора, затем нажмите клавишу со стрелкой)

Александр Богушов
источник
5
Я случайно нажал Cmd + Shift + 8 и, хоть убей, не мог понять, почему, черт возьми, все можно выбрать "многострочно". Спасибо за сочетание клавиш!
Робин Йонссон
4
Двойной <kbd> Ctrl </kbd> у меня не работает в IntelliJ Ultimate 2016.1. Мне нужно использовать двойной <kbc> Option </kbd>, удерживая второе нажатие, затем нажимать клавиши со стрелками.
Big McLargeHuge
1
@DaveKennedy Вы абсолютно правы, Jet Brains изменил ярлык по умолчанию.
Александр Богушов
решение с двойным ctrl лучше всего, поскольку оно позволяет мне держать руку на клавиатуре
Андрейс
Чтобы изменить сопоставление клавиш, чтобы оно соответствовало любому из ваших других редакторов, которые вы используете, перейдите в «Настройки» -> «Раскладка» и в правом поле поиска найдите «Клонировать каретку». Щелкните действие правой кнопкой мыши и выберите «Добавить сочетание клавиш». Если сохранение вызывает конфликт, все равно нажмите «ОК». Затем он добавит еще один запрос, спрашивающий, хотите ли вы «Удалить» другое назначение (возможно, то, что вы хотите), или «Оставить» его (намеренный запуск двух вещей одним ярлыком кажется странным ...) или «Отменить» (почему вы тогда раньше
нажимали
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
Спасибо за комментарий «КОНЕЦ», отлично подходит для общих присваиваний переменным разной длины.
Киган 82
1
Это должен быть ответ, поскольку это наиболее полный и точный ответ. +1.
Ариэль Мирра,
другой способ - удерживать «alt» и продолжать нажимать «j», он продолжит добавлять строки к многострочному выделению.
Gaurav
14

Режим столбца работает нормально: сначала выберите все строки в режиме столбца, затем нажмите 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том, что сначала нужно выбрать код.
ALIZEYN
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

Для Mac:

Option + Shift + Click & Drag
Эрик Эйки
источник
1

Для более новых версий используйте: Alt+ Shift+Insert

Мейсам Садеги
источник
1
работает безотказно! спасибо @Meysam
Gaurav
другой способ - удерживать «alt» и продолжать нажимать «j», он продолжит добавлять строки к многострочному выделению.
Gaurav
0

Я обычно использую (NetBeans, но считаю, что его просто использовать в любой среде IDE): find&replace .

Вы просто найдете ;\nи замените его на+ $foo;\n тогда вы не применяете ко ВСЕМ строкам, но вы помещаете курсор в первую строку и просто нажимаете кнопку «заменить» (полагаю, в зависимости от вашей IDE) 7 раз, чтобы изменить 7 строк в кратчайшие сроки. Легко и просто, и это должно быть сделано с помощью самой базовой и самой продвинутой IDE, которую вы можете найти.

РЕДАКТИРОВАТЬ: В IntelliJ (не знаю, работает ли он и в других IDE) вы можете использовать поиск по регулярному выражению и замену только для выбора, чтобы вы могли фактически использовать «заменить все»

Срнечек
источник
Часто бывают случаи, когда вы не можете применить этот метод, когда строки совершенно разные или что-то в этом роде, но я думаю, что вы мало что можете сделать в этой ситуации даже с помощью продвинутых методов.
Srneczek
Так почему -1? Я ответил на его вопрос. -1 вопрос, если ты считаешь его глупым, не правильный ответ. Принятый ответ с макросом, на мой взгляд, более медленный метод, если честно.
Srneczek
0

Для пользователей Mac это: ALT + SHIFT + Click

К-Маруан
источник
0

Все приведенные выше ответы хороши, но если вы хотите многострочное редактирование в конце строк, вам нужно нажать клавишу «Конец», когда ваш многострочный выбор активен.

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

shift option click # выбираем набор строк

command right arrow # перейти в конец строк

Это сделает многострочный выбор в конце строки, и вы можете отредактировать его по мере необходимости.

sanjaykumar81
источник