Vim'in yeni yüklenmiş gibi tüm kullanıcı yapılandırmasını yoksaymasını nasıl sağlayabilirim?


21

Davranışın kişisel yapılandırmamdan etkilenmediğinden emin olmak için, Vim'i kullanıcı tarafından yüklenen tüm yapılandırma dosyalarım yok sayacak şekilde başlatmak istiyorum , sanki Vim ilk kez yeni kurulmuş ve kullanıcı çalıştırmış gibi hemen.

Bu, SSS'de cevabın aşağıdaki komutla Vim'yi başlatmak olduğunu önermektedir:

vim -u NONE -U NONE -N -i NONE

Bu , yolun çoğunu alır , ancak runtimepathseçenek yine de içerir ~/.vimve özellikle ~/.vim/after, (yani daha sonra dosya türü algılamayı açar ve dosya türünü değiştirirsem, kod ~/.vim/after/syntax/the_relevant_filetype.vimyürütülür).

Başlangıçta aşağıdaki komutları çağırarak bu özel sorunu giderebilirim *:

:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after

... ama emin değilim:

  1. Bu sağlam bir çözümdür: Kullanıcı yapılandırmasının etkili olmasına neden olabilecek tek yol bunlar mı? Düşünmediğim başka bir şey var mı?
  2. İstenen sonucu elde etmenin daha iyi bir yolu var.

* --cmdVeya -u vimrckabuk argümanlarını kullanarak veya basitçe elle yazarak.

EDIT : İşte düzeltmeye çalışıyorum sorun tür belirli bir örnek. (Her ne kadar ben henüz karşılaşmamış olabilir olası diğer sorunları çözmek için çözüm istiyorum istiyorum.):

  1. İçeriği içeren ~ / .vim / after / ftplugin / c.vim dosyası oluşturun:

    noremap i :echom "This is not default behaviour"<CR>
    

    Artık yoksaymak istediğimiz, kullanıcı tarafından yüklenen bazı yapılandırmalarımız var. SSS tarafından önerilen çözümü test edelim.

  2. Vim komutunu çalıştırın:

    vim -u NONE -U NONE -N -i NONE
    
  3. Komutları girin:

    :filetype plugin on
    :set ft=c
    i
    

İstenen davranış : Vim, Ekle moduna girmelidir. Herhangi bir kullanıcı yapılandırması mevcut değilse ne yapardı.

Gözlemlenen davranış : Vim "Bu varsayılan davranış değil"


Bir Unix benzeri sistemde, ne yaparsanız: HOME=/dev/null vim -u NONE?
muru

@muru Güzel bir fikir ve muhtemelen bir cevap olarak eklemeye değer, ama mükemmel değil . Belli bir şekilde örneğin yeteneklerini kaybedersiniz :cd ~, ancak viminfodosyanın varsayılan konumu $ HOME'dadır ve bu da E138'e neden olabilir. Yeni, boş bir dizin oluşturma ve $ HOME için bunu kullanmak en iyi çözüm olabilir sanırım.
Zengin

@muru Sadece $ HOME ayarlıyorsanız, o zaman muhtemelen de belirtmek gerekmez aklıma geldi -u NONE?
Zengin

1
bu durumda /tmpdaha iyi olabilir, bu benim ilk düşüncemdi, ama sonra / dev / null'u bir kara delik olarak seçtim. ... ya da benzeri bir şey HOME=$(mktemp -d) vim ....
muru

Kullanmazsanız sistem vimrc okumaz -u NONEmı? Sanırım hangi davranışa ihtiyacınız olduğuna bağlı.
muru

Yanıtlar:


16

Vim 8.0.1554 itibariyle (ne yazık ki henüz Neovim değil) kullanabilirsiniz vim --clean. Bu yöntem tarafından önerilir :help bugs.

:help --clean docs:

"-U VARSAYILAN -U HİÇBİRİ -i HİÇBİRİ" gibi::
dosya ve ortam değişkenlerinden başlatmalar atlanır
- 'runtimepath' ve 'packpath' giriş dizini girişlerini hariç tutacak şekilde ayarlanır (-u VARSAYILAN ile gerçekleşmez).
- | defaults.vim | 'uyumsuz' anlamına gelen komut dosyası yüklenir: Vim varsayılanlarını kullanın
- no | gvimrc | komut dosyası yüklü
- viminfo dosyası okunmuyor veya yazılmıyor


1
Güzel! Bu, $HOMEdeğişkenle uğraşmaktan çok daha basittir . Goodjob Vim geliştiricileri. Ve cevap için teşekkürler!
Zengin

1
--cleanneovimşimdi master ile de çalışır ( github.com/neovim/neovim/commit/… , 0.4.0'a dahil edilecek), ancak giriş dizinini hariç tutmuyor.
Christian Clason

(yine de, bu yama taşınmak için bekliyor)
Christian Clason

11

Kullanıcıya özgü dosyaları ortadan kaldırmanın bir yolu farklı bir değer kullanmaktır $HOME. Hiçbir şeyin okunmasına veya yazılmasına izin vermek için (viminfo gibi) şunları kullanabilirsiniz /dev/null:

HOME=/dev/null vim -u NONE

Bu, ilgili hatalara neden olur viminfo, bunun yerine geçici bir klasör oluşturabilir veya var olan bir klasörü kullanabilirsiniz (örneğin /tmp):

HOME=$(mktemp -d) vim -u NONE

Böyle bir durumda $HOME, -u NONEyöneticinizin sistem çapında neler eklediğine bağlı olarak gerekli olmayabilir vimrc. Örneğin, ben yönetmek tüm laboratuar sistemleri üzerinde, ben eklenen /etc/vim/vimrc.local(ambalajlı Vim'ın varsayılan olarak kaynaklı /etc/vim/vimrc) sahip olması nocompatible, syntaxvb seti ve filetype onde.


3
vim -i Yüklenmeyi önlemek için YOK viminfo
Christian Brabandt

1

Bunların çoğuna cevap veremem ama bahsetmediğim bir nokta var ve başlıkta ne olduğuna dair bir yorumu yeniden cevaplıyorum

Vim'in yeni yüklenmiş gibi tüm kullanıcı yapılandırmasını yoksaymasını nasıl sağlayabilirim?

bazıları önerdi vim -u NONE veyavim -u NORC

bu bazı açılardan vimrc dosyasından biraz daha fazla barebone. 'İ' yazdığımda 'insert' yazmıyor. Yine de 'ekle' demesini isteyebilirsiniz. Vim'i vimrc dosyanız boş olarak başlattıysanız, eki gösterecektir

çünkü vim önce varsayılan bir yapılandırma yükler.

Vimrc dosyanızın boş kalmasını sağlamak için vim'i varsayılan dosyaya yönlendirebilirsiniz. Sahip olduğunuzdan /etc/vim/vimrcve yapabileceğiniz vim -u /etc/vim/vimrc veya osx'ta varsayılan dosya/usr/share/vim/vicmrc


Bence vim --clean sizin için tam olarak bunu yapacak.
quemeraisc

@quemeraisc vim --cleanyüklenecek defaults.vim. Bu cevap sistemi vimrc (Bkz bahsediyor :help system-vimrcben düşünüyorum.), Değil tarafından yüklenen vim --clean.
Zengin

@barlap: defaults.vim (bkz ile önlemek karışıklık için :help defaults.vim), ifadeleri değiştirmek için daha iyi olabilir default configiçin system vimrcbu cevap. Ya da daha iyisi, cevapta her ikisini de tartışın!
Zengin

0

Gönderen Vim-SSS 2.5 :

2.5. Vim ile ilgili bir "xyz" (bazı) problemim var. Kurulumumda veya Vim'de bir sorun olduğunu nasıl belirleyebilirim? / Vim'de bir hata buldum mu?

İlk olarak, hatanın gerçek çalışma zamanı dosyalarında mı yoksa Vim ile dağıtılan herhangi bir eklentide mi olduğunu veya .vimrc veya .gvimrc'deki herhangi bir yapılandırma seçeneğinin basit bir yan etkisi olup olmadığını öğrenmeniz gerekir. İlk olarak, vim'i şu şekilde başlatın:

vim -u NONE -U NONE -N -i NONE

bu, Vim'i uyumsuz modda (-N), viminfo dosyanızı (-i NONE) okumadan, herhangi bir yapılandırma dosyasını okumadan (.vimrc dosyasını okumadığınız için -u NONE ve .gvimrc dosyasını okumadığınız için -U NONE) veya hatta eklenti.


1
SSS'de olmasına rağmen, bu soruda belirtilen nedenlerden dolayı aslında işe yaramıyor.
Zengin

@Rich Soru hakkındaki yorumunuzdan: ensure that none of the behaviour I'm seeing is caused by user config- o zaman bu SSS'de açıklananları tam olarak yapmaya çalıştığınız anlaşılıyor . Sorunuzu tekrar okudum ve bahsettiğiniz nedenlerin ne olduğunu hala anlamıyorum.
16:00

Gerçekten SSS bölümünde açıklananları tam olarak yapmaya çalışıyorum. Ancak, runtimepathayar nedeniyle verdiği çözüm işe yaramıyor .
Zengin

Hakkında tam olarak yanlış olan ne runtimepath? Açıklandığı gibi bu seçenek için varsayılan gibi görünüyor :help rtp. Bu değer testinizi nasıl etkiliyor?
mMontu

@Rich Demek istediğim, dosya türünü algılamayı açtıktan sonra yeni bir yüklemeyle karşılaştırıldığında herhangi bir fark görüyor musunuz?
mMontu
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.