VIMRC dosyamı nasıl hata ayıklarım?


80

Ben Vim bir sorun var ve bu benim içinde olabilirsin vimrcdosyası (veya edilmiş anlattı benim olabilir vimrcdosyası).

Bunu nasıl doğrularım? O takdirde ise benim vimrcdosyayı nasıl nerede anlarım tam olarak sorun yatıyor?

Yanıtlar:


79

Yapmak istediğiniz ilk şey, Vim'i varsayılan ayarlarla başlatmaktır:

vim -u NONE -U NONE -N

-u NONESenin vimrc yüklenmesini önler Vim, -U NONEsenin gvimrc yüklenmesini Vim engeller ve -Nhiçbir uyumlu modunu kullanmak Vim söyler (bu gerekli değildir, ancak çoğu Vim kullanıcılar "uyumlu" moduna için kullanılmaz). Not NONEedilir gerekli tüm kapaklar içinde olması.

Windows'ta bu bayrakları yeni bir kısayol 1 oluşturarak ekleyebilirsiniz .

  • Sorun devam ederse, bunun sizin vcc'nizde bir şey olmadığını bilirsiniz .

  • Sorun kaybolursa, şimdi vimrc dosyanızdaki bir şeyden kaynaklanıyorsunuz .

Bu benim vimrc değil!

Yaşa! Git sorunuzu sorun. Vim'i bir vimrc dosyası olmadan başlatmaya çalıştığınızdan emin olun!

Yani bu benim vimrc, şimdi ne?

Henüz yapmadıysanız, muhtemelen önce vimrc dosyanızın yedek bir kopyasını kaydetmek istersiniz.

Eklentileri kontrol et

Muhtemelen yapmak istediğiniz bir sonraki şey, önce tüm eklentileri devre dışı bırakmaktır; eklentileri Vim'de biraz değişebilir. Bu sorunu çözerse, hangi eklentiyi tek tek etkinleştirerek bulmaya çalışın . Hangi eklentinin soruna tam olarak neden olduğunu bulduktan sonra, bu eklentinin belgelerini okuyarak ve / veya etiketli bir soru sorarak onu deneyip düzeltebilirsiniz plugin-<name>.

E? Er değil bir eklenti ve yok herhangi sorununuzu neyin neden fikir, o zaman bir deneme-yanılma prosedür. Vimrc'nizdeki bir veya daha fazla satırı yorumlayın, Vim'i başlatın, sorunun oluşup oluşmadığını kontrol edin ve sorun oluşmayana kadar bu işlemi tekrarlayın. Bunu yapmanın en hızlı yolu:

  1. Vimrc dosyanızın yarısı hakkında yorum yapın (veya kaldırın).
  2. Vim yeniden başlatın veya yeni Vim açın (vimrc yeniden olduğunu değil ayarları belirlenmemiştir gibi, yeterince iyi).
  3. Sorun şimdi gitti mi? Çıkardığınız parçayı geri koyun (Vim'i açık ve geri almayı burada kullanmak yararlıdır) ve geri eklediğiniz kısımda 1. adımı tekrarlayın.
  4. Sorun hala devam ediyor mu? 1. adıma gidin.

Sonunda, tek bir seçeneğe veya sorununuza neden olan birkaç seçeneğin bir kombinasyonuna sahip olmalısınız. Vim'deki herhangi bir seçenek hakkında daha fazla bilgiyi kullanarak:

:help 'option_name'

Alıntılar burada önemlidir, genellikle onlar olmadan çalışır, ancak bazen bunları atlarsanız yanlış sayfada kalırsınız.

Yardım sayfasını okuduktan sonra hala kafanız karıştıysa, nerede bir soru soracağınızı biliyorsunuz ;-)

Tek bir eklentide hata ayıklama

Tek bir eklentiyi izole etmek, belki de onun hakkında bir soru sormak istiyorsanız, mümkün olduğunca az yüklemek, yine de eklentiyi yüklemek istiyorsunuz ; Bunu Vim'in paket özelliği ile kolayca yapabilirsiniz. Bu, Vim 8'i veya Neovim'in oldukça yeni bir sürümünü gerektirir.

  1. Yeni bir boş dizin oluşturun; ~/pluginyolu bu örnekte kullanacağız . Şimdi eklentiyi normal pack/plugins/start/$namedizine koy . Örneğin:

    git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
    
  2. test-vimrcAşağıdaki içeriklere sahip bir dosya oluşturun ; Bu Vim gelen eklentileri yüklemek sağlayacaktır ~/plugindizin ve değil~/.vim dizinde:

    set nocompatible
    set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
    packloadall!
    
    syntax on
    filetype plugin indent on
    
  3. Vim ile başla:

    vim -U NONE -u ~/test-vimrc
    

    Şimdi sadece bu eklenti ile minimal bir vimrc var.


Dipnotlar

1 Örneğin: 64 bit Windows üzerinde kısayol şuna benzer olacaktır: "C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N. Oluşturmak için kısayolu istediğiniz Dosya Gezgini'ne sağ tıklayın, ardından Yeni -> Kısayol'u seçin ve kısayol metnini yapıştırın. Vim'iniz başka bir yere kuruluysa, Vim yolunu değiştirmeniz gerekebilir.


7
Bu tekniğe İkili Arama Hatası Yerelleştirme adı verilir .
tommcdo

2
Hatanızı bulduktan sonra, .vimrc'nizi sürüm kontrolü altında tutmaya başlamak için iyi bir zaman olurdu :) Neredeyse her zaman garip bir şekilde davranmasını sağlayan son değişikliklerden biri olacak.
escrafford

1
Buna gerek yok -U NONEvarsa -u NONE.
Antony,

@ Martintournoij İlk kez okuyucunun anlamasını kolaylaştırmak için bir düzenleme önerdim . Umarım beğenmişsindir. Teşekkürler!
jpaugh

1
Teşekkürler @jpaugh; Bence bu düzen daha mantıklı.
Martin Tournoij 19:18

31

-Dİlk komut dosyasını bir komut dosyasından çalıştırdıktan sonra hata ayıklama moduna geçecek olan özellikle hata ayıklama için Vim parametresi vardır .

Örneğin, Vim'i herhangi bir eklenti olmadan hata ayıklama modunda çalıştırmak için

vim --noplugin -D

Tip n/ nextsonraki satırı ayrıştırmak ve baskı uygulamaya devam etmeye Enter.

Ve contya arayüze qgeri dönmek için vim.

Bir GUI sürümü kullanıyorsanız, guibu komuttan hemen sonra hata ayıklamayı başlatmak için vimrc'nize bir komut koyun .

Kullanılabilir komutların listesi için Ctrl+ tuşuna basınd

Daha fazla oku:


1
Bu en çok hata iletisine neden olan .vimrc dosyasında basit bir hata bulma konusunda yardımcı oldu. Bunu yapmak çabuk olduğu için ilk önce denemeye değer.
RichVel

1
@kenorb bu komut çok garip, beni başka bir editöre gitmekten kurtarıyor.
TheLazyChap

11

Daha önce de belirtildiği gibi, ilk önce vim -u NONE -U NONE -Nvanilya kapağının iyi çalıştığından emin olun.

Sonra normal olarak vim'i başlatın ve kontrol edin

:messages

Tüm uyarı ve hataları gösterecek olan problemden sonra içten dışa doğru.

Sonunda aşağıdaki komutu kullanarak vim'i başlatın

vim -V9logfile.log

hangi adında bir günlük dosyası oluşturur logfile.log, -V9günlük düzeyidir ve sorunu yeniden oluşturmaya çalışın.


11

Bir ipucu daha: göründüğü gibi mağara adamı olarak, neyin yürütülmekte olduğunu ve neyin yürütülmediğini görmek için.

Örneğin

if executable('ag')
  :echom "AG FOUND"

  ...
endif

Bu, if bloğun yürütülmekte olup olmadığını hızlı bir şekilde görmeme yardımcı olur. Vim yeniden başlatıldığında mesaj konsolda yazdırılır.


6
Ve echomilginç başka bir komut kullanırsanız :messagesyankılanan mesajların tam günlüğünü elde etmektir. Başlangıçtan sonra onlara bakmak bazen yararlı olabilir.
statox

Neredeyse ihtiyacım olan şey buydu, cpoption'ların değerinin vimrc'imdeki bir noktada ne olduğunu görmek istiyorum, ": set cpoptions" çıktısını nasıl yankılarım? ?
Mike Lippert,

10

Bulduğum bir şey, parçalarınızı değiştiren değişkenlerin bir koleksiyonunu tutmaktır; .vimrcböylece, bir şeyleri yorum yapmak zorunda kalmadan bölümlerini devre dışı bırakabilir veya etkinleştirebilirsiniz. Ayrıca, kuruluşunuzu düşünmeye zorlamanın hoş bir yan etkisi vardır .vimrc.

" feature toggles in vimrc
let g:vimrc_feat_pathogen               = 1
let g:vimrc_feat_core_minimal           = 1
let g:vimrc_feat_matchit                = 1
let g:vimrc_feat_options                = 1
let g:vimrc_feat_colors_and_highlight   = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding          = 1
let g:vimrc_feat_autocommand_group      = 1
let g:vimrc_feat_custom_definitions     = 1
let g:vimrc_feat_load_opam              = 1

Şunlar tarafından korunan bir bölüme örnek if:

if g:vimrc_feat_core_minimal
    set nocompatible
    filetype plugin indent on
    syntax on
endif

1

Vimrc yükleme sürem 400 saat civarında, çok yavaştı ve sadece bu satırı kaldırarak 20ms'ye düşürdüm:

silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1

Böyle harici komutları aramadığınızdan emin olun.


1
Siteye Hoşgeldiniz! Bu yararlı bir haberleşme, ancak sorulan genel sorudan biraz daha spesifik. Örneğin, bu soruya bir cevap olarak daha iyi bir şekilde eklenebilir ya da yalnızca bilgi paylaşmayı düşünüyorsanız, belki kendi sorunuzu sorabilir ve cevaplayabilirsiniz?
Zengin

0

İşte başlamanız için çok basit bir işlem.

  1. .vimrc dosyanızın içeriğini yorumla
  2. .vimrc'nizi çalıştırarak :source %veya:so $MYVIMRC
  3. Dosyanın gizli bir kısmını uncomment (genellikle yukarıdan başlayarak)
  4. Hatayı bulana kadar 2. ve 3. adımları tekrarlayın.
  5. hatayı düzeltin.

1
Doğru bir şekilde büyük harfle yazıp, üzerine noktalama yaparsanız, bu cevap daha iyi olabilir.

Bu ikili arama ile yapmayı şiddetle tavsiye ederim.
D. Ben Knoble
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.