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.


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ć.

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Ć :


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

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.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.