Sometimes it is useful to edit multiple places in a file at once, which can save you precious time and increase your productivity. IntelliJ IDEA supports having multiple cursors at once, meaning you can type and edit at multiple locations at the same time.
This feature is the oldest one, which was available even before the introduction of the proper multiple cursors support. It allows you to select a block of text and then start typing with multiple cursors starting on each selected line at the beginning of the selected block.
You can then move the cursor, as usual, using the arrow keys and even commands like Home or End. Note that after I used End key (go to the end of the line), the cursor was properly placed at the end of each line even if the cursors were no longer vertically aligned.
This feature can be toggled using
Edit → Column selection. The shortcut is:
- Alt + Shift + Ins on Linux or Windows
- ⇧ + ⌘ + 8 on Mac.
You can exit column selection mode by using Esc key.
Column selection mode can be also used with keyboard only. When in column selection mode and holding Shift, you can extend cursor to the line above/bellow by using ↑ or ↓ keys.
The same functionality of creating new cursors as with Shift + arrows can be achieved by
Clone caret above and
Clone caret bellow commands.
The commands are issued by pressing Ctrl (or ⌥ on Mac), then pressing it again and not releasing. While still holding Ctrl, you can press ↑ and ↓ arrows to clone cursor to the line above or bellow.
While the column selection mode is useful, it is limited to cases where places you need to edit are vertically aligned, which may not usually be the case. In other situations, you need to stick to proper multiple cursor support. This is possible since IDEA version 13.1.
When holding Alt + Shift (or ⌥ + ⇧ on Mac), clicking on a location creates a new cursor on that location in addition to all the already existing cursors. Unlike column selection, these cursors can be anywhere and don't need to be vertically aligned. Pressing Esc will exit multiple cursors mode and will leave you with your first original single cursor.
As of IntelliJ IDEA 14.1, you can not only insert multiple carets, but you can also select multiple parts of the text and then start typing. This has several advantages. You can replace multiple blocks of text of various lengths by new ones. Also, when copying/cutting the selected blocks into the clipboard, you can later paste the results into a new place when still using multiple cursors and each copied block will be pasted to the corresponding cursor.
This selection can be achieved by holding:
- Alt + Shift on Windows or Linux
- ⌥ + ⇧ on Mac
Then select the blocks by the mouse as usual.
Another way of selecting multiple blocks of text with multiple cursors is
Select All Occurrences command, which selects all the other occurrences in the current file of the already selected text. In case no text is selected, the closest word to the current cursor is selected.
This command can be triggered by
- Shift + Ctrl + Alt + J on Linux or Windows
- ⌃ + ⌘ + G on Mac.
In some cases, you may want more fine-grained control instead of selecting ALL the occurrences.
When you have a part of text selected, you can add the next occurrence of this string to your selection.
The shortcut is:
- Alt + J On Linux or Windows
- ⌃ + G on Mac.
Removing the last occurrence from your selection is the same shortcut with Shift added:
- Shift + Alt + J On Linux and Windowss
- ⇧ + ⌃ + G on Mac.
In case you're wondering how I am displaying keyboard shortcuts of the invoked commands on the screen on my gifs - it uses Presentation Assistant Plugin, which is very useful during presentations and webinars.