문제

C 또는 C ++ 코드에서 Refactoring을 수행하기 위해 VIM에 플러그인 또는 내장 방법이 있습니까?

특히 새로운 방법의 매개 변수를 결정하고 일반적으로 반환 값으로 사용하는 변수를 추측하는 Eclipse의 추출 방법 리팩토링 도구에 특히 관심이 있습니다.

도움이 되었습니까?

해결책

아니요, VIM은 편집하기에 좋은 환경이며, 많은 방식으로 사용자 정의 할 수 있지만 (코드 접이식, 구문 색칠, 거시적 확장 등) 대부분은 시맨틱 레벨이 아닌 구문 수준에서 수행됩니다. 코드 폴딩조차도 반대 브레이스와 일치합니다.

적절한 리팩토링을하려면 AST, 어떤 변수가 어떤 범위에 선언되는지 등에 대한 많은 의미 론적 지식이 있어야합니다. Eclipse와 같은 IDE는 각 어휘 스코프에 정의 된 변수의 캐시를 구축하여 이름을 바꿀 내용과 위치를 결정하는 데 사용되는 위치를 빠르게 참조 할 수 있습니다.

그것은 당신이 구문 적으로 어떤 일을 할 수 없다고 말하는 것이 아닙니다. 결국, 코드 블록을 꺼내어 별도의 기능으로 쉽게 넣을 수 있습니다. 일부 매개 변수를 추측 할 수있을 수도 있습니다 (예 : 변수 목록을 찾아서 로컬 선언이있는 변수를 찾아서 제거하고 남은 것이 매개 변수입니다. 그러나 Eclipse는 변수가 있는지 여부를 파악하는 것과 같은 다른 작업도 수행합니다. 함수에서 수정되어 반환 값으로 다시 전달되도록 보장합니다. 또한 예외를 예외로 확인하고 목록에 추가합니다.

순 효과는 VIM에서 이들 중 일부를 근사화 할 수 있지만 VIM 전용 환경 에서이 작업을 수행 할 수 없다는 것입니다. Eclipse에서 Vim과 같은 키 바인딩을 사용하거나 eclim. 홈페이지에서 :

Eclim의 주요 목표는 ECLIPSE 기능을 VIM 편집기에 가져 오는 것입니다. 초기 목표는 VIM에서 Eclipse의 Java 기능을 제공하는 것이었지만 다양한 다른 언어 (C/C ++, PHP, Python, Ruby, CSS, HTML, XML 등)에 대한 지원이 추가되었으며 몇 가지가 더 계획되었습니다.

Eclim은 응용 프로그램이 적고 두 가지 훌륭한 프로젝트의 통합이 더 많습니다. 첫 번째 Vim은 아마도 존재하는 최고의 텍스트 편집자 중 하나입니다. 두 번째 인 Eclipse는 다양한 언어로 개발을위한 훌륭한 도구를 제공합니다. 각각은 개발자 생산성을 높일 수있는 많은 기능을 제공하지만 둘 다 여전히 원하는 것을 남겨두고 있습니다. VIM에는 기본 Java 지원과 Eclipse에서 사용할 수있는 많은 고급 기능이 부족합니다. 반면에 Eclipse는 여전히 많은 것들에 마우스를 사용해야하며 VIM과 비교할 때 텍스트를 편집하기위한 이상적인 인터페이스를 제공합니다.

그것이 Eclim이 시작되는 곳입니다. Eclim은 VIM 또는 VIM 편집기에 IDE를 작성하려고 시도하는 대신 서버 인터페이스를 통해 Eclipse 기능을 노출시키는 ECLIPSE 플러그인과 해당 인터페이스를 통해 Eclipse와 통신하는 VIM 플러그인 세트를 제공합니다.

이것은 일식과 같은 환경을 제공 할뿐만 아니라 IT를 제공합니다 ~이다 식. 그러나 여전히 VIM의 탐색 및 텍스트 편집 기능을 얻을 수 있습니다. 문서는 리팩토링 지원 추출 방법 기능을 제공한다는 것을 나타내지 않습니다.

다른 팁

나는 제네릭을 썼다 리팩토링 플러그인. C ++는 처리 된 주요 언어 중 하나입니다 (직장에서의 기본 언어이므로). 방법 추출이 지원됩니다.

C ++의 경우 플러그인은 (CTAGS 덕분에) 추출 된 기능에서 들어오고 나오는 변수의 대부분을 대부분 추론 할 수 있습니다 (그러나 항상 CTAGS 덕분에). In/Out 변수가 교환되는 방법을 선택하려면 약간의 대화 상자를 작성해야합니다 (Const Ref, RValue Ref, Copy, Pointer, Tuples, Struct 등). (BTW, Guis가 내 일이 아니기 때문에 도움을 환영합니다 ^^ ').

C ++에 대한 리팩토링으로 VIM을 위해 높고 낮은 검색을 한 후, 이것이 제가 생각해 낸 최상의 솔루션입니다.

  • Visual Studio 2013 이상 - C ++ 개발 및 디버깅을위한 훌륭한 IDE이지만 충분한 리팩토링 또는 VIM이 없습니다.
  • VSVIM 플러그인 설치 - 이제 모든 VIM 탐색, 검색, 문자열 교체 등이 있습니다 (일부 고급 기능은 지원되지 않음).
  • Resharp C ++를 설치하십시오 - 속도 비용으로 리팩토링에 적합합니다. 그것은 약간 어리석은 일이지만 자동 생성 메소드/변수를 추론하려면 로컬/글로벌/메소드 변수 또는 기능의 이름을 바꾸고 솔루션의 사용법을 검색하고 더 많은 기능을 제공하면 그만한 가치가 있습니다.

이것은 C ++ 개발, 디버깅 및 리팩토링을 위해 찾은 최고의 조합입니다. 적어도 3 배 -5 배 더 빨리 만듭니다. 그것이 당신에게도 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top