vim vimrc'yi patojen ile yeniden yüklemiyor


1

Neredeyse unvanı. Dosyamı düzenlerken vimrcsatırın

call pathogen#infect()

vim'i yeniden başlatana kadar değişiklikler etkili olmaz. Bu, bundleklasörde olmasa bile ~/.vimve bu satır vimrcdosyanın sonunda veya başında olsa bile geçerlidir . Sanırım bu böyle olmamalı, yani neler oluyor?

Bir şeyleri temizlemek için düzenleyin:

Bunu çizgi olmadan denediğimde başarılı olan .vimrcdosyayı yeniden :source $MYVIMRCyüklemeye çalışıyorum pathogen.

Düzenleme: bazı detaylar

Bu, yeni kurulmuş bir Linux nane üzerinde ve sorun benim çeşitli girişimler :noremapve :iabbreviatekomutları üzerinde ortaya çıktı . Görünümü değiştiren komutlar (örneğin çalışıyor set numbergibi)

Düzenleme: biraz daha detay

İşte benim çalışmaz şeyin bir örnektir .vimrcdosyası

:set number! " To indicate that I do reload the file

" replacing gamma with \gamma, was here when opened gvim
:autocmd FileType tex :iabbrev <buffer> gamma \gamma
" replacing lambda with \lambda added after launching gvim
:autocmd FileType tex :iabbrev <buffer> lambda \lambda

call pathogen#infect()

Lambda dosyasını eklemek ve ardından arka planda açık source ~/.vimrcbir texdosyayla çalışmak , yazı yazarken hiçbir sonuç vermedi lambda. Gvim'i yeniden başlatmak zorunda kaldım.


Vimrc, başlangıçta yalnızca bir kez yüklenir. El ile kaynak sağlamadığınız sürece :so ~/.vimrc(ya da bir tür sıralama yapmazsanız) bir daha asla okunmaz .
FDinoff

@ FDinoff Sorum net değildi. Ben sourcekomutu kullanıyorum .
Yotam

Hangi komutların yerine getirilmediği gibi daha fazla ayrıntıya sahip olmak ya da daha da iyisi, sorununuzu nasıl yeniden oluşturacağınıza dair bir açıklama yapmak güzel olurdu.
mMontu

@mMontu, sorumu güncelledim. Kısa cevap Linux nane ve hemen hemen her
komuttur

Komutlarınızdan ( set number) bazıları yürütülürse vimrc, yeniden yüklenmediğini söyleyemezsiniz . Benim tahminim, haritanızdan ve kısaltma komutlarından beklenen davranışı bir şekilde yanlış anladığınızdır (muhtemelen bir XY Sorunu ). Ancak ayrıntılar olmadan bilmek mümkün değildir.
mMontu

Yanıtlar:


2

Senin acil problemin

Bir oto komutun sağ tarafı, tasarlanmış olay tetiklendiğinde yürütülür.

Sizin durumunuzda, FileTypeVim bir tamponun dosya tipini belirlediğinde olay tetiklenir, bu genellikle yeni bir tampon oluşturulduğunda meydana gelen bir şeydir.

Dosyanız zaten yüklendiğinde yüklendiğinden :source ~/.vimrc, özel otomatik komutlarınızın hiçbiri yürütülmez. Geçerli tampon belleğe başvurmaları için bir yeniden yüklemeye zorlamanız gerekir :edit.

Daha geniş sorun

FileTypeSize otomatik komut eklemek vimrcpek de iyi bir fikir değil, çünkü Vim zaten tüm işleri sizin için yapıyor! Geçerli arabelleğin bir texFileType'ı olduğuna karar verdiğinde , Vim hemen tex.vimaşağıdaki dizinlerde bulabildiği her dosyayı sırayla bulmaya çalışır :

1. ~/.vim/ftplugin/
2. $VIMRUNTIME/ftplugin/
3. ~/.vim/after/ftplugin/

Vim bu dosyaları yine de kaynaklamaya çalıştığından, sizin için ikinci (ve üçüncü ve dördüncü…) bir çek eklemenize gerek yoktur vimrc. Bu dosyalardan biri de özel ayarlarınızı ve haritalarınızı yerleştirmeniz gereken yerdir.

Birincisi , küresel ftplugin önce~/.vim/ftplugin/tex.vim kaynaklı ve bu nedenle geçersiz kılınabilir. Bu dosya ayarlarınız için güvenli bir yer değil.

Global ftplugin'in değiştirilmesi, $VIMRUNTIME/ftplugin/tex.vimbüyük bir hayır-hayır (bir güncellemeden kurtulmayacak, çalışması garanti edilemez, idari ayrıcalıklara ihtiyaç duyabilir, vb.).

Bu da bizi sonuncusu, ~/.vim/after/ftplugin/tex.vimözel texharitalamalarınız için ideal yer bırakıyor :

iabbrev <buffer> gamma \gamma
iabbrev <buffer> lambda \lambda

Komutlarımı afterdosyaya yerleştirmek "anında" komutlarının güncellenmesiyle sonuçlanır mı? sourceKomutu çalıştırmam gerekir mi ? Vim yeniden başlatılsın mı?
Yotam

Hayır, arabellekinizi :eyeniden yüklemeye zorlamanız veya filetype saptama işlemini yeniden başlatmanız gerekir :filetype detect.
romainl,

öyleyse kullanmanın avantajı augroupnedir? vimrcDosyayı karıştırmanın dışında .
Yotam

Daha hızlı başlatma, daha yalın kurulum.
romainl,

1

Sorununuzun patojenle nasıl ilişkili olduğundan emin değilim, ancak aşağıdaki noktaları kontrol etmelisiniz:

  1. Vimrc'nizi yeniden yüklemeyi düşünüyorsanız, anlatıldığı gibi autocmd gruplarını kullanmalısınız :help autocmd-groups. Geçerli formda FileType etkinliğiniz hızlı bir şekilde karmaşıklaşacaktır - vimrc'nizi birkaç kez yeniden yüklemeyi ve ardından çalıştırmayı deneyin :au FileType tex.

  2. Doğrudan kısaltmalar oluşturmadığınızı, ancak kısaltmalar yaratabilecek otomatik komutlar oluşturduğunuza dikkat edin. Sadece vimrc'yi güncellemek yeterli değildir, eşlemelerinizi / kısaltmalarınızı güncellemek için otomatik komutların çalıştırılması gerekir. Filetype olayı genellikle belirli bir arabellek için bir kez tetiklendiğinden güncellemeyi görmüyorsunuz. Otomatik echomkomutta bir komut ekleyerek kontrol edebilirsiniz (bu arada, :vimrc'inizdeki çeşitli satırların başında anlamsızdır; onları gerçekten seviyorsanız call pathogen...tutarlı olmak için eklemelisiniz ). Tamponu silip :bdtekrar açmayı deneyebilir veya dosya tipini tekrar ayarlayabilirsiniz ( :set ft=tex).

  3. Belirli bir dosya türünün davranışını değiştirmek istediğinizde, vimrc'nizi, içinde açıklandığı gibi after after dizinde bir dosya oluşturarak karıştırmaktan kaçınabilirsiniz :h after-directory. Örneğin, belirli eşlemeleri / kısaltmaları içeren ~ / .vim / after / ftplugin / tex.vim dosyasını oluşturun.

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.