Windows에서 vim을 사용하여 git diff를 보려면 어떻게해야합니까?

미카 R Ledbetter

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되지만 문제가 발생합니다.

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

내가 설정 한 경우 %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

그러나 단순히 전화를 걸어 콘솔에 diff를 표시하는 git diff데 사용 %GIT_PAGER%하면 다음과 같이 표시됩니다.

스크린 샷

또 무엇을 시도 할 수 있습니까?

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

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

잉고 카르 캇

나머지 문제는 git diff여전히 색상 (ANSI 이스케이프 시퀀스)으로 diff 출력을 강조 표시하고 페이저 (예 : Vim)가 올바르게 표시 할 것으로 기대한다는 것입니다. 그러나 Vim에는 자체 구문 강조 표시 (diff에도 해당)가 있으며 시퀀스를 이해하지 못하기 때문에 추악한 것으로 표시됩니다 ^[[m. 두 가지 옵션이 있습니다.

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

  2. Vim이 ANSI 이스케이프 시퀀스를 이해하고 강조하도록하십시오. AnsiEsc.vim 플러그인은 이 작업을 수행 할 수 있습니다.

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

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CodeIgniter에서 루프를 사용하여 여러 이메일을 보내려면 어떻게해야합니까?

분류에서Dev

Java를 사용하여 웹 서버를 통해 R 파일을 보내려면 어떻게해야합니까?

분류에서Dev

iPhone을 사용하여 PC에서 SMS를 보내려면 어떻게해야합니까?

분류에서Dev

Rmarkdown을 사용하여 가변 길이 보고서를 만들려면 어떻게해야합니까?

분류에서Dev

Dapper를 사용하여 문자열을 SQLServer에 NULL로 보내려면 어떻게해야합니까?

분류에서Dev

SqlParameter를 사용하여 저장 프로 시저에 null 값을 보내려면 어떻게해야합니까?

분류에서Dev

Windows에서 SSH를 통해 Git을 사용할 때 MOTD를 비활성화하려면 어떻게해야합니까?

분류에서Dev

종속성을 포함하여 Git에서 프로젝트를 얻으려면 어떻게해야합니까?

분류에서Dev

Windows에서 git-bash에 'tree / F'명령을 사용하려면 어떻게해야합니까?

분류에서Dev

비공개 Git 저장소에서 juju-deployer를 사용하여 juju 참을 배포하려면 어떻게해야합니까?

분류에서Dev

gitpython을 사용하여 특정 Git 커밋 ID를 확인하려면 어떻게해야합니까?

분류에서Dev

Python 및 PyGithub / GitPython을 사용하여 내 git 저장소를 복제하려면 어떻게해야합니까?

분류에서Dev

(Git) 별칭을 사용하여 매개 변수를 설정하려면 어떻게해야합니까?

분류에서Dev

git을 사용하여 폴더 구조를 추적하려면 어떻게해야합니까?

분류에서Dev

git-tf를 사용하여 Visual Studio Online에 로그인하려면 어떻게해야합니까?

분류에서Dev

C ++에서 Mosquitto를 사용하여 파일을 게시하려면 어떻게해야합니까?

분류에서Dev

내 계정을 사용하여 Telegram API를 사용하는 사람에게 메시지를 보내려면 어떻게해야합니까?

분류에서Dev

AJAX를 사용하여 확인란에서 여러 값을 얻으려면 어떻게해야합니까?

분류에서Dev

Javascript를 사용하여 브라우저에서 AWS Lambda를 호출하면 함수에 입력 값을 보내려면 어떻게해야합니까?

분류에서Dev

Windows 용 Git 클라이언트에서 TFS 서버를 인증하려면 어떻게해야합니까?

분류에서Dev

UILongPressGestureRecognizer를 사용하여 사용자 위치에 핀을 추가하려면 어떻게해야합니까?

분류에서Dev

Windows 용 Git에서 설치하는 항목을 최소화하려면 어떻게해야합니까?

분류에서Dev

WebInterface를 사용하여 ArangoDB에서 컬렉션을 삭제하려면 어떻게해야합니까?

분류에서Dev

Pandas를 사용하여 CSV 파일에서 줄을 제거하려면 어떻게해야합니까?

분류에서Dev

ARCore Android SDK를 사용하여 SceneViewer에서 glTF 파일을로드하려면 어떻게해야합니까?

분류에서Dev

R을 사용하여 Firefox에서 내 위치를 위조하려면 어떻게해야합니까?

분류에서Dev

Kubernetes 배포 내에서 DockerOperator를 사용하여 작업을 실행하려면 어떻게해야합니까?

분류에서Dev

curl을 사용하여 sourceforge에서 콘텐츠를 다운로드하려면 어떻게해야합니까?

분류에서Dev

AngularJS 필터를 사용하여 범위에서 행을 선택하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    CodeIgniter에서 루프를 사용하여 여러 이메일을 보내려면 어떻게해야합니까?

  2. 2

    Java를 사용하여 웹 서버를 통해 R 파일을 보내려면 어떻게해야합니까?

  3. 3

    iPhone을 사용하여 PC에서 SMS를 보내려면 어떻게해야합니까?

  4. 4

    Rmarkdown을 사용하여 가변 길이 보고서를 만들려면 어떻게해야합니까?

  5. 5

    Dapper를 사용하여 문자열을 SQLServer에 NULL로 보내려면 어떻게해야합니까?

  6. 6

    SqlParameter를 사용하여 저장 프로 시저에 null 값을 보내려면 어떻게해야합니까?

  7. 7

    Windows에서 SSH를 통해 Git을 사용할 때 MOTD를 비활성화하려면 어떻게해야합니까?

  8. 8

    종속성을 포함하여 Git에서 프로젝트를 얻으려면 어떻게해야합니까?

  9. 9

    Windows에서 git-bash에 'tree / F'명령을 사용하려면 어떻게해야합니까?

  10. 10

    비공개 Git 저장소에서 juju-deployer를 사용하여 juju 참을 배포하려면 어떻게해야합니까?

  11. 11

    gitpython을 사용하여 특정 Git 커밋 ID를 확인하려면 어떻게해야합니까?

  12. 12

    Python 및 PyGithub / GitPython을 사용하여 내 git 저장소를 복제하려면 어떻게해야합니까?

  13. 13

    (Git) 별칭을 사용하여 매개 변수를 설정하려면 어떻게해야합니까?

  14. 14

    git을 사용하여 폴더 구조를 추적하려면 어떻게해야합니까?

  15. 15

    git-tf를 사용하여 Visual Studio Online에 로그인하려면 어떻게해야합니까?

  16. 16

    C ++에서 Mosquitto를 사용하여 파일을 게시하려면 어떻게해야합니까?

  17. 17

    내 계정을 사용하여 Telegram API를 사용하는 사람에게 메시지를 보내려면 어떻게해야합니까?

  18. 18

    AJAX를 사용하여 확인란에서 여러 값을 얻으려면 어떻게해야합니까?

  19. 19

    Javascript를 사용하여 브라우저에서 AWS Lambda를 호출하면 함수에 입력 값을 보내려면 어떻게해야합니까?

  20. 20

    Windows 용 Git 클라이언트에서 TFS 서버를 인증하려면 어떻게해야합니까?

  21. 21

    UILongPressGestureRecognizer를 사용하여 사용자 위치에 핀을 추가하려면 어떻게해야합니까?

  22. 22

    Windows 용 Git에서 설치하는 항목을 최소화하려면 어떻게해야합니까?

  23. 23

    WebInterface를 사용하여 ArangoDB에서 컬렉션을 삭제하려면 어떻게해야합니까?

  24. 24

    Pandas를 사용하여 CSV 파일에서 줄을 제거하려면 어떻게해야합니까?

  25. 25

    ARCore Android SDK를 사용하여 SceneViewer에서 glTF 파일을로드하려면 어떻게해야합니까?

  26. 26

    R을 사용하여 Firefox에서 내 위치를 위조하려면 어떻게해야합니까?

  27. 27

    Kubernetes 배포 내에서 DockerOperator를 사용하여 작업을 실행하려면 어떻게해야합니까?

  28. 28

    curl을 사용하여 sourceforge에서 콘텐츠를 다운로드하려면 어떻게해야합니까?

  29. 29

    AngularJS 필터를 사용하여 범위에서 행을 선택하려면 어떻게해야합니까?

뜨겁다태그

보관