2010-06-05 4 views
5

ESS에서 R 코드를 리팩토링 할 수 있는지 알고 싶습니다. 이맥스에서 검색과 바꾸기를 사용하는 것은 좋은 대안이 아닌 것 같다.ESS/R을 사용하여 R 코드 리팩토링

+0

정확하게 달성하기를 원하십니까? 예제를 제공해 줄 수 있습니까? –

+1

변수 이름 바꾸기. 이것은 일식의 statet 플러그인으로 쉽게 할 수 있지만 ess에서는 불가능합니다. – ggg

+0

Eclipse에서의 AFAIK 리팩토링은 Emacs의 리팩토링보다 훨씬 앞서 있습니다. 일반적으로 Eclipse는 언어를 이해하지만 Emacs (일종의)는 구문 (종류)을 이해합니다. 하지만 어떤 이유로 나는 여전히 자바를 제외한 모든 것에 이맥스를 사용한다. –

답변

6

ESS 자체는 리팩터링을위한 기능을 제공하지 않습니다. 대신 이맥스 기능을 사용할 수 있습니다.

다음은 프로젝트 디렉토리의 열려있는 모든 R 파일에서 "xxx"로 시작하고 "yyy"로 끝나는 단어를 "zzzzzz"로 바꾸는 방법의 예입니다.

  • CX의 D (dired 입력)

  • % 미스터 $ (막 R 또는 R로 끝나는 모든 파일)

  • Q
  • 형 (dired-to-query-replace-regexp 입력) xxx. * zzzzzzzzz w 암탉은 대체 패턴을 물었습니다.

Here N 여러 파일에서 검색-교체하는 방법의 전체 튜토리얼, Y로 건너 뛰 동의합니다. 및 모든 수정 된 버퍼를 ibuffer으로 저장하는 방법에 대해서도 설명합니다.

+0

좋은 IDE에서 리팩터링하는 것은 텍스트 찾기 및 바꾸기보다 훨씬 정교합니다. 예를 들어'Foo' 클래스의 메소드 이름을'value'에서'getValue'로 변경할 수 있습니다.'Foo.value'가 호출 된 모든 인스턴스를 찾을 수 있습니다 ('Foo'의 서브 클래스를 올바르게 처리합니다). 이름을' Foo.getValue', 관련없는 장소에서'value' 문자열을 건드리지 않아도됩니다.IDE는 이것이 가능하도록 코드를 완전히 이해해야합니다. –

2

이맥스에서는 검색을 M-%으로 바꾼 다음 !을 사용하면 현재 버퍼의 모든 인스턴스가 바뀝니다.

만약 당신이 원하지 않는다면, 당신은 Statet의 기능과 정확히 당신이 Emacs + ESS에서하고 싶은 것을 설명 할 수 있습니까?