.Vimrc dosyasını harici bir dosyadan nasıl okuyabilirim?


24

.vimrcDeğişkenin değerini harici bir dosyadan okumak için benim de değişiklik yapmak istiyorum . Bunu nasıl yapabilirim?

Özellikle, bir arkadaşım ve ben bir git repo'yu .vimdosyalarımızla paylaşıyoruz , ancak yapılandırmalarımızda istediklerimizde bazı küçük farklılıklar var. Bu nedenle dosyanın çoğu ortaktır, ancak kullanıcıya özel bölümlerin yüklenip yüklenmeyeceğini belirlemek için ifadeler kullanıyoruz:

let whoami = "user2"
if whoami == "user1"
...

.vimrcKaynak kontrolü dışındaki ortaklarımızı kontrol ettikten sonra , her birimiz let whoamiödevi değiştirmeliyiz, böylece kendi bölümümüz yüklenir. Bunun yerine, her birimiz için farklı olabilecek ve hangi vim'in bu değişken değerini yükleyeceği ayrı bir dosya tutmak istiyorum.

Belki bu konuda başka bir açı: vim dizimdeki tüm dosyaları otomatik olarak okuyacak .vimmı? Öyleyse, her biri username.vim adında bir sembolik link koyabilir ve bunu her birimiz için farklı olan harici bir dosyaya bağlayabiliriz.

Yanıtlar:


35

ana .vimrc dosyanızda:

source otherVimScriptFilePath.vim

sonra sadece değişken ifadenizi bu dosyaya koyun:

" otherVimScriptFilePath.vim
let whoami = "user1"

2
FYI - Benim durumumda let whoami = "", sourcesatırın hemen önünde yapmak yardımcı oldu , böylece harici dosyayı yüklemek için başarısız olursa, değişken var ve daha önce ayarlanmamış değişken için ayarlamış olduğumuz hata mesajını alıyorum.
Nathan Long,

2
@GorillaSandwich: Windows sembolik bağları olmadığından vimrcimi Windows makinemde kullanmak için kullanıyorum. Bunu ve diğer bütün nokta dosyalarımı içeren bir SVN klasörüm var. Bu yüzden sadece svn klasöründe gerçek olanı sağlayan bir _vimrc var.
Robert S Ciaccio,

@GorillaSandwich: benim cevaba bakınız silent! sourceparçası
akira

6

Bir deneme / yakalama kullanma

Bu soruyu sorduğumdan beri, harici bir dosya yüklemek için başka bir kullanım vakası buldum: makineye özel ayarlamalar.

Belirli bir makinede tweaks yapmak zorunda olabileceğim veya gerekmediğim için try/catch, harici dosyayı yüklemek için a kullanıyorum ; böyle bir dosya yoksa, sessizce başarısız olmasına izin verdim.

" If there are any machine-specific tweaks for Vim, load them from the following file.
try 
  source ~/.vimrc_machine_specific
catch
  " No such file? No problem; just ignore it.
endtry 

5

Son soruyu cevaplamak için, dosyalar ~/.vimotomatik olarak yüklenmez, ancak içindeki tüm dosyalar ~/.vim/pluginbulunur.


2
ve ~ / .vim ( after, autoload) altındaki diğer bazı yerler
akira

4

:sourceKomutu kullanarak ~ / .vimrc'nizin başka bir dosyayı yüklemesini sağlayabilirsiniz . Örneğin, her biri benzersiz komutlarınızı ~ / .myvimrc içine koyabilir ve bu komutları yükleyebilirsiniz.

source ~/.myvimrc

Ya da düşündüğünüz gibi, her biri isminizi bu dosyaya şöyle yazabilir:

let user = "user1"

ve sonra bunu ~ / .vimrc dosyasına koyun:

source ~/.myvimrc
if user == "user1"
    " do this
elseif user == "user2"
    " do that
else
    echo "Invalid user"
endif

Dosyalarda isimleri koymak yerine, gerçi, size $ akira önerildiği gibi KULLANICI veya set kullanabilirsiniz userkullanarak whoamibu gibi:

let user = substitute(system('whoami'), '\n', '', '')

Substitute () işlevi gereklidir, çünkü system () çıktısının ucu genellikle '\ n' şeklindedir.


whoamiWindows'da çalışmıyor
akira 22:09

@akira: Doğru, ancak GorillaSandwich Windows değil Unix kullanıyor. $ USER, Windows ile de çalışmıyor, en azından Windows XP ile değil.
garyjohn

Sadece pencerelerde $ USERNAME diyor. ana nokta şudur: whoamiyeni bir süreç doğurur, editörünüzü açtığınızda birkaç kez daha çalışmak zorunda kalmaması hızlı ve işe yaramaz olmalıdır.
akira

2

Giriş yapmış kullanıcının adı $ USER ortam değişkeninde bulunur. bu değişkene kolayca erişebilirsiniz:

:echo $USER

yani, sadece kullan

execute "silent! source vimrc." . $USER

vimrc'nizde kullanın ve kullanıcıya özel ayarları yapın

vimrc.joe

veya giriş adınız her neyse


0

Vimrc'nizin neye benzediğinden emin değilim bu yüzden bu mümkün olmayabilir, ancak siz ve arkadaşınızın paylaştığı büyük parçalar varsa, bunları ayrı eklentilere bölmek isteyebilirsiniz. ~/.vim/pluginBaşlangıçta yüklenmeleri için dizine dosya ekleyebilirsiniz . (Alfabetik sırayla yüklenir - :scriptnameskontrol etmek için kullanın .)

Bu şekilde her biri tamamen benzersiz bir vimrc'ye sahip olabilirsiniz, ancak genel yapılandırmanızın tümü eklentilerde. Onları mantıksal olarak ayırırsanız, o zaman başkalarıyla da paylaşmayı kolaylaştırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.