Bölgeyi, kapalı parantez içerecek şekilde ayarlama


9

Noktadan veya aktif bölgeden başlayarak (bir tuş vuruşunda / komutunda) bir sonraki kapatma parantez kümesini içerecek şekilde nasıl 'genişletebilirim'?

Şununla başlarsam: ( |nokta anlamına gelir)

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

Veya: ile başlarsam ( <ve >seçilen bölgeyi parantez içine alırsanız )

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

Sonunda istiyorum

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

Yanıtlar:


10

Genişletme bölgesini kullanın. El :

Bölgeyi genişlet, seçilen bölgeyi semantik birimler kadar artırır. İstediğinizi seçene kadar tuşa basmaya devam edin.

Bir örnek:

(setq alphabet-start "abc def")

İmleç c'de iken, abc kelimesinin tamamını işaretleyerek başlar, ardından abc def tırnaklarının içeriğine, sonra "abc def" tırnaklarının sonuna, sonra da sexp setq alphabet-start "abc'nin içeriğine genişler. def "ve son olarak tüm sexp.

Bunu şu şekilde ayarlayabilirsiniz:

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

Çok uzağa genişlerseniz bölgeyi negatif bir önekle tekrar sözleşme yapabilirsiniz.


1
Referans olarak, expand-regionlisteyi hemen işaretlemek için belirli bir işlev çağrılır er/mark-outside-pairs.
dadı

4

expand-regionBaşka bir cevapta önerildiği gibi denemeniz gerektiğini kabul ediyorum (oy veriyorum).

Ancak, ilgili yerleşik komutlara aşina değilseniz:

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

C-M-u C-M-SPCEkteki listeyi işaretlemek için kullanabileceğiniz bir bölgenin olmadığı ilk örneğinizde . Zaten seçili bir bölge varsa, bu komutlar bölgeyi genişletir. Bu nedenle 42, seçilirse ve vurursanız C-M-u, seçimi listenin başına kadar uzatır, ancak kapanış parenini içermez.

Dolayısıyla, herhangi bir geçerli seçimi iptal etmek için expand-regionvurduğum gibi bir şeyin yokluğunda C-g, daha sonra C-M-uistediğiniz sayıda ebeveyn geri dönmek, ardından C-M-SPCişaretlemek


3

Aktif bölge durumunda, hiçinde lispy istediğini yapacağız. Son giriş yazıma bakın .

İlk durumda, yapmanız gerekir M-m h.

güncelleme: sahip olduğunuz tüm seçenekler lispy

İle başlayan:

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

Burada ~işareti (bölgenin başlangıcı) ve |noktayı (bölgenin sonu ) belirtir.

  1. İle hsize olsun:

    (defn foo [x] |(+ x 42)~)
    
  2. İle lsize olsun:

    (defn foo [x] ~(+ x 42)|)
    
  3. İle kolsun (ile geri alınamaz j):

    (defn foo [x] (+ ~x| 42))
    
  4. İle 2kveya kkalırsınız:

    (defn foo [x] (~+| x 42))
    
  5. İle dsize olsun:

    (defn foo [x] (+ x |42~))
    
  6. İle d>olsun (ile geri alınamaz <):

    (defn foo [x] (+ |x 42~))
    
  7. İle d2>veya d>>alırsınız:

    (defn foo [x] (|+ x 42~))
    
  8. İle msize olsun:

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

Sadece bölge aktifken, özetlemek için h, j, k, l bölgeyi hareket oklar vardır. >bölgeyi nokta yönünde bir semantik birim büyütür. <bölgeyi nokta yönünde bir semantik birim küçültür. mişareti devre dışı bırakır. ibölgenin ilk öğesini seçer ve dnokta ve işaret değiştirir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.