ChatGPT解决这个技术问题 Extra ChatGPT

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

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

Thanks.

Don't you want to accept an answer?

J
Joe Daley

Find: Ctrl+F If regular expressions are not already enabled, enable them: Alt+R Type in the expression .*\n.*\n Find all: Alt+Enter Press left arrow to get rid of the selections, leaving just the cursors: ← You now have a cursor at the start of every odd-numbered line. If you wanted even-numbered lines, press down: ↓ 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.


You can also use (.*\n){10} for every 10 lines
As a new improvement : (.*(\n|$)){2}
nice! @zessx's (.*(\n|$)){2} solution includes the last line
Just to note, in Sublime 2 running on OS X 10.11.5, the shortcut for RegEx search is Alt + Command + R. You can also enable RegEx search by pressing Command + F and then clicking the icon that looks like this: [ .* ]
C
Community

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 :

Or use the great Joe Daley method with (.*(\n|$)){2} expression


though not the right answer for this question, this is what i wanted. thanks for sharing
Great and simple hint!
This solution is what I needed but not what the OP wants.
g
greenjambi

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.*$

R
Riccardo Marotti

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.


Wow this looks promising - I'm gonna try this as soon as I can!
Thank you very much! I'm fairly new to the plugins. Should be fun. Begin able to select every other line would be just fantastic. Cheers!