Imposta la regione in modo da includere parentesi racchiuse


9

A partire dal punto o dalla regione attiva, come si fa a "espandere" rapidamente (in una sequenza di tasti / comando) per includere la serie successiva di parentesi racchiuse?

Se inizio con: ( |significa punto)

(defn foo [x] (+ x |42))

O se inizio con: ( <e >parentesi la regione selezionata)

(defn foo [x] (+ x <42>|))

Voglio finire con

(defn foo [x] <(+ x 42)>|)

Risposte:


10

Usa expand-region.el :

Espandi regione aumenta la regione selezionata di unità semantiche. Continua a premere il tasto fino a quando non seleziona ciò che desideri.

Un esempio:

(setq alphabet-start "abc def")

Con il cursore in corrispondenza di c, inizia contrassegnando l'intera parola abc, quindi espandi al contenuto delle virgolette abc def, quindi all'intera citazione "abc def", quindi al contenuto del sexp setq alphabet-start "abc def "e infine a tutto il sexp.

Puoi configurarlo in questo modo:

(require 'expand-region)
(global-set-key (kbd "C-=") 'er/expand-region)

È possibile contrarre nuovamente la regione con un prefisso negativo, se si espande troppo.


1
Per riferimento, expand-regionviene chiamata la funzione specifica per contrassegnare immediatamente l'elenco er/mark-outside-pairs.
tata

4

Sono d'accordo che dovresti provare expand-regioncome suggerito in un'altra risposta (per cui sto votando).

Ma nel caso in cui non si abbia familiarità con i relativi comandi integrati:

C-M-u, backward-up-list
C-M-SPC, mark-sexp

Nel primo esempio in cui non è presente alcuna regione, è possibile utilizzare C-M-u C-M-SPCper contrassegnare l'elenco allegato. Se esiste già una regione selezionata, questi comandi la estendono. Quindi, se 42viene selezionato e si C-M-upreme, estenderà la selezione indietro all'inizio dell'elenco ma non includerebbe la parentesi di chiusura.

Quindi, in assenza di qualcosa del genere expand-region, premerei C-gper annullare qualsiasi selezione corrente, quindi C-M-uper tornare indietro a tutte le parentesi desiderate, quindi C-M-SPCper contrassegnare


3

Nel caso di una regione attiva, hin lispy farà quello che vuoi. Vedi il mio recente post introduttivo .

Nel primo caso, è necessario M-m h.

aggiornamento: tutte le opzioni che hai con lispy

Iniziare con:

(defn foo [x] (+ x ~42|))

Qui, ~indica il segno (l'inizio della regione) e |il punto (la fine della regione).

  1. Con hte ottieni:

    (defn foo [x] |(+ x 42)~)
    
  2. Con lte ottieni:

    (defn foo [x] ~(+ x 42)|)
    
  3. Con kte get (annullabile con j):

    (defn foo [x] (+ ~x| 42))
    
  4. Con 2ko kkottieni:

    (defn foo [x] (~+| x 42))
    
  5. Con dte ottieni:

    (defn foo [x] (+ x |42~))
    
  6. Con d>te get (annullabile con <):

    (defn foo [x] (+ |x 42~))
    
  7. Con d2>o d>>ottieni:

    (defn foo [x] (|+ x 42~))
    
  8. Con mte ottieni:

    (defn foo [x] (+ x 42|))
    

Per riassumere, quando regione è attiva, h, j, k, l sono le frecce che muovono la regione. >fa crescere la regione di un'unità semantica nella direzione del punto. <riduce la regione di un'unità semantica nella direzione del punto. mdisattiva il segno. iseleziona il primo elemento della regione e dscambia punto e segno.

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.