2014-01-11 2 views
0

emacs 또는 IDE (MS/Mono/Sun Studio 등)를 사용하여 구조체 멤버의 이름과 모든 사용법을 바꿀 수 있습니까? 연산자)를 파일에 저장 하시겠습니까? 예를 들어 나는struct 멤버의 이름과 파일의 모든 사용법을 바꿉니다.

struct foo { int a_1, int int b_2; //etc } 

을 그리고 나는 이런 식으로 구조체를 변경합니다

struct foo { struct { int a_1, int b_2; } v; //etc } 

을 그리고 소스 struct foo의 코드 또는 struct foo* 유형 f->a_1 또는 f.a_1f->b_2 또는 f.b_2의 많은 것을 지금 거기 I 컴파일러에 대체 할 필요가 v 구조체에서 찾으십시오 : 대신 f.v->a_1. 내가 어떻게 할 수 있니?

Regexp는 다른 솔루션이 수동으로 수행하는 경우 할 수있는 추한 솔루션이지만 가능한 너무 구조체의 유형과 일치해야하기 때문에 가능하지 않습니다. 따라서 C 타입에 대해 알고있는 텍스트 편집기/IDE를 수행 할 필요가 있습니다. 이맥스로이 일을하는 법을 모르지만 IDE로 할 수 있다면 제발 말해줘.

+1

나는 이것에 대해 전문가가 아니지만 이맥스로 질의 - 바꾸기 만하면 '-> a_1'을'.v-> a_1'로,'.a_1'을'.v.a_1'로 바꿀 수 없다. ? 리터럴 문자열 교체 같네요, 안 그래요? – Drew

+2

어쩌면 이것이 도움이 될 것입니다 :'semantic-mode','Development-> Navigate Tags-> Find Tag References'. 태그를 검색하십시오. 'Symref' 버퍼가 열립니다. 거기에서 태그의 이름을 바꿀 수 있습니다. 'Symref-> 모든 엔트리 확장','열린 히트에서 심볼의 이름 바꾸기'. – Tobias

+0

@Drew : 문제는 교체 될 동일한 이름의 다른 유형의 구조체 멤버가 있다는 것입니다. 하지만 내가 원하는 구조체 유형이 아닌 것입니다. –

답변

1

당신은 RTags의 이맥스 플러그인이 작업을 수행 할 수 있습니다

https://github.com/Andersbakken/rtags/

rtags-rename-symbol (기본값 바인딩 : CX r에 R를)

면책 조항 :

나는 그것이 매우 작동 발견 글쎄,하지만 매크로 이름 바꾸기 및 무거운 templated C++ 코드 문제가있었습니다 (이들은 이미 고칠 수 있습니다. ed 최신 버전).

또한 한 파일에서 여러 파일에 걸쳐 심볼의 이름을 바꿀 수 있으므로 (compile_commands.json 프로젝트를 사용하는 경우), 코드를 테스트하기 전에 변경 사항을 숨기거나 저장하십시오.

+0

나는 그것을 시험해 본다. 감사. –