2012-12-21 1 views
1

vim에서 파이썬 파일을로드한다고 가정 해 보겠습니다. :scriptnames의 빠른 검사는 내 ~/.vim/ftplugin/python/python.vim 파일이 예상대로로드됨을 보여줍니다. 이 파일의 명령 중 하나는 80 번째 열을 지나는 모든 문자를 강조 표시합니다. 이제 다른 버퍼 (따라서 ~/.vim/ftplugin/cpp/cpp.vim을 실행 중)에서 C++ 파일을 열어 보겠습니다. 새 명령이 실행 되더라도 python.vim의 설정은 계속 적용됩니다. 따라서 문자는 내 C++ 파일의 80 번째 열을 지나서 강조 표시됩니다.vim에서 누적 파일 형식 명령을 사용하지 않으려면 어떻게해야합니까?

이와 같이 누적되지 않는 filetype 명령을 만들 수 있습니까? 내 .vimrcfiletype plugin indent on이 있습니다.

답변

3

문제는 'colorcolumn':match (새 설정 또는 이전 하이라이트 방식을 사용할지 여부를 지정하지 않은) 모두 창 로컬 있다는 것입니다,하지만 ftplugins은 버퍼 지역 설정을 설정해야합니다.

왜 이러한 설정은 윈도우 로컬입니까? 따라서 동일한 버퍼를 두 개의 창 (하나는 강조 표시하지 않고 하나)에 표시 할 수 있습니다.

이 문제를 방지하려면 어떻게해야합니까?

a) ftplugin에서 설정하지 말고 대신 매핑을 사용하여 색상 표를 켜고 끕니다.

b) 사용중인 모든 파일 유형에 대해 :setlocal nocolorcolumn을 모든 ftplugin 스크립트 (예 : ~/.vim/after/ftplugin/*.vim)에 넣으십시오. 동일한 창에서 다른 파일 형식으로 전환하지 않으면이 기능이 작동합니다.

C)이 문제를 해결하기위한) 올바른 (하지만 가장 복잡한 방법은 BufWinEnter, BufWinLeaveWinLeave 이벤트에 대한 :autocmd의 몇하는 것입니다.

+0

다른 명령의 경우입니까? 예를 들어 글꼴을 설정하거나 SuperTab에서 기본 완료 유형을 변경하는 것과 같은 플러그인 관련 명령을 설정합니다. 기본적으로 모든 파일 형식에 대해 하나의 명령 목록을 갖기를 원하며 특정 파일 형식을 현재 표시하고있는 버퍼에만 적용되는 명령 목록을 원합니다. 당신의 제안이 최선의 방법인가요? 그렇다면 좀 더 자세히 설명해 주시겠습니까? 감사. – kamek

+1

설정에 따라 다릅니다. 체크 아웃': help 'settingname'', 거기에 _local ~ ... 힌트가 있습니다. 플러그인 관련 명령의 경우 대개 전역 적입니다. 자신의 설정에서 사용되는 변수의 범위를 볼 수 있습니다 :'g : ... '는 전역 변수이고,'b :'는 버퍼 로컬 변수입니다. –

+0

감사합니다. 내가 설정하고있는 명령의 영향을받는 범위를 조사하고 제안 사항을 기반으로 변경합니다. – kamek

관련 문제