How can I select every other line with multiple cursors in Sublime Text?

Sublimetext2Sublimetext

Sublimetext2 Problem Overview


In Sublime Text 2, is it possible to instantly select every other (or odd/even) line and place multiple cursors on those lines?

Thanks.

Sublimetext2 Solutions


Solution 1 - Sublimetext2

  1. Find: Ctrl+F
  2. If regular expressions are not already enabled, enable them: Alt+R
  3. Type in the expression .*\n.*\n
  4. Find all: Alt+Enter
  5. Press left arrow to get rid of the selections, leaving just the cursors:
  6. You now have a cursor at the start of every odd-numbered line. If you wanted even-numbered lines, press down:
  7. Depending on the file, there might be one cursor missing right down the bottom of the file. Using the mouse (damn!) scroll to the bottom, hold down Ctrl, and click where the missing cursor should be to add it in.

Solution 2 - Sublimetext2

You can do it easily :

  • Select all your lines, or the whole document Ctrl+A
  • Add multiple selectors : Ctrl+Shift+L (and in Mac: Command + Shift + L)

EDIT :

Solution 3 - Sublimetext2

I was searching for a way to select alternate lines in sublime.

Thanks to Joe Daley for a very good answer. Though I realised that, if you use regex it would not select the last line in the file if there is no new-line at the end of the file.

I wanted to improve that answer but I don't seem to have enough reputation at the moment to comment on the answer above.

You can use the following search string with the regex turned on, and then press alt+enter. Followed by a left arrow. This would put a cursor each on alternate lines (same steps as explained by Joe Daley)

^.*\n.*$

Solution 4 - Sublimetext2

You can try with a plugin: Tools/New Plugin...

import sublime_plugin


class ExpandSelectionToOtherLinesCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.window().run_command("expand_selection", {"to": "line"})
        start_region = self.view.sel()[0]
        self.view.window().run_command("select_all")
        self.view.sel().subtract(start_region)

Save this file in your Packages/User.

Then, add the key binding for that plugin:

{ "keys": ["super+alt+l"], "command": "expand_selection_to_other_lines" }

This command will select all other lines. When you have other lines selected, you can use Split selection into lines command (Ctrl+Shift+L, Cmd+Shift+L on Mac).

If you want to have everythnig in a single shortcut, you can modify the plugin like this:

import sublime_plugin


class ExpandSelectionToOtherLinesCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.window().run_command("expand_selection", {"to": "line"})
        start_region = self.view.sel()[0]
        self.view.window().run_command("select_all")
        self.view.sel().subtract(start_region)
        self.view.window().run_command("split_selection_into_lines")
        self.view.window().run_command("move", {"by": "characters", "forward": False})

The last line is only to remove selection, leaving multiple cursors at the beginning of selected lines.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2136580View Question on Stackoverflow
Solution 1 - Sublimetext2Joe DaleyView Answer on Stackoverflow
Solution 2 - Sublimetext2zessxView Answer on Stackoverflow
Solution 3 - Sublimetext2greenjambiView Answer on Stackoverflow
Solution 4 - Sublimetext2Riccardo MarottiView Answer on Stackoverflow