Jak mogę zaznaczyć każdą drugą linię z wieloma kursorami w Sublime Text?

162

Czy w Sublime Text 2 można od razu zaznaczyć co drugą (lub nieparzystą / parzystą) linię i umieścić na nich wiele kursorów?

Dzięki.

user2136580
źródło
5
Nie chcesz przyjąć odpowiedzi?
Martin Thoma

Odpowiedzi:

381
  1. Znajdź: Ctrl+F
  2. Jeśli wyrażenia regularne nie są jeszcze włączone, włącz je: Alt+R
  3. Wpisz wyrażenie .*\n.*\n
  4. Znajdź wszystkie: Alt+Enter
  5. Naciśnij strzałkę w lewo, aby pozbyć się selekcji, pozostawiając tylko kursory:
  6. Masz teraz kursor na początku każdego nieparzystego wiersza. Jeśli chcesz, aby linie były parzyste, naciśnij:
  7. W zależności od pliku może brakować jednego kursora u dołu pliku. Za pomocą myszy (cholera!) Przewiń w dół, przytrzymaj Ctrli kliknij w miejscu, w którym powinien znajdować się brakujący kursor, aby go dodać.
Joe Daley
źródło
83
Możesz również użyć (.*\n){10}dla każdych 10 linii
Joe Daley
21
Jako nowe ulepszenie :(.*(\n|$)){2}
zessx
3
miły! Rozwiązanie @ zessx (.*(\n|$)){2}zawiera ostatnią linię
woojoo666
3
Warto zauważyć, że w Sublime 2 działającym w systemie OS X 10.11.5 skrótem wyszukiwania RegEx jest Alt + Command + R. Możesz również włączyć wyszukiwanie RegEx, naciskając Command + F, a następnie klikając ikonę, która wygląda następująco: [. *]
lustig
97

Możesz to łatwo zrobić:

  • Zaznacz wszystkie swoje wiersze lub cały dokument Ctrl+A
  • Dodaj wiele selektorów: Ctrl+ Shift+ L(a na Macu: Command + Shift + L)

EDYTOWAĆ :

zessx
źródło
12
chociaż nie jest to dobra odpowiedź na to pytanie, tego właśnie chciałem. dzięki za udostępnienie
Rajani Karuturi
Świetna i prosta wskazówka!
Filip
5
To rozwiązanie jest tym, czego potrzebowałem, ale nie tym, czego chce OP.
wrzasnąć
13

Szukałem sposobu na wysublimowany wybór alternatywnych linii.

Dziękuję Joe Daley za bardzo dobrą odpowiedź. Chociaż zdałem sobie sprawę, że jeśli użyjesz wyrażenia regularnego, nie wybierze on ostatniej linii w pliku, jeśli nie ma nowej linii na końcu pliku.

Chciałem poprawić tę odpowiedź, ale wydaje mi się, że w tej chwili nie mam wystarczającej reputacji, aby skomentować powyższą odpowiedź.

Możesz użyć następującego ciągu wyszukiwania przy włączonym wyrażeniu regularnym, a następnie nacisnąć klawisze alt + enter. Po której następuje strzałka w lewo. Spowoduje to umieszczenie kursora w alternatywnych wierszach (te same kroki, które wyjaśnił Joe Daley)

^.*\n.*$
greenjambi
źródło
7

Możesz spróbować z wtyczką: 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)

Zapisz ten plik w swoim Packages/User.

Następnie dodaj powiązanie klawiszy dla tej wtyczki:

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

To polecenie wybierze wszystkie inne linie. Gdy zaznaczysz inne linie, możesz użyć Split selection into linespolecenia ( Ctrl+ Shift+ L, Cmd+ Shift+ Lna Macu).

Jeśli chcesz mieć wszystko w jednym skrócie, możesz zmodyfikować wtyczkę w następujący sposób:

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

Ostatnia linia służy tylko do usunięcia zaznaczenia, pozostawiając wiele kursorów na początku wybranych linii.

Riccardo Marotti
źródło
1
Wow, to wygląda obiecująco - spróbuję tak szybko, jak to możliwe!
user2136580,
Dziękuję Ci bardzo! Jestem całkiem nowy w wtyczkach. Powinno być zabawnie. Możliwość wybrania co drugiej linii byłaby po prostu fantastyczna. Twoje zdrowie!
user2136580,