대소 문자를 구분하는 쿼리 교체를 수행하는 방법은 무엇입니까?


15

내가 할 때 M-x query-replace모든 항목 교체 v로를 w, 다음은 일치 V(대문자 V). emacs가 소문자 만 찾도록 강제하는 방법은 v무엇입니까?


대소 문자를 구분하지 않는 것이 기본 동작이며 검색시 대소 문자가 중요하지 않습니다. 하나의 사례 만 일치 시키려면 원하는 "대소 문자 구분"입니다. (나도 빠뜨릴 수도 있고, 필요한 경우 편집을 롤백해도됩니다.)
T. Verron

@ T.Verron 나는 지금 확신하고 있습니다.
이름

답변:


13
(customize-set-variable case-fold-search  nil)

또는 자신의 명령에 해당 변수 (옵션)를 바인딩하십시오 query-replace. 그렇지 않으면 래퍼 일뿐 입니다. 이는 쿼리 대체 이외의 일반적인 용도로 변수 값을 변경하지 않는 이점이 있습니다.

case-replace대체 텍스트의 대소 문자를 제어하는 variable도 참조하십시오 .

C-h f query-replace예를 들어 다음과 같은 위치를 참조하십시오 .

일치 case-fold-search하지 않는 것이 아니고 FROM-STRING에 대문자가없는 경우 대소 문자를 구분하지 않습니다. 경우 교체, 새로운 텍스트로 된 텍스트의 경우 패턴을 전송 case-replacecase-fold-search비 전무와 FROM-STRING에는 대문자가 없습니다

아래의 의견보기, 그리고 이맥스 버그 # 20687 이 패치 할 수있는 방법 쇼, perform-replace사건 중 접이식 토글을 수 있도록 query-replace.


기존 코드 가 이런 식으로 perform-replace바인드됨에 case-fold-search유의하십시오 (이에 의존하는 변수에 유의하십시오).

(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동안 할 수있는 것처럼 즉시 변경 하는 것이 좋을 것 입니다. 그러나 불행히도 모드 맵이 있습니다. isearchM-cquery-replace
Kaushal Modi

2
@kaushalmodi : 일반적으로 키 바인딩을 query-replace-map: (defun toggle-case () (interactive) (setq case-fold-search (not case-fold-search)))과에 추가하는 것만 큼 간단 (define-key query-replace-map "C" 'toggle-case)합니다. 그러나 해당 맵에서 키 처리는에 하드 코딩되어 perform-replace있습니다. 당신은 할 수 있습니다 M-x report-emacs-bug는 얻을 perform-replace더 개방형으로 코드를, 그래서 키를지도에 추가 할 수 있습니다. 최소한 키에 바인딩 된 cmd를 호출하는 대체 절이 있어야합니다.
Drew

감사! 내가 왜 찾지 못했는지 모르겠습니다 query-replace-map.
Kaushal Modi

1
지금 버그 보고서를 제출했습니다 (# 20687 ). 해결책은 해당 버그 보고서 에 있습니다.에 정의한 키를 호출 perform-replace하는 추가 cond절 을 추가하도록 수정 하십시오 query-replace-map. catch-all t절 바로 앞에 새 절을 넣습니다 . 이것은 새로운 조항 (def (call-interactively def))입니다. 더 간단 할 수 없습니다.
Drew

(customize-set-variable case-fold-search nil)오류를 제공합니다 customize-set-variable: Attempt to set a constant symbol: nil. 또한 둘 다 시도 (setq case-fold-search nil)(setq case-replace nil)하지만 쿼리는 여전히 대문자 V. 일치
이름
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.