Ben tarafından M-x query-replace
tü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 ?v
w
V
V
v
Ben tarafından M-x query-replace
tü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 ?v
w
V
V
v
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-replace
Değ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-search
nil 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-replace
vecase-fold-search
olmayan 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-replace
vaka katlama işlemini değiştirmenize nasıl izin vereceğinizi gösterir query-replace
.
Mevcut kodun bu şekilde perform-replace
bağlandığını case-fold-search
da 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-search
Bağlamayı isearch
kullanırken yapabildiğimiz gibi anında değiştirmek güzel olurdu M-c
. Ancak maalesef query-replace
mod 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-replace
daha 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-replace
ek bir cond
madde 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ç