emacs에서 프로젝트를 리팩토링하려면 어떻게해야합니까?


15

오픈 소스 프로젝트의 일부를 다시 작성하고 싶습니다. 여기에는 이름 바꾸기 방법이 포함됩니다. 전체 프로젝트에서 emacs로 어떻게 효율적으로 할 수 있습니까?

모든 버퍼에서 검색 및 바꾸기와 같은 해킹을 사용하지 않습니다.


1
어느 언어?
phils

ag / grep + wgrep + 검색 / 바꾸기를 보셨습니까? 그 안에 버퍼를 개별적으로 열지 않습니다. 관련 : emacs.stackexchange.com/a/243/115
Kaushal Modi

파이썬. 내 질문이 최고가 아니라는 것을 알고 있습니다. 죄송합니다.
The Unfun Cat

이 질문이 맨 위에 부딪 혔으므로 (누구든지 Google의 문제가 발생하는 경우) Rope라는 리팩토링을위한 전용 Python 라이브러리가 있습니다. 컨텍스트를 고려할 때 제공되는 다른 솔루션보다 더 지능적입니다. Emacs에서라는 패키지로 구현됩니다 ropemacs.
jcaw

@TheUnfunCat 질문에 컨텍스트를 더 추가 할 수 있습니까? 현재로서는 꽤 모호합니다. 파이썬 프로젝트 에서이 작업을 수행하고 싶다는 것을 추가하면 많은 것들이 사라질 것입니다.
DoMiNeLa10

답변:


14

이제 helm-ag함수 이름의 모든 인스턴스를 찾고 (오픈 버퍼가 아닌 하위 디렉토리를 포함한 모든 파일에서 검색) C-c C-e모든 일치 항목을 나열하는 버퍼를 입력하고 함수 이름을 변경합니다. 완료되면을 눌러 C-c C-c (helm-ag--edit-commit)열린 모든 파일의 변경 사항을 저장합니다.

혼란 스럽지만 https://github.com/ShingoFukuyama/helm-swoop 를 참조 하십시오

당신이 그것을 찌를 때 당신은 그러한 훌륭한 기능이 존재하는 기쁨의 눈물을 울 것이다.


1
그것은 내 뺨을 찢어 버렸다.
mihai

1
이 워크 플로를 처음 실행할 때 말 그대로 눈물이났습니다. 농담은 없습니다.
Paul

훌륭한 솔루션!
fraxture

6

언어를 지정하지 않았으므로“검색 및 바꾸기”보다 더 나은 답변을 제공하기가 어렵습니다.

wgrep 사용

기호의 모든 인스턴스를 다른 대화식으로 (대화식으로) 바꾸려면 wgrep이 가장 좋습니다. grep 결과 버퍼를 대화식으로 편집 할 수 있습니다.

  1. 마십시오 M-x package-install RET wgrep.
  2. 를 실행하십시오 M-x rgrep. 몇 가지 쉬운 질문을 한 다음, 지정한 디렉토리 내에서 검색어를 재귀 적으로 검색하십시오.
  3. 결과 버퍼로 전환하고 수행하십시오 M-x wgrep-change-to-wgrep-mode. 이 버퍼는 이제 편집 가능합니다. 여기에서 변경 한 내용은 파일 자체에 반영됩니다.
  4. 이 버퍼에서 a replace-regexp또는 a query-replace-regexp를 실행 하여 리팩토링을 수행하십시오.
  5. M-x wgrep-save-all-buffers및로 수정 사항을 완료하십시오 M-x wgrep-finish-edit.


3

counsel-rg다음에 C-c C-o버퍼를 사용하여 버퍼의 모든 후보 목록을 가져올 수 있습니다 . w로 편집하려면를 누르십시오 wgrep. iedit심볼 이름 바꾸기를 권장 합니다. C-c C-c커밋하려면 누릅니다 .

종속성 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.