Repository: vscode
Issue: Move cursor when adding secondary cursors
Labels: ux,editor-multicursor,under-discussion

<!-- ⚠️⚠️ Do Not Delete This! feature_request_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- Please search existing issues to avoid creating duplicates. -->

<!-- Describe the feature you'd like. -->
The multi-cursor experience with VSCode can feel a bit jarring. It supports advanced and smart features, but seems to lack support for basic / minimal features or implementations. Especially when considering use cases like not wanting to touch a mouse for text editing.  
To put it simply, I'd like to be able to make basic multi-cursor editing work the way it does in Notepad++. (Specifically with "Enable Multi-Editing" enabled but "Enable Column Selection to Multi-Editing" disabled.)

Currently, the basic way to edit multiple lines simultaneously is to use the keyboard shortcuts for editor.action.insertCursorAbove and editor.action.insertCursorBelow to spawn secondary cursors. If your cursor is on line 22. pressing editor.action.insertCursorBelow twice will result in cursors on lines 22, 23, and 24. If you then press editor.action.insertCursorAbove once it will result in cursors on lines 21, 22, 23, and 24.  
If you accidentally press either keybind too many times, you can either use the cursorUndo keybind to sequentially remove the secondary cursors or use the removeSecondaryCursors keybind to exit multi-cursor mode and start over.  
If you press the keybind to removeSecondaryCursors then your cursor will be back on line 22, where it was before you spawned any secondary cursors.  

This alone is already an unintuitive implementation. It operates differently from other selection / editing modes such as, for example, highlighting text with cursorUpSelect and cursorDownSelect.  
I propose that keyboard-centric manipulation of multi-line editing should instead work like the following:

If your cursor is on line 22, pressing editor.action.multiCursorExtendDown twice will result in cursors on lines 22, 23, and 24. If you then press editor.action.multiCursorExtendUp once it will result in cursors on lines 22 and 23. If you then press editor.action.multiCursorExtendUp once more it will result in a single cursor on line 22, effectively exited multi-cursor mode. If you then press editor.action.multiCursorExtendUp once more again it will result in cursors on lines 21 and 22.  
If you press the removeSecondaryCursors keybind then your cursor will be on line 21, the last place you moved your cursor to.

Preferably, this would also come with a toggle setting to make the 4 unmodified arrow buttons exit multi-cursor mode instead of moving the (rectangular) multi-cursors. Specifically, up or down would move the cursor up or down as normal, left would move the cursor to where the top-left multi-cursor was, and right would move the cursor to where the bottom-right multi-cursor was. All resulting in a single cursor, obviously

I've used two mock commands in my example proposal as I presume some may prefer the current paradigm, and thus it'd be easier to implement this functionality using new commands rather than changing the behavior of existing commands.