Vim이 .vimrc를 수동으로 소싱한 후에만 하이라이트 구성을 활성화하는 이유는 무엇입니까?

Vim이 .vimrc를 수동으로 소싱한 후에만 하이라이트 구성을 활성화하는 이유는 무엇입니까?

나는 내 것을 청소하고 있었다vimrc오늘은 관리하기 쉽도록 별도의 파일로 분할했습니다. 이러한 변경이 완료되면 후행 공백 강조 표시를 제외하고 모든 구성, 매핑 및 플러그인이 작동하는 것처럼 보입니다.

.vim/rc/appearance.vim에 다음 줄이 있습니다:

highlight RedundantSpaces term=standout ctermbg=red guibg=red
match RedundantSpaces /\s\+$\| \+\ze\t/ "\ze sets end of match so only spaces highlighted

내가 이해하는 바에 따르면 첫 번째 줄은 하이라이트 그룹 'RedundantSpaces'를 생성하고 컬러 터미널에서 하이라이트 그룹과 일치하는 모든 텍스트의 배경을 빨간색으로 만들도록 vim에 지시합니다. 두 번째 줄은 강조 표시 그룹과 일치하는 텍스트를 식별하는 데 사용되는 패턴을 정의합니다.

vim에서 파일을 열고 빈 줄에 공백을 입력하기 시작하면 빨간색으로 강조 표시되지 않습니다. 을 실행하면 :source ~/.vimrc강조 표시가 나타납니다.

rc/*.vim모든 개별 파일을 소싱하는 줄을 제거하고 .vimrc위의 두 RedundantSpaces줄을 .vimrc직접 넣으면 vim은 예상대로 작동하고 후행 공백이 강조 표시됩니다.

그러나 소싱 줄을 그대로 두고 my 끝에 줄을 rc/*.vim두면 (즉 해당 명령이 vim이 호출될 때 마지막으로 실행되는 명령임) 강조 표시가 여전히 작동하지 않으므로 .RedundantSpaces.vimrcsource ~/.vimrc

내 파일의 어떤 항목이 강조 구성과 제대로 상호 작용하지 않는 것이 분명해 보이지만 rc/*.vim그것이 무엇인지 설명하기가 어렵습니다. 해당 파일의 어떤 항목도 하이라이트 구성과 상호 작용해서는 안 됩니다.

여기서 무엇이 잘못될 수 있는지 제안할 수 있는 사람이 있나요?

답변1

이 문제는 다음으로 인해 발생합니다.합리적인 플러그인:라인 93.:help t_Co

" Allow color schemes to do bright colors without forcing bold.
if &t_Co == 8 && $TERM !~# '^linux'
  set t_Co=16  " << --- Causes hickup
endif

자세한 로그 모드( )에서 vim을 실행 vim -V15load_log.vim하고 검색하면 t_Co=실제로 구문 분석된 RedundantSpaces것을 볼 수 있습니다.sensible~ 후에당신의 appearance.vim파일.

빠른 수정은 코드의 해당 섹션을 주석 처리하고 에 추가하는 것입니다 .vimrc. 하지만 git 저장소에 연결하면 원하는 것이 아닐 수도 있습니다.

다른 접근 방식은 해당 항목을 디렉토리 밖으로 이동하여 에 bundle별도의 줄로 추가하는 것 입니다 .sourcevimrc~ 전에당신의 글로브 루프.

즉:

  source ~/.vim/hacks/vim-sensible/plugin/sensible.vim

  for f in split(glob ...

또 다른 방법은 BufLoad에 사용자 정의 강조 표시를 로드하는 것입니다.

등. …

답변2

NeoBundle을 사용하고 를 사용하는 경우 vimrc가 끝나면 트릭을 수행합니다 NeoBundleLazy 'tpope/vim-sensible'. NeoBundleSource또한 참조하십시오https://github.com/tpope/vim-sensible/issues/74.

관련 정보