vim 스크립트: "put="을 추가로 변경하는 방법은 무엇입니까?

vim 스크립트: "put="을 추가로 변경하는 방법은 무엇입니까?

주석을 삽입하는 방식이 마음에 들지 않기 때문에 c-vim 플러그인을 해킹하려고 합니다. 나는 이것을 원한다:

/* comment */

하지만 그것은 나에게 다음을 제공합니다:

/* comment
 */

분명 이유가 있을 텐데 마음에 들지 않습니다. 그래서 c.vim 파일을 조사하다가 다음을 발견했습니다.

function! C_CodeComment( mode, style )
   if a:mode=="a"
     if a:style == 'yes'
       silent exe ":s#^#/\* #"
       silent put = ' */'
     else
       silent exe ":s#^#//#"
     endif
   endif
   if a:mode=="v"
     if a:style == 'yes'
       silent exe ":'<,'>s/^/ \* /"
       silent exe ":'< s'^ '\/'"
       silent exe ":'>"
       silent put = ' */'
     else
       silent exe ":'<,'>s#^#//#"
     endif
   endif
 endfunction

이 진술에 대한 문서를 찾을 수 없으며 vim이 주석의 마지막 줄에 put =추가되도록 변경해야 한다고 확신합니다 . */누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

답변1

C_CodeComment이 함수는 최신 버전의 Vim과 함께 제공되는 어떤 파일에도 정의되어 있지 않습니다. 검색해 보니 사용하고 계시는 것 같더라구요Fritz Mehner의 C/C++ 플러그인. 그것은 제공합니다C/C++>논평>코드->설명/* */메뉴 항목(및 \c*지도 1C_CodeComment )을 사용합니다.

이 명령은 put = ' */'새 줄을 추가합니다(참조::help :put) 내용이 포함되어 있습니다특별 등록=, 단지 다음과 같이 평가합니다.Vim 표현. 여기에 사용된 특정 표현식은 단순한 세 개의 문자열(공백, 별표, 슬래시)입니다.

다음과 같은 줄을 추가하여 마지막 줄 2*/ 의 끝에 정렬할 수 있습니다 .

silent normal kJ^

silent put = ' */'라인 뒤에 . 마지막 주석 줄( )까지 이동하여 줄( ) k과 결합한 다음 커서를 해당 줄의 공백이 아닌 첫 번째 문자( )로 이동합니다 . 매핑 1 자체는 커서를 다음 줄로 이동하는 것으로 구성됩니다. 새 댓글 영역 한 줄 .*/J^\coj

그러나C_RemoveCComment이것은 함수의 가정을 깨뜨릴 것입니다("inverse" 함수에서 사용됨 C_CommentCode): */줄의 시작 부분(선택적 공백 뒤)을 찾아서 처리할 것으로 예상합니다.
한번도 사용하지 않는다면C/C++>논평>댓글->코드메뉴 항목 또는 \co매핑 1을 사용하면 이 플러그인의 주석 해제 기능을 사용하지 못할 수도 있습니다.


1\ 매핑된 "리더"를 재정의하면 다를 수 있습니다.localmapleader.
2 (내 생각에는) 이로 인해 여러 줄 주석이 이상하게 보입니다(예: 주석 기능을 호출하기 전에 GUI 선택 또는 시각적 모드를 통해 여러 줄을 선택함).

가운데 두 행을 선택한 후,

    foo();
    bar();
    baz();
    quux();

~이 되다

    foo();
/*     bar();
 *     baz(); */
    quux();

이것은 이상한 스타일처럼 보입니다(일반적으로 *중간 행에 지시선을 사용하는 경우 시작 별표 /*, *지시선 및 */후행 별표가 같은 열에 위치합니다).

관련 정보