Artımlı aramada geçerli eşleşmeyi seçme (yani bölge olarak)


9

İle bir dize ararken C-s, arama modundan çıkmak ama yine de maç seçimini korumak için bazı tuşlara basmak istiyorum . Bu şekilde hemen yazmaya başlayabilir ve son eşleşmeyi değiştirebilirim.

Örneğin, aşağıdaki belgeye sahip olduğumu varsayalım:

The quick brown fox jumps over the lazy dog.

"Tembel" için arama yaparsanız, emacs bu gibi bir kelime seçecektir (köşeli parantez seçimi, boru imleç):

The quick brown fox jumps over the [lazy|] dog.

Şimdi, returnbasarsam, emacs imleç konumumu koruyacak, ancak "tembel" seçimini kaldıracak:

The quick brown fox jumps over the lazy| dog.

Bunun yerine, arama modundan çıkacak ancak yukarıdaki ikinci durumda olduğu gibi geçerli eşleme seçimini koruyacak bir kısayol istiyorum.


Aradığınız kişi değil M-x query-replacemi?
Nsukami _

1
@Nsukami_ Aramadan önce sorgumun ne olmasını istediğimi, hatta ne değiştirmek istediğimi her zaman bilmiyorum. C-sAramak istediğimi düşündüğüm şeyi vurmak ve yazmak, daha sonra değiştirmek istediğim şeyde geri w / geri sorgusunu sıfıra değiştirmek çok daha kolay . Sonra tam olarak değiştirmek istediğim şeyle oynuyorum. M-%çok "resmi".
Ben

Çözüm benim için işe yarıyor, onu öldürmek için bir kelime aradığımda ve sonra farklı bir yere çektiğimde. query-replacebunu çözmez.
GergelyPolonkai

Yanıtlar:


7

İşte bir yaklaşım:

(defun isearch-exit-mark-match ()
  "Exit isearch and mark the current match."
  (interactive)
  (isearch-exit)
  (push-mark isearch-other-end)
  (activate-mark))

(define-key isearch-mode-map (kbd "<C-return>") #'isearch-exit-mark-match)

Bu, geçerli aramadan çıkmak ve son eşleşmeyi seçili bırakmak için farklı bir anahtar (C-dönüş) bağlar. Bu da işe yarayacak isearch-forward-regexp, ki bu kullanışlı.


1
"Symbol işlev tanımı geçersiz: bind-key." Nereden bind-keygeliyor?
Ben

1
Üzgünüm, bind-keybaşka bir kütüphaneden geliyor. Bunun define-keyyerine yerleşik işlevi kullanmak için cevabı değiştirdim .
glucas

4

Kütüphane ISearch + sen sağlayan kolayca bunu , hatta anında / kapalı o geçiş.

  • Nil olmayan seçenek isearchp-set-region-flag, aramadan çıktığınızda bölgeyi (seçimi) son arama hedefi etrafına otomatik olarak ayarlar.

  • Komut isearchp-toggle-set-region, M-s M-SPCisearch sırasında bağlı seçeneği geçiş yapar isearchp-set-region-flag.

  • Komut set-region-around-search-target, son arama hedefi etrafındaki bölgeyi manuel olarak ayarlar. (Bu nedenle, seçenek ayarlanmamış olsa bile, otomatik seçim almazsanız, manuel olarak yapabilirsiniz.)


Library Replace + vb. İçin aynı şeyi yapmanızı sağlar query-replace. Bölgeyi son değiştirme olayının etrafına yerleştirir (yani seçer). Bunu isearchp-set-region-flagkontrol etmek için aynı seçeneği kullanır ve komut set-region-around-search-targetaynı etkiye sahiptir.

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.