@Malabarba는 wgrep
grep / ack / ag 결과 편집을위한 패키지 사용을 언급했습니다 .
ag
패키지와 wgrep-ag
패키지를 사용하여 multiple-cursors
패키지 를 사용하여 '응답 된 결과'를 편집 하는 방법에 대한 자세한 연습을 작성하고 싶습니다 .
이 패키지는 Melpa를 통해 제공됩니다. 또한 시스템에 ag
일명 the_silver_searcher가 설치되어 있어야합니다.
이 연습은 찾은 모든 / 선택된 위치에서 한 줄 편집을 수행하려는 방법에 적용됩니다 ag
.
ag
시스템과 위에 언급 된 emacs 패키지에 설치 하십시오.
ag
지정된 정규식과 일치하는 내용을 가진 파일 검색을 지원합니다. ag
프로젝트 루트 위치 를 알려주는 가장 간단한 방법 은 빈 .git
폴더를 저장하는 것입니다. 그런 다음을 사용하여 검색하십시오 M-x ag-project-regexp
.
ag 검색의 결과 버퍼는 기본적으로 편집 할 수 없습니다. 편집 가능하게하려면 -default binding을 M-x wgrep-change-to-wgrep-mode
사용하거나 사용하십시오 .wgrep
C-c C-p
이제 모든 파일에서 'abcdef'를 'ghijkl'로 변경해야하는 경우 'abcdef'를 검색하면 ag 결과 버퍼에 해당 문자열이 포함 된 모든 행이 표시됩니다. 그런 다음 해당 버퍼를 편집 가능하게 만들고 해당 문자열을 수동으로 변경하면 이러한 변경 사항은 M-x wgrep-finish-edit
기본 바인딩 수행 또는 사용시 실제 파일 버퍼에 반영됩니다 C-c C-e
. query-replace-regexp
해당 검색 바꾸기를 수행하는 데 사용할 수도 있습니다 .
multiple-cursors
여러 번의 편집 작업이 동시에 진행되는 위치에 대한 실시간 피드백을 볼 수 있도록 빠른 리팩토링을 사용 하는 것이 좋습니다. 해당 ag 결과 버퍼에서 바꾸려는 문자열을 강조 표시하고 M-x mc/mark-all-like-this
동시에 여러 지점에서 편집되는 내용을 보면서 경외감을 편집하십시오.
위에서 언급했듯이 편집 C-c C-e
내용에 만족하면 실제 버퍼의 변경 사항을 "반영"합니다. 버퍼가 아직 저장되지 않았습니다.
모든 버퍼를 저장하기 위해 보통 emacs 기본 C-x s !
바인딩을 사용하여 한 번에 처리 합니다.
다음은 스크린 샷과 함께 사용 사례의 예입니다.
그것은 모든 인스턴스를 교체하는 과정을 보여줍니다 bind-to-modi-map
에 bind-to-my-map
내에서가 ~/.emacs.d/
.
bind-to-modi-map
emacs 설정 폴더에서 검색 하면 아래의 'ag'ged 결과가 나타납니다.
이 버퍼는 읽기 전용입니다.
후에 M-x wgrep-change-to-wgrep-mode
내가 강조,, -modi-map
, 사용하여 해당 선택의 모든 인스턴스를 선택 M-x mc/mark-all-like-this
하고 그 선택을 편집 한 후를 -my-map
, 그것은 다음과 같이 보입니다 :
파란색 강조 표시는을 누를 때 수정 될 행을 나타냅니다 C-c C-e
.
타격에 C-c C-e
,이 스크린 샷에있는 실제 파일에 반영 변화를 볼 수 있습니다
그런 다음를 사용하여 수정 된 모든 파일을 저장합니다 C-x s !
.