GoLand 2023.2 Help

Multiple cursors and selection ranges

When typing, copying, or pasting in GoLand 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 Help | Edit Custom VM 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

You can add carets in two different ways:

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 on the Editor | General page of the IDE settings Control+Alt+S and they are also enabled in the column selection mode.

GoLand: Multiple carets in the default selection mode
GoLand: Multiple carets in the virtual space mode

Add or remove carets at selected locations using mouse

  • Alt+Shift+LeftClick at the target location to add another caret.

  • Alt+Shift+LeftClick 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 Control 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+ArrowUp/Shift+ArrowDown.

  • Press Control+Shift+A, type Clone caret, and choose the desired action from the suggestion list:

    Clone caret

    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 Control+Home to set the caret at the beginning of the first line, enable the column selection mode (press Alt+Shift+Insert), and then press Control+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.

    Add carets to the end of each line in the selected region

Remove multiple carets

  • Press Esc to delete all existing carets, except the one that was added last.

  • Alt+Shift+LeftClick 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+LeftClick 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.

    GoLand: Select multiple text fragments
    GoLand: Select multiple text fragments

Select multiple occurrences of a word or a text range

  1. If you want to select words, set your caret at an occurrence of the desired word. Otherwise, select the desired range with the mouse or with keyboard shortcuts.

  2. 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 Control+Alt+Shift+J to select all case-sensitively matching words or text ranges in the document.

  3. To remove selection from the last selected occurrence, press Alt+Shift+J.

  4. 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.

    GoLand. Select multiple occurrences. skip occurrence

Find and select multiple occurrences of a string

  1. Press Control+F or choose Edit | Find | Find from the main menu. The search pane appears at the top of the active editor.

  2. 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.

  3. Optionally, restrict your search by case Match case Alt+C or to match only whole words Words Alt+W.

  4. Press Control+Alt+Shift+J or click Select All Occurrences Select All Occurrences on the toolbar.

Use mouse to select rectangular fragments of text in normal selection mode

  1. Make sure that the column selection mode is disabled.

  2. 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+MiddleClick at the diagonally opposite corner.

    • Alt+LeftClick and drag the mouse to make the selection.

  3. To select ranges as multiple rectangular selections, Control+Alt+Shift+LeftClick and drag the mouse over the desired parts of code.

  4. 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.

    GoLand: Selecting multiple rectangular fragments of text with the mouse

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 set your 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+ArrowUp / Shift+ArrowDown 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.

Toggle between normal and column selection modes

  • Press Alt+Shift+Insert.

  • From the main menu, choose Edit | Column Selection Mode.

  • From the context menu of the editor, choose Column Selection Mode.

Copy and paste with multiple carets

When text ranges selected with multiple carets are copied Control+C or cut Control+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 Control+V to paste each line at its own caret.

Last modified: 23 August 2023