Column/Vertical selection with Keyboard in SublimeText 3
I'm on a Mac. I have 7 columns in Sublime Text 3, each 300 lines each. If possible, I would like to select only the 4th column using a single keyboard shortcut.
Unsuitable options
-
ctrl
+shift
+up/down
-
alt
+mouse
+drag
-
ctrl
+alt
+up/down
. (This actually doesn't do anything, nor does it appear in my console session and nor is it a single keyboard shortcut). - I'd also prefer not to use VI/VIM mode just for this as it's not regular part of my workflow
What I've tried:
- A macro: but it isn't specific enough.
- using
command
and 'page down' withctrl
and 'shift`: no luck - SublimeText 3 Column-Select plugin: did not seem to work for me
My ideal solution would be that my cursor could be placed anywhere in a column and I would hit a shortcut (e.g. ctrl-alt-shift-a) and it would select the whole column.
Here is an example:
John Sally Benson Mariah Patrick Samantha Martin
Simon Kate Carey Delores Joshua Samuel Eliza
I want to select the column with Maria and Delores with one keystroke. I perform this action often so for various reasons (cut/paste, change case, append, add quotes, run macro etc) and thus would want something quick and repeatable.
How would I do this?
You should see Sublime Column Selection:
Using the Mouse
Different mouse buttons are used on each platform:
OS X
- Left Mouse Button + ⌥
OR: Middle Mouse Button
Add to selection: ⌘
- Subtract from selection: ⇧+⌘
Windows
- Right Mouse Button + Shift
OR: Middle Mouse Button
Add to selection: Ctrl
- Subtract from selection: Alt
Linux
Right Mouse Button + Shift
Add to selection: Ctrl
- Subtract from selection: Alt
Using the Keyboard
OS X
- Ctrl + Shift + ⬆
- Ctrl + Shift + ⬇
Windows
- Ctrl + Alt + ⬆
- Ctrl + Alt + ⬇
Linux
- Ctrl + Alt + ⬆
- Ctrl + Alt + ⬇
The reason why the sublime documented shortcuts for Mac does not work are they are linked to the shortcuts of other Mac functionalities such as Mission Control, Application Windows, etc. Solution: Go to System Preferences -> Keyboard -> Shortcuts and then un-check the options for Mission Control and Application Windows. Now try "Control + Shift [+ Arrow keys]" for selecting the required text and then move the cursor to the required location without any mouse click, so that the selection can be pasted with the correct indentation at the required location.
In my case (Linux) is alt+shift up/down
{ "keys": ["alt+shift+up"], "command": "select_lines", "args": {"forward": false} },
{ "keys": ["alt+shift+down"], "command": "select_lines", "args": {"forward": true} },
This should do it:
-
Ctrl+A
- select all. -
Ctrl+Shift+L
- split selection into lines. - Then move all cursors with
left/right
, select withShift+left/right
. Move all cursors to start of line withHome
.
The SublimeText 3 Column-Select plugin should be all you need. Install that, then make sure you have something like the following in your 'Default (OSX).sublime-keymap' file:
// Column mode
{ "keys": ["ctrl+alt+up"], "command": "column_select", "args": {"by": "lines", "forward": false}},
{ "keys": ["ctrl+alt+down"], "command": "column_select", "args": {"by": "lines", "forward": true}},
{ "keys": ["ctrl+alt+pageup"], "command": "column_select", "args": {"by": "pages", "forward": false}},
{ "keys": ["ctrl+alt+pagedown"], "command": "column_select", "args": {"by": "pages", "forward": true}},
{ "keys": ["ctrl+alt+home"], "command": "column_select", "args": {"by": "all", "forward": false}},
{ "keys": ["ctrl+alt+end"], "command": "column_select", "args": {"by": "all", "forward": true}}
What exactly about it did not work for you?