vim 플러그 인 확장 - codecomplete. vim 편

7993 단어 Vim
vim 플러그 인 확장 - codecomplete. vim 편
마 동 량 Loki)
한 사람의 전쟁 (戰 爭)http://blog.csdn.net/MDL13412)
플러그 인 프로필
        code_complete. vim 은 함수 인 자 를 보완 하고 코드 세 션 을 삽입 하 는 등 유 니 버 설 플러그 인 입 니 다.현재 플러그 인 작성 자 는 프로젝트 를 GitHub 로 이전 하여 위탁 관리 하고 있 습 니 다.
        다음 그림 은 공식 데모 입 니 다. (함수 매개 변수 보완 기능 은 ctags 와 함께 사용 해 야 합 니 다)
플러그 인 설치
        코드complete. vim 을 ~ /. vim / plugin 디 렉 터 리 로 복사 합 니 다.
        Ctags 를 이용 하여 tags 파일 을 생 성 합 니 다 (코드 디 렉 터 리 에서 실행 하고 현재 폴 더 를 재 귀적 으로 분석 합 니 다). 코드 는 다음 과 같 습 니 다.
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ .
        생 성 된 tags 파일 이름 을 xxx 로 변경 합 니 다.tags, ~ /. vim / tags 디 렉 터 리 에 복사 하여 ~ /. vimrc 에 다음 코드 를 추가 합 니 다.
set tags+=~/.vim/tags/xxx_tags

플러그 인 사용
        이 플러그 인 은 사용 이 매우 간단 합 니 다. 키 만 사용 하면 해당 하 는 기능 을 실행 할 수 있 습 니 다. 다음은 구체 적 인 용법 을 자세히 설명 하 겠 습 니 다.
        주석
        code_complete 플러그 인 은 두 가지 스타일 의 설명 을 제공 합 니 다. 하 나 는 / * 입 니 다. */형식의 표준 C 언어 주석, 다른 하 나 는 / * < */한 줄 뒤에 주석 을 달 수 있 는 문서 주석 형식의 Doxygen 스타일 입 니 다. (이 플러그 인 은 함수 문서 주석 을 자동 으로 생 성 하 는 기능 을 제공 하지 않 습 니 다. 이 기능 은 더 전문 적 인 플러그 인 DoxygenToolkit. vim 을 사용 하여 구현 할 수 있 습 니 다.)
        전처리 명령
        헤더 파일 포함
        C 언어 논리 구조
        주 함수
        namespace
        함수 매개 변수 보완
플러그 인 한계 성
        위의 프 리 젠 테 이 션 을 통 해 우 리 는 이 플러그 인의 한계점 을 발견 했다.
  • 자동 으로 보 완 된 코드 스타일 은 우리 가 사용 하 는 것 과 다르다.
  • if else 구조, switch 구조의 가 지 는 수 동 으로 지정 할 수 없습니다.
  • 사용자 정의 함수 가 있 을 때 함수 템 플 릿 을 사용 할 수 없습니다.

  • 플러그 인 확장
            사용자 정의 코드 스타일
            다음은 if else 구조 로 설명 합 니 다. 변경 되 지 않 은 코드 를 먼저 살 펴 보 겠 습 니 다.
    let g:template['c']['ife'] = "if( ".g:rs."...".g:re." )\{\".g:rs."...".g:re."\} else\{\".g:rs."...". g:re."\}"
            vim 에 있 는 스타일 을 살 펴 보 겠 습 니 다.
            if 의 괄호 에서 조건 식 과 괄호 사이 에 빈 칸 이 있 습 니 다. 이것 은 우리 의 스타일 과 일치 하지 않 습 니 다. 우 리 는 다음 코드 에 따라 변경 할 수 있 습 니 다.
    let g:template['c']['ife'] = "if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} else\{\".g:rs."...".g:re."\}"

           
    주: VimScript 에서 문자열 은 "또는" 형식의 문자열 로 사용 할 수 있 습 니 다. 연결 합 니 다. \ 키보드 의 리 턴 입 니 다. \ 문자열 에서 의 의 미 를 바 꾸 는 데 사 용 됩 니 다. vim 의 버튼 맵 을 보고 vim 에서 사용 합 니 다: help keycode 를 보십시오. let g: template ['c'] ['xxx'] 의 [xxx] 는 코드 보완 트리거 시퀀스 입 니 다.
            다른 논리 구조 에 대해 주로 빈 칸 과 우리 의 스타일 이 일치 하지 않 기 때문에 상기 원칙 에 따라 맞 춤 형 제작 을 할 수 있다.
            if else 구조 와 switch 구조 맞 춤 형
            다음 else 구 조 는 내 가 확장 한 플러그 인 을 보 여 줍 니 다. 코드 는 다음 과 같 습 니 다.
            확 장 된 if else 구조 에 대한 용법 은 다음 과 같 습 니 다.
                    ife[x]  삽입 모드 에서 ife 를 입력 하고 else if () 의 분기 개 수 를 연결 한 다음 버튼 을 누 르 면 펼 쳐 집 니 다.
            나 는 0 ~ 9 의 분기 상황 을 확장 했다. 다음은 0 ~ 3 의 코드 정 의 를 내 렸 다.
    let g:template['c']['ife0'] = "if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} else\{\".g:rs."...".
                \g:re."\}"
    let g:template['c']['ife1'] = "if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else\{\".g:rs."...".
                \g:re."\}"
    let g:template['c']['ife2'] = "if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else\{\".g:rs."...".
                \g:re."\}"
    let g:template['c']['ife3'] = "if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else if (".g:rs."...".g:re.")\{\".g:rs."...".g:re."\} ".
                \"else\{\".g:rs."...".
                \g:re."\}"

            프로 그래 밍 기반 이 있다 고 믿 는 독자 들 은 이미 규칙 을 알 아 보 았 다. 즉, else if 분기 가 몇 개 있 으 면 \ "else if (". g: rs. "..."....................................
            다음은 switch 의 프 리 젠 테 이 션 을 살 펴 보 겠 습 니 다.
            확 장 된 switch 구조 에 대한 용법 은 다음 과 같 습 니 다.
                    switch[x]  삽입 모드 에서 switch 를 입력 하고 뒤에 case 의 분기 개 수 를 연결 한 다음 버튼 을 누 르 면 펼 쳐 집 니 다.
            나 는 1 ~ 9 의 분기 상황 을 확장 했다. 다음은 0 ~ 3 의 코드 정 의 를 내 렸 다.
    let g:template['c']['switch1'] = "switch (".g:rs."...".g:re.")\{\case ".
                \g:rs."...".g:re.":\break;".
                \"\default:\break;\}"
    let g:template['c']['switch2'] = "switch (".g:rs."...".g:re.")\{\case ".
                \g:rs."...".g:re.":\break;".
                \"\case ".g:rs."...".g:re.":\break;".
                \"\default:\break;\}"
    let g:template['c']['switch3'] = "switch (".g:rs."...".g:re.")\{\case ".
                \g:rs."...".g:re.":\break;".
                \"\case ".g:rs."...".g:re.":\break;".
                \"\case ".g:rs."...".g:re.":\break;".
                \"\default:\break;\}"

            함수 템 플 릿
            다음은 확장 후의 효 과 를 살 펴 보 겠 습 니 다.
            예 를 들 어 함수 템 플 릿 을 사용 한 후에 우리 의 입력 횟수 와 커서 이동 횟수 를 줄 이 고 프로 그래 밍 효율 을 잘 향상 시 켰 음 을 알 수 있 습 니 다. 다음은 그 용법 을 소개 합 니 다.
                    f[x]  삽입 모드 에서 f 를 입력 하고 뒤에 함수 인자 의 개 수 를 연결 한 다음 버튼 을 누 르 면 펼 쳐 집 니 다.
            다음은 0 ~ 3 개의 인자 코드 를 드 립 니 다.
    let g:template['c']['f0']=g:rs."...".g:re."()\{\".g:rs."...".g:re."\}"
    let g:template['c']['f1']=g:rs."...".g:re."(".g:rs."...".g:re.")\{\".g:rs."...".g:re."\}"
    let g:template['c']['f2']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.")\{\".g:rs."...".g:re."\}"
    let g:template['c']['f3']=g:rs."...".g:re."(".g:rs."...".g:re.", ".g:rs."...".g:re.", ".g:rs."...".g:re.")\{\".g:rs."...".g:re."\}"

    총결산
            이 플러그 인 은 현재 C 언어 를 확 장 했 습 니 다. C + + 의 확장 이 완료 되 지 않 았 습 니 다. 확 장 된 플러그 인의 다운로드 주소:http://download.csdn.net/detail/mdl13412/4674025         이 플러그 인의 확장 은 어렵 지 않 습 니 다. 독자 들 은 자주 사용 하 는 코드 세 션 을 확장 하여 인 코딩 효율 을 높 일 수 있 습 니 다. 또한 프로그래머 가 사용 하 는 편집기 가 좋 은 확장 성 을 가 져 야 합 니 다: -)

    좋은 웹페이지 즐겨찾기