vim을 사용하여 git diff.

vim을 사용하여 git diff.

vim을 사용하여 git diff.

저는 Windows 8을 실행 중이고 vim 7.4가 설치되어 있습니다. 편의상 Vim의 설치 디렉터리( set VIMDIR=C:\Program Files (x86)\Vim\vim74)에 설정된 환경 변수 VIMDIR을 만들고 이 디렉터리를 %PATH%에 추가했습니다.

Vim에는 %VIMDIR%\macros\less.bat호출기로 사용할 수 있는 스크립트 가 함께 제공되므로 vim 기반 호출기에 출력을 표시합니다 less.bat file.txt. dir | less.bat나는 이것을 정기적으로 사용하고 있으며 잘 작동합니다. 또한 Git의 less.exe 대신 vim을 git의 호출기로 사용하여 내가 할 때 실행되도록 하고 싶지만 git diff문제가 발생합니다.

less.batvim의 배치 파일을 사용해 보았습니다.

%GIT_PAGER%으로 설정 %VIMDIR%\macros\less.bat하고 수행 하면 git diff오류 메시지가 나타납니다.

C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: syntax error near unexpected token `('
C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: `C:\Program Files (x86)\Vim\vim74\macros\less.bat'

나는 이것이 git이 MSYS 프로그램이기 때문에 Windows 스타일 C:\whatever경로를 처리할 수 없다고 생각합니다.

나는 또한 vim의 less 매크로를 직접 호출해 보았습니다.

그래서 그것은 작동하지 않습니다. 다음으로 시도한 것은 해당 파일을 기반으로 무언가를 조사 less.bat하고 설정하는 것이었습니다. %GIT_PAGER%해당 파일에는 vim이 stdin에서 읽도록 지시하는 다음 줄이 표시됩니다.

vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -

%GIT_PAGER%MSYS 스타일 경로를 사용하는 수정된 버전으로 설정했습니다 .

set GIT_PAGER="/c/Program Files (x86)/Vim/vim74/vim.exe" --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -

그러면 vim이 성공적으로 시작됩니다! 하지만 여전히 문제가 있습니다. 색상이 작동하지 않고 화면 전체에 이스케이프 문자가 흩어져 있습니다. 일반적으로 구문 강조는 제대로 작동합니다. 이 명령을 실행하면 색상으로 생성한 diff 파일이 표시됩니다.

git diff > test.diff
less.bat test.diff

그러나 간단히 호출하여 콘솔에 차이점을 표시하도록 git diff하면 다음과 같이 표시됩니다.%GIT_PAGER%

스크린샷

또 무엇을 시도할 수 있나요?

그 밖에 무엇을 시도해야 할지 잘 모르겠습니다. Windows에서 git diff를 보기 위해 vim을 사용하는 사람이 있나요? 어떻게 지내세요?

도움을 주셔서 감사합니다.

답변1

남은 문제는 git diff여전히 diff 출력을 색상(ANSI 이스케이프 시퀀스)으로 강조 표시하고 호출기(예: Vim)가 이를 올바르게 표시할 것으로 기대한다는 것입니다. 하지만 Vim에는 자체 구문 강조 기능(diff에도 적용)이 있으며 시퀀스를 이해하지 못하기 때문에 보기 흉한 ^[[m. 두 가지 옵션이 있습니다:

  1. Git의 diff 강조 표시를 비활성화합니다(명령줄 인수 --no-color, 하지만 를 통해 구성을 취소할 수도 있음 git config). 이제 Vim이 올바른 파일 형식을 사용하는지 확인해야 합니다( :set filetype=diff; 명령줄에서 를 통해 전달할 수 있음 -c {cmd}).

  2. Vim이 ANSI 이스케이프 시퀀스를 이해하고 강조하도록 하세요. 그만큼AnsiEsc.vim 플러그인이것을 할 수 있습니다.

나는 첫 번째 접근 방식을 권장합니다.

관련 정보