2010-07-24 5 views
3

This blog post은 Vim을 svn diff과 함께 사용하는 간단한 방법을 제공합니다. 불행하게도, Vim은 왼쪽 사이드 파일 타입을 이해하지 못하므로 구문 강조가 없다. 가장 간단한 방법은 무엇입니까?vim과 함께 svn diff하지만 적절한 파일 유형

+1

왼쪽 파일의 파일 형식은 무엇입니까? vim.org에서 구문 파일을 찾을 수 있습니까? – michaelmichael

+0

스크린 샷? 또는 적어도 파일 이름? – Dummy00001

+0

는 예 : vimdiff는 vimdiff을 .svn/텍스트베이스/foo.php.svn베이스 foo.php은 그래서 당신이 볼 다음 명령으로 호출 된 것처럼 그것의, 정력은 좌 파일로의 파일 형식을 인식하지 못합니다 PHP는 다른 확장 때문에. – user400978

답변

3

기본적으로 .txt 접미사가있는 파일에서 재구성 된 텍스트를 사용하면 vim에서 텍스트를 강조 표시하지 않습니다. 그래서 이것을 파일 상단에 넣었습니다 :

.. vim: set filetype=rst : 

그리고 나서 vim은 모든 멋진 구문 강조 기능을 수행합니다.

파일의 첫 번째 행에 모델 라인을 추가 한 다음 diff를 수행 할 때 vim이 원하는대로 작동하는지 확인하십시오.

덧붙여 말하자면, 그것은 내 블로그에 링크 된 것입니다! 상금을받을 수 있을까요?

+0

Matthew에게도 감사합니다. "너무 많은 PHP"가 제공하는 솔루션은 물론 작동하지만 이것은 좋은 연습이며 파일 확장자와 별개라고 생각합니다. – user400978

0

"vim set filetype"에 대한 빠른 검색 결과는 .vimrc를 약간 변경하여이 작업을 "영원히"만드는 방법을 알려주는 this link입니다. 당신은 단 한 번에 파일로 붙어, 당신은 "올바른"파일 형식을 알고있는 경우 , 당신은 (왼쪽 파일에서) 시도 할 수 있습니다 : XXX이 적절한 형식이다

:set filetype=XXX 

(예를 들어, 파이썬, C 등)

:help filteype 

도 도움이 될 조금

+0

전 두렵습니다. 왼쪽 파일의 파일 유형은 입니다. 즉, 오른쪽 파일 이름에 따라 다릅니다. – user400978

+0

나는 당신이 무엇을 의미 하는지를 보았으나 왼손 쪽을 이해하기 위해 "vim의 손을 강요하라"는 제안은 다른 파일 형식이다. 나는이 않았다 에코 "수입 시간"> 1.py 에코 "수입 시간"> 왼쪽 된 handside이 입력에 지금 2.cpp : 설정 파일 형식 쇼 : 파일 형식 = 파이썬은 우측에 이 보여 : filetype = cpp 하지만 다음을 사용하여 rhs를 강제 할 수 있습니다. : set filetype = python 희망이 있습니다. –

0
에서

보고

마치 vimdiff가 다음 명령으로 호출 된 것 같습니다 vimdiff .svn/text-base/foo.php.svn-base foo.php 그래서 vim은 다른 확장자로 인해 lhs 파일의 filetype을 PHP로 인식하지 못합니다.

적절한 해결책이 없습니다. 나는 다른 시나리오에서이 같은 것을 사용하지만, 만 수정 구문 강조 :

au BufReadPost *.php.svn-base  set syntax=php 

당신은 또한 시도 할 수 있습니다 :

au FileType *.php.svn-base   set filetype=php 

하지만 :filetype을 가지고 나는 그것을 테스트 할 수 없습니다 사용할 수 없습니다. 파일 .php.svn-base의 파일 형식 검색을 덮어 쓰고 원하는 php에 매핑해야합니다. 'filetype''syntax' : :set filetype?:set syntax?이 예상 출력을 오버라이드했는지 확인했습니다.

8

~/.vim/filetype.vim에 다음 코드를 추가합니다 :

 
" only load filetypes once 
if exists("did_load_filetypes") 
    finish 
endif 

augroup filetypedetect 

" when BufRead or BufNewFile event is triggered, pop off the .svn-base extension and 
" manually restart filetype autocommands 
autocmd! BufRead *.svn-base execute 'doautocmd filetypedetect BufRead ' . expand('%:r') 
autocmd! BufNewFile *.svn-base execute 'doautocmd filetypedetect BufNewFile ' . expand('%:r') 

augroup END 

의견 상태,이 코드는 .svn-base 파일을 선택하고 파일 타입은 끝이 확장자가없는 것이 무엇인지 알아 내기 위해 노력할 것입니다.

 
:help new-filetype 
:help :doautocmd 
:help expand() 
+0

작동! 고맙습니다. – user400978

0

PHP의 답변이 너무 많습니다. 파일 확장자가 svn 파일 이름에없는 경우에도 작동합니다.당신이 첫 번째 인수로 SVN -베이스와 두 번째로 작업 사본 vimdiff 실행 가정 :

autocmd! BufRead *.svn-base if &diff && argc() == 2 | 
    \  execute 'doautocmd filetypedetect BufRead '.argv(1) | 
    \ endif 
autocmd! BufNewFile *.svn-base if &diff && argc() == 2 | 
    \  execute 'doautocmd filetypedetect BufNewFile '.argv(1) | 
    \ endif