문제

나는 켰다 filetype plugin 일부 Rails vim 플러그인에 대해 내가 추가했지만 이로 인한 부작용으로 이제 모든 파일 형식에서 자동 주석 기능이 활성화된 것 같습니다(예를 들어 다음과 같이 줄을 시작하면 #, 다음 줄 중 하나 입력하다 삽입 모드에서 또는 영형, 등.삽입 모드로 들어가려면 #).

나는 찾았다 가이드 자동 댓글 기능을 비활성화하려면 formatoptions, 내 .vimrc에 다음을 추가했습니다.

au FileType * setlocal formatoptions-=cro

하지만 명시적으로 명시하지 않는 한 여전히 문제에 직면해 있습니다. :source .vimrc, (또는 setlocal ... 직접) 적용되지 않습니다.vim의 ftplugins가 내 옵션을 자신의 옵션으로 재정의하기 때문에 이것이 사실이라고 판단했습니다.

그런 다음 나는 두 번째 가이드 ftplugin 스크립트가 실행된 후 변경하기 위해 after ftplugin 스크립트를 사용하는 방법에 대해 설명합니다. 그러나 그들의 해결책은 ~/.vim/after/ftplugin의 모든 단일 파일 유형에 대해 중앙 파일에 대한 심볼릭 링크를 생성하는 것입니다. 나.

일반적인 after-ftplugin 스크립트를 생성할 수 있는 방법이 있습니까? 아니면 이 문제에 잘못 접근하고 있습니까?어떤 도움이라도 주시면 감사하겠습니다.

도움이 되었습니까?

해결책

"After" 플러그인은 어떻습니까?다음 위치에서 파일을 생성하세요. ~/.vim/after/plugin/ ~라고 불리는 noAutoComments.vim (또는 무엇이든) 거기에 autocmd를 넣으시겠습니까?

편집하다:

이것이 작동하는 이유는 무엇입니까?나는 단지 추측일 뿐이지만, autocmd 에서 ~/.vimrc 파일이 다른 파일에 의해 제거되고 있습니다(그러나 "이후" 파일이 소스로 제공되기 전).

나는 결국 내 것을 제거했다 ~/.vim 디렉토리를 교체하고 내 ~/.vimrc 다음 3줄로:

filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro

내 안에 이 줄만 있으면 ~/.vimrc 그리고 아니 ~/.vim/ 디렉토리, autocmd 예상대로 작동하는 것 같습니다(Vim 7.1).

내가 편집하는 모든 파일의 경우:

:verbose set formatoptions?
formatoptions=ql
      Last set from ~/.vimrc

그러나 어떤 파일(플러그인)이 이 문제를 일으키는지 아직 확인하지 못했습니다.

다른 팁

좀 더 조사해 본 결과 내 위치가 autocmd 내 .vimrc 파일 내에서 다음을 결정합니다. formatoptions vim의 ftplugins에 의해 재정의되거나 그렇지 않을 것입니다.사용 vim --noplugin 모든 외부 플러그인을 비활성화하기 위해 다음 결과를 찾았습니다.

내 vimrc가 다음과 같다면:

au FileType * setl fo-=cro
filetype plugin indent on

결과 :verbose set fo? 이다:

formatoptions=croql
  Last set from /usr/share/vim/vim72/ftplugin/ruby.vim

그러나 내 vimrc의 행이 반대인 경우:

filetype plugin indent on
au FileType * setl fo-=cro

결과 :verbose set fo? 이다:

formatoptions=ql
  Last set from ~/.vimrc

...이는 원하는 결과입니다.그래서 그것은 것 같습니다 autocmd 파일 형식 플러그인을 활성화한 후에 지정해야 합니다.

이것이 적용되지 않는 또 다른 이유는 다음과 같습니다.

에서 :he :set-=:

            When the option is a list of flags, {value} must be
            exactly as they appear in the option.  Remove flags
            one by one to avoid problems.

나는 가지고있다

    " Turn off auto-commenting
    au FileType * setlocal formatoptions-=c
    au FileType * setlocal formatoptions-=r
    au FileType * setlocal formatoptions-=o

내가 이런 일을 겪었기 때문이다.

다양한 중 하나를 사용하여 autocmd 올바른 옵션을 찾으면 구성 옵션을 설정하는 이벤트가 작동해야 하지만 먼저 다음을 실행하겠습니다.

:verbose set formatoptions?

이는 옵션이 설정된 위치를 알려주므로 사용할 autocmd를 더 쉽게 결정할 수 있습니다.또는 약간의 사소한 해킹이 마음에 들지 않는다면 플러그인에서 해당 해킹이 설정된 위치를 찾아 해당 줄을 주석 처리하고 업그레이드할 경우를 대비해 기록해 두는 방법을 사용했을 것입니다. 플러그인).또한 플러그인 작성자에게 연락하여 구성 가능한 옵션으로 만들어 달라고 요청할 수도 있습니다.

사용 가능한 경우 autocmd 이벤트, 다음 내용을 읽어보세요:

:help {event}

많은 사람들이 제안한 솔루션을 시도했지만 그 중 아무 것도 효과가 없었지만 ~/.bash_aliases에서 매우 간단한 해결 방법을 찾았습니다.

    # vim without auto comment
    alias vi="vi +'set fo-=cro'"

나는 이 문제로 어려움을 겪고 있었고 마침내 다음 줄을 사용하여 작업했습니다.

syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro

내 생각에 여기서 핵심은 autocmd 다음 장소이다 filetype plugin on.

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