낙타로 된 이름을 변환하여 emacs에서 밑줄을 사용하는 방법이 있습니까?


8

예를 들어 "CamelCasedName"을 "camel_cased_name"으로 변환하고 싶습니다. 이맥스에서 이것을 할 수있는 방법이 있습니까?


4
"emacs에서 _____하는 방법이 있습니까?"라는 형식의 질문에 대한 짧은 대답 항상 "예"
Brian Postow

답변:


4

페이지 의이 작은 코드 는 래퍼 함수와 밑줄로 하이픈을 밑줄로 바꾸는 명령으로 쉽게 변환 할 수 있습니다. (가장 적합한 캡을 취급하는지 확인하십시오) :

문자열을 캐시 해제하기위한 EmacsLisp 코드 샘플 ( http://www.friendsnippets.com/snippet/101/ ) :

(defun un-camelcase-string (s &optional sep start)
  "Convert CamelCase string S to lower case with word separator SEP.
Default for SEP is a hyphen \"-\".

If third argument START is non-nil, convert words after that
index in STRING."
  (let ((case-fold-search nil))
    (while (string-match "[A-Z]" s (or start 1))
      (setq s (replace-match (concat (or sep "-") 
                                             (downcase (match-string 0 s))) 
                                     t nil s)))
    (downcase s)))



2

표시 목적으로 만 다음을 사용할 수 있습니다.

M-x glasses-mode

실제로 텍스트를 변환하는 스크립트를 원한다면 elisp를 작성해야한다고 생각합니다. 이 질문은 스택 오버플로에서 더 잘 묻습니다.


2

쿼리 대체 regexp 로 전체 파일 에서이 작업을 신속하게 수행 할 수있었습니다 .

검색 패턴은 \([a-z]+\)\([A-Z]\)\([a-z]+\)이고 교체는 \1_\,(downcase \2)\3입니다.

대체 패턴은 패턴에서 바로 elisp를 사용합니다. 이맥스 22 이상이 필요합니다.

emacs 문서 스타일에서 :

M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.