Bu OP'nin istediğinden biraz daha geniş, ancak eklentileri ve muhtemelen başka revizyon kontrol sistemlerini kullanmak istemeyen insanlar için bu küçük pasaj oldukça iyi çalışıyor:
:new
:r! git show branch:file
:1d
Yeni bir pencere oluşturur ve verilen komutun çıktısını yeni arabelleğe okuyarak dosyayı orada gösterir. Bu elbette sadece git ile değil, herhangi bir harici komutla çalışır.
Bzr örneği (burada REV sözdizimi dal belirtebilir):
:new
:r! bzr cat -r REV file
:1d
Hg örneği (hg'deki dallar hakkında emin değilim; yeterince kullanmayın)
:new
:r! hg cat -r REV file
:1d
Svn (için örnek)
:new
:r! svn cat file@REV
:1d
Muhtemelen SO dosyalarında olduğu gibi sözdizimi vurgulamak için dosya türünü ayarlamak isteyebilirsiniz, ancak en azından boruları karıştırmak zorunda değilsiniz.
Açıldıktan sonra Vim'in henüz bir dosya adı olmayacağından, :w filename
veya ile yeni bir adla kaydedebilirsiniz :saveas filename
. Düzenlemek istemiyorsanız, a :setlocal readonly
ve / veya içine de atabilirsiniz :setlocal nomodifiable
.
-Edit: Otomatik Dosya Tipi-
Biraz daha iş, ama Vim'den filetype'ı tahmin etmesini isteyebilirsin.
:filetype detect
Ancak, Vim'in henüz bir adı olmadığından, bu her zaman iyi çalışmaz (örneğin, bazı C kodlarını okudum ve tahmin ediyorum) filtype=conf
.
Kaydederek bir ad verebiliriz, ancak mevcut bir dosyanın üzerine yazmak istemiyoruz. Ayrıca dosya adını da ayarlayabiliriz (Thanks @PeterRincker!), Ancak yine, çarpışma riskini almak istemiyoruz. Hem dal adı hem de dosya adı olan bir dosyanın mevcut olması muhtemel olmadığı için, bunları bazı rasgele ayırıcılarla birleştiririz
:exe "silent file " . "branch" . "-" . "file"
:filetype detect
Nerede "file"
gerçek dosya ile ve değiştirilir "branch"
şube adı ile
Tabii ki, bu noktada neredeyse bir eklenti yazıyoruz ;-)
Hepsini birlikte düşünürsek, işte vimrc'nize ekleyebileceğiniz git git özel bir işlev:
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
bir komutu sarabilir ya da doğrudan arayabilirsiniz call GitFile("whateverBranch","myfile.c")
. Adında bir tampon ile yeni bir pencere alırsınızwhateverBranch-myfile.c