Come posso selezionare ogni altra riga con più cursori in Sublime Text?


163

In Sublime Text 2, è possibile selezionare istantaneamente ogni altra riga (o dispari / pari) e posizionare più cursori su quelle righe?

Grazie.


5
Non vuoi accettare una risposta?
Martin Thoma,

Risposte:


382
  1. Trova: Ctrl+F
  2. Se le espressioni regolari non sono già abilitate, abilitarle: Alt+R
  3. Digita l'espressione .*\n.*\n
  4. Trova tutto: Alt+Enter
  5. Premi la freccia sinistra per eliminare le selezioni, lasciando solo i cursori:
  6. Ora hai un cursore all'inizio di ogni riga dispari. Se desideri linee con numeri pari, premi verso il basso:
  7. A seconda del file, potrebbe esserci un cursore mancante proprio nella parte inferiore del file. Usando il mouse (dannazione!) Scorri verso il basso, tieni premuto Ctrle fai clic nel punto in cui dovrebbe essere il cursore mancante per aggiungerlo.

83
Puoi anche usarlo (.*\n){10}per ogni 10 righe
Joe Daley

21

3
simpatico! La (.*(\n|$)){2}soluzione di @ zessx include l'ultima riga
woojoo666,

3
Solo per notare, in Sublime 2 in esecuzione su OS X 10.11.5, il collegamento per la ricerca RegEx è Alt + Comando + R. Puoi anche abilitare la ricerca RegEx premendo Comando + F e quindi facendo clic sull'icona che assomiglia a questo: [. *]
lustig,

97

Puoi farlo facilmente:

  • Seleziona tutte le tue righe o l'intero documento Ctrl+A
  • Aggiungi più selettori: Ctrl+ Shift+ L(e in Mac: Comando + Maiusc + L)

MODIFICARE :


12
sebbene non sia la risposta giusta per questa domanda, questo è quello che volevo. grazie per aver condiviso
Rajani Karuturi il

Grande e semplice suggerimento!
filip

5
Questa soluzione è ciò di cui avevo bisogno, ma non quello che l'OP vuole.
grido

13

Stavo cercando un modo per selezionare linee alternative in sublime.

Grazie a Joe Daley per un'ottima risposta. Anche se mi sono reso conto che, se usi regex, non selezionerebbe l'ultima riga nel file se non ci fosse una nuova riga alla fine del file.

Volevo migliorare quella risposta, ma al momento non ho abbastanza reputazione per commentare la risposta sopra.

È possibile utilizzare la seguente stringa di ricerca con regex attivato, quindi premere alt + invio. Seguito da una freccia sinistra. Questo metterebbe un cursore ciascuno su linee alternate (stessi passaggi spiegati da Joe Daley)

^.*\n.*$

7

Puoi provare con un 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)

Salva questo file nel tuo Packages/User .

Quindi, aggiungi l'associazione chiave per quel plugin:

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

Questo comando selezionerà tutte le altre linee. Quando hai selezionato altre linee, puoi usare il Split selection into linescomando ( Ctrl+ Shift+ L, Cmd+ Shift+ Lsu Mac).

Se vuoi avere tutto in un unico collegamento, puoi modificare il plugin in questo modo:

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

L'ultima riga serve solo per rimuovere la selezione, lasciando più cursori all'inizio delle righe selezionate.


1
Wow, questo sembra promettente - lo proverò appena posso!
user2136580

Grazie mille! Sono abbastanza nuovo per i plugin. Dovrebbe essere divertente. Iniziare a selezionare ogni altra riga sarebbe semplicemente fantastico. Saluti!
user2136580
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.