Multiple cursors and selection ranges
When typing, copying, or pasting in PhpStorm editor, you can toggle multiple cursors so that your actions apply in several places simultaneously. Advanced editor actions, such as code completion and live templates are supported as well and will apply to each caret.
The number of carets that you can add in a file is limited to 1000. If you want to increase that limit, open the custom JVM options and add the following line: -Deditor.max.caret.count=<NEW_LIMIT>
.
The most recently added caret is considered primary. Highlighting of the current editor line, completion lists, and other visual assistance features will apply to the primary caret. This caret will also remain when you turn off multiple carets.
Add and remove carets
There are two options of where on the code line the carets can be added:
To existing characters | Using virtual spaces |
---|---|
If there is no character, tab, or whitespace at the position where you want to add a new caret, the new caret will be added to the last character position in the target line. | This way you can add new carets anywhere after the last character in any line. As soon as you start typing at a position beyond the end of the line, the necessary number of spaces will be added between the end of the line and the beginning of your input. You can enable virtual spaces by selecting the Allow placement of caret after end of line checkbox on the Editor | General page of the IDE settings Ctrl+Alt+S. Alternatively, virtual spaces are also enabled in the column selection mode. |
Add or remove carets at selected locations using mouse
Alt+Shift+Click at the target location to add another caret.
Alt+Shift+Click at one of the multiple carets to remove it. The last caret will not be removed.
Add carets above or below the current caret using keyboard
Press Ctrl twice, and then without releasing it, press up or down arrow keys.
If virtual spaces are enabled, new carets will be added exactly above or below the current caret position. Otherwise, in lines, which are shorter than the current offset, carets will be added at line ends.
Enable the column selection mode (press Alt+Shift+Insert) and then press Shift+Up/Shift+Down.
Press Ctrl+Shift+A, type Clone caret, and choose the desired action from the suggestion list:
Note that by default these actions are not associated with keyboard shortcuts. You can assign your custom shortcuts to these actions as described in configuring keyboard shortcuts.
Add carets at each line of the current document
Press Ctrl+Home to place the caret at the beginning of the first line, enable the column selection mode (press Alt+Shift+Insert), and then press Ctrl+Shift+End.
Add carets to the end of each line in the selected block
Select a code block in the editor and then press Alt+Shift+G.
Remove multiple carets
Press Esc to delete all existing carets, except the one that was added last.
Alt+Shift+Click at one of the multiple carets to remove it. The last caret will not be removed.
Select multiple non-contiguous ranges
When you select multiple text ranges (non-contiguous selection), note the following:
Each selection range is associated with its own caret, so you can start typing to replace all selected ranges with your input, or you can press Left Arrow or Right Arrow to remove the selection ranges but keep multiple carets at beginnings/ends of the ranges.
As soon as selection ranges overlap, they are merged into a single selection range with a single caret.
Selection works independently of the code structure, that is selection ranges can include any characters, identifiers, words in string literals, comments, or their parts. So you have to be careful when changing the selected ranges as they may include different identifiers or their parts.
Select multiple words or text ranges
While Alt+Shift+Click will add a new caret, double-clicking words or dragging the mouse over text ranges (keeping the same keys pressed) will add new carets with the corresponding selections.
Select multiple occurrences of a word or a text range
If you want to select words, place the caret at an occurrence of the desired word. Otherwise, select the desired range with the mouse or with keyboard shortcuts.
Do one of the following:
Successively press Alt+J to find and select the next occurrence of case-sensitively matching word or text range.
Press Ctrl+Alt+Shift+J to select all case-sensitively matching words or text ranges in the document.
To remove selection from the last selected occurrence, press Alt+Shift+J.
After the second or any consecutive selection was added with Alt+J, you can skip it and select the next occurrence with F3. To return the selection to the lastly skipped occurrence, press Shift+F3.
Find and select multiple occurrences of a string
Press Ctrl+F or choose Edit | Find | Find from the main menu. The search pane appears at the top of the active editor.
Enter the string that you want to find and select. To the right of the search string, you will see the number of occurrences in the current document.
Optionally, restrict your search by case Alt+C or to match only whole words Alt+W.
Press Ctrl+Alt+Shift+J or click Select All Occurrences on the toolbar.
Use mouse to select rectangular fragments of text in normal selection mode
Make sure that the column selection mode is disabled.
To select ranges as a single rectangle, do one of the following:
Place the caret at one corner of the rectangle, and then Alt+Shift+Middle-Click at the diagonally opposite corner.
Alt+Click and drag the mouse to make the selection.
To select ranges as multiple rectangular selections, Ctrl+Alt+Shift+Click and drag the mouse over the desired parts of code.
As a result, you will have multiple selection ranges in each affected document line. On lines that are shorter than the rectangle, the selection will only span to the last character.
Column selection mode
Toggle between normal and column selection modes
Press Alt+Shift+Insert.
In the main menu, go to
.From the context menu of the editor, choose Column Selection Mode.
In the column selection mode, keyboard navigation and selection shortcuts in the current document work differently to simplify adding multiple carets and making rectangular selections:
You will be able to place the caret anywhere after the last character in any line. As soon as you start typing at a position beyond the end of the line, the necessary number of spaces will be added between the end of the line and the beginning of your input.
Pressing Shift+Up/Shift+Down or dragging the mouse up and down will add new carets above/below the current one instead of making a continuous selection.
The enabled column selection mode only affects the current editor tab. If you close or reopen the tab, it will switch back to the normal mode.
If the column selection mode is enabled for the current document, the Column indicator is displayed on the status bar.
Copy and paste with multiple carets
When text ranges selected with multiple carets are copied Ctrl+C or cut Ctrl+X, selections for each caret are placed to the clipboard as separate lines, even if the original selections were on the same line.
If the column selection mode was enabled, the selection could also include empty spaces after ends of lines. These will be replaced with whitespaces in the clipboard if you copy the selection.
When you paste any multi-line content from the clipboard, you can add multiple carets for each line in desired places, and then press Ctrl+V to paste each line at its own caret.