ESS에서 R 코드를 리팩토링 할 수 있는지 알고 싶습니다. 이맥스에서 검색과 바꾸기를 사용하는 것은 좋은 대안이 아닌 것 같다.ESS/R을 사용하여 R 코드 리팩토링
답변
ESS 자체는 리팩터링을위한 기능을 제공하지 않습니다. 대신 이맥스 기능을 사용할 수 있습니다.
다음은 프로젝트 디렉토리의 열려있는 모든 R 파일에서 "xxx"로 시작하고 "yyy"로 끝나는 단어를 "zzzzzz"로 바꾸는 방법의 예입니다.
CX의 D (dired 입력)
% 미스터 $ (막 R 또는 R로 끝나는 모든 파일)
- Q
- 형 (
dired-to-query-replace-regexp
입력) xxx. * zzz 및 zzzzzz w 암탉은 대체 패턴을 물었습니다. - 는
Here N 여러 파일에서 검색-교체하는 방법의 전체 튜토리얼, Y로 건너 뛰 동의합니다. 및 모든 수정 된 버퍼를 ibuffer
으로 저장하는 방법에 대해서도 설명합니다.
좋은 IDE에서 리팩터링하는 것은 텍스트 찾기 및 바꾸기보다 훨씬 정교합니다. 예를 들어'Foo' 클래스의 메소드 이름을'value'에서'getValue'로 변경할 수 있습니다.'Foo.value'가 호출 된 모든 인스턴스를 찾을 수 있습니다 ('Foo'의 서브 클래스를 올바르게 처리합니다). 이름을' Foo.getValue', 관련없는 장소에서'value' 문자열을 건드리지 않아도됩니다.IDE는 이것이 가능하도록 코드를 완전히 이해해야합니다. –
이맥스에서는 검색을 M-%
으로 바꾼 다음 !
을 사용하면 현재 버퍼의 모든 인스턴스가 바뀝니다.
만약 당신이 원하지 않는다면, 당신은 Statet의 기능과 정확히 당신이 Emacs + ESS에서하고 싶은 것을 설명 할 수 있습니까?
정확하게 달성하기를 원하십니까? 예제를 제공해 줄 수 있습니까? –
변수 이름 바꾸기. 이것은 일식의 statet 플러그인으로 쉽게 할 수 있지만 ess에서는 불가능합니다. – ggg
Eclipse에서의 AFAIK 리팩토링은 Emacs의 리팩토링보다 훨씬 앞서 있습니다. 일반적으로 Eclipse는 언어를 이해하지만 Emacs (일종의)는 구문 (종류)을 이해합니다. 하지만 어떤 이유로 나는 여전히 자바를 제외한 모든 것에 이맥스를 사용한다. –