programing

Vim에서 C/C++ 리팩토링(예: Eclipse에서와 같은 방법 추출)

starjava 2023. 10. 29. 18:56
반응형

Vim에서 C/C++ 리팩토링(예: Eclipse에서와 같은 방법 추출)

Vim에서 이클립스의 리팩토링 도구와 같이 C 또는 C++ 코드에 리팩토링을 수행하는 플러그인이나 내장된 방법이 있습니까?

저는 특히 이클립스의 추출 방법 리팩토링 도구가 마음에 듭니다. 이는 새로운 방법을 통해 매개 변수를 결정하고 일반적으로 반환 값으로 사용할 변수를 추측하는 것입니다.

아니요, Vim은 편집하기 좋은 환경이고 여러 가지 방법(코드 폴딩, 구문 색칠, 매크로 확장 등)으로 사용자 지정할 수 있지만 대부분의 작업은 의미 수준이 아닌 구문 수준에서 수행됩니다.심지어 코드 폴딩도 서로 반대되는 교정기와 일치합니다.

리팩토링을 제대로 하려면 AST에 대한 의미적 지식이 풍부해야 하고, 어떤 변수가 어떤 범위로 선언되는지 등이 필요합니다.Eclipse와 같은 IDE는 각 어휘 범위에 정의된 변수의 캐시를 구축하여 이름을 바꿀 것과 이름을 정할 때 사용되는 위치를 빠르게 참조할 수 있습니다.

어떤 것들을 통사적으로 할 수 없다는 것은 아닙니다. 결국, 한 사람은 코드 블록을 꺼내서 충분히 쉽게 별도의 기능에 넣을 수 있습니다.변수 목록 찾기, 로컬 선언을 가진 변수 찾기, 제거 및 남은 변수가 매개 변수임을 추측할 수도 있습니다.그러나 Eclipse는 함수에서 변수가 수정되었는지 여부를 파악하고 반환 값으로 다시 전달되도록 하는 등의 다른 작업도 수행합니다.또한 던져진 예외를 확인하고 목록에 추가합니다.

순 효과는 Vim에서 이 중 일부를 근사화할 수는 있지만 실제로 Vim 전용 환경에서는 이러한 작업을 수행할 수 없다는 것입니다.Eclipse에서 Vim-like 키 바인딩을 사용하거나 eclim을 볼 수 있습니다.홈 페이지에서:

eclim의 주요 목표는 Vim 편집기에 Eclipse 기능을 제공하는 것입니다.초기 목표는 vim에서 이클립스의 자바 기능을 제공하는 것이었지만, 다양한 다른 언어(c/c++, php, python, ruby, css, html, xml 등)에 대한 지원이 추가되었으며 몇 가지 더 계획되어 있습니다.

Eclim은 응용 프로그램이라기 보다는 두 개의 훌륭한 프로젝트를 통합한 것입니다.첫 번째 Vim은 현존하는 최고의 텍스트 편집자 중 한 명입니다.두 번째, 이클립스는 다양한 언어로 발전을 위한 많은 훌륭한 도구를 제공합니다.각각은 개발자 생산성을 높일 수 있는 많은 기능을 제공하지만, 둘 다 여전히 부족한 점이 있습니다.Vim은 네이티브 자바를 지원하지 않으며 이클립스에서 사용할 수 있는 많은 고급 기능이 없습니다.그러나 이클립스는 여전히 여러 가지 일에 마우스를 사용해야 하며 Vim과 비교할 때 텍스트 편집에 적합하지 않은 인터페이스를 제공합니다.

그것이 바로 에클림이 작용하는 곳입니다.eclim은 Vim이나 Eclipse의 Vim 편집기에 IDE를 기록하려고 하는 대신 서버 인터페이스를 통해 Eclipse 기능을 노출하는 Eclipse 플러그인과 해당 인터페이스를 통해 Eclipse와 통신하는 Vim 플러그인 집합을 제공합니다.

이것은 이클립스와 같은 환경을 제공할 뿐만 아니라, 이클립스입니다.하지만 vim의 탐색 기능과 텍스트 편집 기능은 여전히 있습니다.리팩토링 지원에 대한 설명서에 추출 방법 기능이 나와 있지는 않지만, 이는 사용자의 요구에 맞는 것처럼 들립니다.

일반 리팩토링 플러그인을 작성했습니다.C++는 주로 사용하는 언어 중 하나입니다(직장에서 사용하는 주요 언어이기 때문에).메서드 추출이 지원됩니다.

C++의 경우, 플러그인은 (ctags 덕분에) 추출된 함수에서 들어오고 나가는 변수의 대부분을 (그러나 불행하게도 모든 것은 아니지만) 추론할 수 있습니다.in/out 변수 교환 방법(constref, rvalue ref, copy, pointer, tuple, struct 등)을 선택하려면 아직 대화상자를 조금 작성해야 합니다(BTW, gui는 내 것이 아니므로 도움말을 환영합니다^^').

C++에 대한 리팩토링으로 vim에 대해 높고 낮음을 검색한 결과, 이것이 제가 생각해낸 최고의 솔루션입니다.

  • Visual Studio 2013 이상 - C++ 개발 및 디버깅을 위한 우수한 IDE이지만 Refactoring 또는 vim이 충분하지 않음
  • vsvim 플러그인 설치 - vim 탐색, 검색, 문자열 바꾸기 등의 모든 vim 탐색 기능이 있습니다(일부 고급 기능은 지원되지 않습니다).
  • Resharp C++ 설치 - 속도 비용으로 리팩토링에 적합합니다.이것은 약간 투박하게 만들지만 메소드/변수 자동 생성, 로컬/글로벌/메소드 변수 또는 함수 이름 변경, 솔루션에서 사용법 검색 및 기타 기능을 추론하고 싶다면 가치가 매우 높습니다.

이것은 C++ 개발, 디버깅, 리팩토링에 제가 찾은 최고의 조합입니다.적어도 3배 - 5배는 더 빨라집니다.당신에게도 도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/2470653/refactoring-c-c-in-vim-e-g-method-extraction-like-in-eclipse

반응형