Ben tarafından M-x query-replacetüm oluşumları değiştirmek için yaptığımda , aynı zamanda (büyük harf ) ile eşleşir . Emacs'ı yalnızca küçük harf bulmaya zorlamak nasıl ?vwVVv
Ben tarafından M-x query-replacetüm oluşumları değiştirmek için yaptığımda , aynı zamanda (büyük harf ) ile eşleşir . Emacs'ı yalnızca küçük harf bulmaya zorlamak nasıl ?vwVVv
Yanıtlar:
(customize-set-variable case-fold-search nil)
Ya da kendi komutunuzda bu değişkeni (isteğe bağlı), aksi takdirde sadece bir sarıcı olan bağlayın query-replace. Bunun avantajı, sorgu değiştirme dışında genel kullanım için değişken değerini değiştirmemesidir.
case-replaceDeğiştirme metni için büyük / küçük harf kullanımını kontrol eden değişkene de bakın .
Ayrıca bkz C-h f query-replaceörneğin, yazan yere:
Eşleşme,
case-fold-searchnil değilse ve FROM-STRING'in büyük harf içermemesi durumunda büyük / küçük harf bağımsızdır . Eğer Değiştirme, yeni metne eski metnin durumda desenini aktarırcase-replacevecase-fold-searcholmayan sıfır olan ve DAN-STRING hiçbir büyük harf vardır
Ayrıca aşağıdaki yorumlara bakın ve Emacs # 20687 hatası , burada perform-replacevaka katlama işlemini değiştirmenize nasıl izin vereceğinizi gösterir query-replace.
Mevcut kodun bu şekilde perform-replacebağlandığını case-fold-searchda unutmayın (bağlı olduğu değişkenlere dikkat edin):
(case-fold-search (if (and case-fold-search search-upper-case)
(isearch-no-upper-case-p from-string regexp-flag)
case-fold-search))
case-fold-searchBağlamayı isearchkullanırken yapabildiğimiz gibi anında değiştirmek güzel olurdu M-c. Ancak maalesef query-replacemod haritası var.
query-replace-map: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))ve (define-key query-replace-map "C" 'toggle-case). Ancak bu haritadaki tuşların kullanımı zor kodlanmıştır perform-replace. Sen isteyebilirsin M-x report-emacs-bug, almak için perform-replacedaha açık uçlu olmak kodunu, böylece tuşları haritaya eklenebilir. En azından anahtara bağlı cmd'yi çağıran bir yedek cümleye sahip olmalıdır.
query-replace-mapönce bulamadığımdan emin değilim .
perform-replaceek bir condmadde eklemek için değiştirin query-replace-map. Yeni koşulu, tümünü yakalama şartından hemen önce koyun t. Bu yeni hüküm geçerli: (def (call-interactively def)). Daha basit olamazdı.
(customize-set-variable case-fold-search nil)hatası verir customize-set-variable: Attempt to set a constant symbol: nil. Ayrıca ben de denedim (setq case-fold-search nil)ve (setq case-replace nil)ancak sorgu hala büyük V. maç