Как выбрать вторую строку с несколькими курсорами в Sublime Text?

163

В Sublime Text 2 возможно ли мгновенно выбрать каждую вторую (или нечетную / четную) строку и разместить несколько курсоров на этих линиях?

Спасибо.

user2136580
источник
5
Разве вы не хотите принять ответ?
Мартин Тома

Ответы:

382
  1. Найти: Ctrl+F
  2. Если регулярные выражения еще не включены, включите их: Alt+R
  3. Введите выражение .*\n.*\n
  4. Найти все: Alt+Enter
  5. Нажмите стрелку влево, чтобы избавиться от выделений, оставив только курсоры:
  6. Теперь у вас есть курсор в начале каждой нечетной строки. Если вы хотите строки с четными номерами, нажмите:
  7. В зависимости от файла, в нижней части файла может отсутствовать один курсор. С помощью мыши (черт!) Прокрутите вниз, удерживайте Ctrlи щелкните, где должен быть отсутствующий курсор, чтобы добавить его.
Джо Дейли
источник
83
Вы также можете использовать (.*\n){10}для каждых 10 строк
Джо Дейли
21
Как новое улучшение :(.*(\n|$)){2}
zessx
3
отлично! Решение @ zessx (.*(\n|$)){2}включает в себя последнюю строку
woojoo666
3
Просто чтобы заметить, в Sublime 2, работающем на OS X 10.11.5, ярлык для поиска RegEx - Alt + Command + R. Вы также можете включить поиск RegEx, нажав Ctrl + F и затем щелкнув значок, который выглядит следующим образом: [. *]
Люстиг
97

Вы можете сделать это легко:

  • Выберите все свои строки или весь документ Ctrl+A
  • Добавить несколько селекторов: Ctrl+ Shift+ L(и в Mac: Command + Shift + L)

РЕДАКТИРОВАТЬ :

zessx
источник
12
хотя не правильный ответ на этот вопрос, это то, что я хотел. спасибо за то, что поделились
Раджани Карутури
Отличный и простой намек!
Filip
5
Это решение - то, что мне нужно, но не то, что хочет ОП.
визг
13

Я искал способ выбрать альтернативные строки в возвышенном.

Спасибо Джо Дейли за очень хороший ответ. Хотя я понял, что если вы используете регулярное выражение, он не выберет последнюю строку в файле, если в конце файла нет новой строки.

Я хотел улучшить этот ответ, но у меня сейчас недостаточно репутации, чтобы прокомментировать ответ выше.

Вы можете использовать следующую строку поиска с включенным регулярным выражением, а затем нажмите alt + enter. Затем следует стрелка влево. Это поместило бы курсор каждый в чередующиеся строки (те же шаги, которые объяснил Джо Дейли)

^.*\n.*$
greenjambi
источник
7

Вы можете попробовать с плагином: 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)

Сохраните этот файл в своем Packages/User.

Затем добавьте привязку ключа для этого плагина:

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

Эта команда выберет все остальные строки. Когда у вас выбраны другие строки, вы можете использовать Split selection into linesкоманду ( Ctrl+ Shift+ L, Cmd+ Shift+ Lна Mac).

Если вы хотите иметь все в одном ярлыке, вы можете изменить плагин следующим образом:

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})

Последняя строка предназначена только для удаления выделения, оставляя несколько курсоров в начале выделенных строк.

Риккардо Маротти
источник
1
Вау, это выглядит многообещающе - я попробую это как можно скорее!
user2136580
Большое спасибо! Я довольно новичок в плагинах. Должно быть весело. Начать выделять любую другую строку было бы просто фантастически. Ура!
user2136580