ChatGPT解决这个技术问题 Extra ChatGPT

PyCharm: Turning selection to multiple cursors per line

Sublime Text has this functionality where you can select text and start editing each line with a (multiple) cursor:

https://i.stack.imgur.com/XZI4B.gif

Is there PyCharm equivalent?

In the linked issues there is a link to third-party plugin Extra Actions, which implements desired funtionality precisely without any hacks.
@YaroslavAdmin: Perfect!
cmd + shift + L worked for me in Atom- OSX.

j
jeremyh

Another option: with text selected, toggle column selection mode:

https://i.stack.imgur.com/NPOHH.gif

The default shortcut to toggle the mode is:

Linux/Windows: alt-shift-insert

Mac cmd-shift-(numpad) *

(or EditColumn Selection Mode)

It's an inconvenient shortcut for Mac, as most laptops have no numpad. I remapped it to cmd-shift-8.

Column selection mode actually has other purposes too: it changes the default behavour when selecting text with the keyboard and mouse. Toggle it off again to return to normal selection behaviour.


In phpstorm 10, I found I can press cmd-shift, then click twice 8. ;p
Thanks, this helped me.
j
jezrael

From source:

To add carets, do one of the following Press Shift+Alt and click the LEFT mouse button at the location of the caret. Double-click Ctrl and press up arrow or down arrow keys.

On OSX it seems to be enough to press down the LEFT-ALT and add new carets with mouse LEFT CLICK, or press down SHIFT+ALT and paint the cursors with mouse.


In addition there's Alt + J that allows you to select the next occurrence of your selection.
Thanks. SHIFT+ALT is what I was looking for. It is not exactly what Sublime Text does (converts existing selection to multiple cursors), but close enough.
@BornToCode it seems to just be alt alone on Linux, for me, no shift. Additionally, many distros by default map one of the alts to a different keypress (meta or something), so try both the left and right alt keys. This can be changed, but the directions are different depending on your distro.
@BornToCode one can try Ctrl+Shift+Alt +LMB (left mouse button)
@fikr4n Shift-Alt does work on PyCharm 2019.2 on linux. It used to be only Alt (as it still is in CLion, for example)
V
Vagelis Prokopiou

Hold Alt and drag the mouse over the desired text.

Source: https://www.jetbrains.com/help/pycharm/2016.1/selecting-text-in-the-editor.html


out of all the answers, your answer was most simple and useful. Thanks @Vagelis
r
rleelr

This functionality was added to Pycharm in June 2020.

It's called "Add Carets to Ends of Selected Lines", and is bound to Alt + Shift + G by default.


A
Artur Barseghyan

To do this on Linux (tested on Ubuntu 16.04), do as follows:

In your editor, press Alt + Windows Key and use your mouse to place the cursor on the lines you want to have multiple cursors on.

You may also want to allow placement of caret after the end of line or inside tabs. In that case you need to change your settings:

Go to Editor -> Generaral -> Virtual Space:

[x] Allow placement of caret after end of line

[x] Allow placement of caret inside tabs

And make sure the above mentioned two settings are enabled.


V
Victor S.

You can use plugin Extra Actions.

You must add a combination to this action:

Split Selection into Lines

No shortcuts are set by default.

You can easily set them by going to

Settings > Keymap > Plugins > Extra Actions

Configuring keyboard shortcuts.


T
TheFixer

Press SHIFT + DownArrow ( instead of mouse and drag) in pycharm for multi cursor editing


H
Hussain

The simple way I think is to select the text and go on pressing Alt + J for Linux and Ctrl + G for Mac until you reach the last match.

PyCharm blog


s
sgauri

Sublime like features for MacOS X in PyCharm:

Select/Unselect the next occurrence with Ctrl+G / Shift+Ctrl+G

Select all occurrences at once with Ctrl+Cmd+G

Remove occurrences with ESC


a
aria bahreini

you can use alt + shift + G for selected lines to enable caret for them and use Home and End buttons to go to the start or end of your line(s).

select your line(s). press alt + shift + G press Home or End to go to the start or the end of your line(s).

you could also use alt + click for selecting by clicking and alt + J to select same values.


V
Victor S.
{
    "key": "ctrl+t",
    "command": "editor.action.insertCursorAtEndOfEachLineSelected",
    "when": "editorHasSelection && editorTextFocus && !editorReadonly",
},

ctrl+t - as an example.


J
Jordan

For macOS users: looks like if you hold shift + down or up arrow keys to select with multiple cursors.

image