이것은 OP가 요청한 것보다 조금 더 넓지 만 플러그인 및 기타 개정 제어 시스템을 사용하지 않으려는 사람들에게는이 작은 발췌 문장이 상당히 잘 작동하는 경향이 있습니다.
:new
:r! git show branch:file
:1d
새로운 윈도우를 생성하고 주어진 명령의 출력을 새로운 버퍼로 읽어 파일을 보여줍니다. 이것은 물론 git뿐만 아니라 모든 외부 명령에서 작동합니다.
bzr의 예 (REV 구문은 분기를 지정할 수 있음) :
:new
:r! bzr cat -r REV file
:1d
hg의 예 (hg의 가지에 대해 확실하지 않으므로 충분히 사용하지 마십시오)
:new
:r! hg cat -r REV file
:1d
svn의 예 (
:new
:r! svn cat file@REV
:1d
SO 게시물에서와 같이 구문 강조를 얻기 위해 파일 유형을 설정하고 싶을 수도 있지만 최소한 파이핑을 망칠 필요는 없습니다.
Vim에 파일 이름이 아직 없기 때문에 또는를 열면 :w filename
또는 로 새 이름으로 저장할 수 있습니다 :saveas filename
. 편집하고 싶지 않은 경우 :setlocal readonly
및 / 또는를 던질 수도 있습니다 :setlocal nomodifiable
.
편집 : 자동 파일 형식
조금 더 많은 작업이지만 Vim에게 파일 형식을 추측하도록 요청할 수 있습니다.
:filetype detect
그러나 Vim에는 아직 이름이 없기 때문에 항상 제대로 작동하지는 않습니다 (예 : C 코드를 가져 와서 추측했습니다 filtype=conf
.
저장하여 이름을 지정할 수 있지만 기존 파일을 덮어 쓰고 싶지는 않습니다. 파일 이름 (Thanks @PeterRincker!)을 설정할 수도 있지만 충돌의 위험은 없습니다. 브랜치 이름과 파일 이름이 모두 같은 파일이 존재하지 않을 가능성이 있기 때문에 임의의 구분 기호로 연결합니다.
:exe "silent file " . "branch" . "-" . "file"
:filetype detect
경우 "file"
실제 파일 이름으로 대체됩니다 "branch"
분기 이름으로
물론이 시점에서 우리는 거의 플러그인을 작성하고 있습니다 ;-)
그것을 모두 합하면, 여기에 vimrc에 넣을 수있는 git 특정 기능이 있습니다.
function! GitFile(branch,file)
new
exe "silent r! git show " . a:branch . ":" . a:file
1d
exe "silent file " . a:branch . "-" . a:file
filetype detect
setlocal readonly "don't allow saving
setlocal nomodified "allow easy quitting without saving
setlocal nomodifiable "don't allow modification
endfunction
명령으로 감싸거나 직접 호출 할 수 있습니다 (예 :) call GitFile("whateverBranch","myfile.c")
. 버퍼라는 이름의 새 창이 나타납니다.whateverBranch-myfile.c