Vim'de garip karakterlere ne sebep olabilir?


13

Vim'de NERD ağaç eklentisini kullanarak bu garip bir problemim var, resimde gördüğünüz gibi karakterler çok garip görünüyor. Ahat olan yerlerde ~ V 3/4 | | olmalıdır. LANG'ımı en_US ve LC_ALL olarak en_US (Arch linux'da) olarak ayarlıyorum ve Anonymous Pro yazı tipini kullanıyorum, ancak yazı tipini değiştirmek farketmez.

çok garip


Karakter kümesi sorunu gibi görünüyor. Eklentiniz UTF-8 karakter setini kullanıyor, bu arada gviminiz latin bekliyordu1. Üzgünüm şu anda daha eksiksiz bir çözümüm yok. " :set fenc=utf-8" Uygulamasını çalıştırmayı deneyebilirsiniz , ancak bu gerçekten uzun vadeli bir çözüm değil.
garyjohn

1
Gerçekten bir karakter kodlama sorunu gibi görünüyor. Tahminim, verilerin UTF-8'deki 0xE2 0x94 0x9C olan ├ (KUTU ÇİZİMLERİ IŞIK DİKEY VE SAĞ, U + 251C) içerdiğidir. ISO-8859-1 olarak yorumlanan ilk bayt â, diğerleri kontrol kodlarıdır. Gerisi belirsizdir, ancak verilerin yorumunu UTF-8'e zorlamak soruna biraz ışık tutmalıdır.
Jukka K. Korpela

Tamam evet, kutu çizimi mantıklı geliyor, her zaman sadece bir çubuk ve çizgi olduğunu düşündüm. Anonim Pro kutu çizim karakterlerine sahiptir.
Tanner,

@Tom Wijsman Başlık hakkında neyi değiştirdiğinizden emin değilim. Düzenlemeniz başlığı düzenlediğinizi söylüyor, ancak hiçbir şey değişmedi.
Tanner

@Tanner: "Neye sebep olabilir" ve bir soru işareti ekledim.
Tamara Wijsman

Yanıtlar:



6

Sorunu çözdüm. Bunu çözmek için ne yaptım:

  • Düzenlenen /etc/locale.geniçin LC_ALL="en_US.UTF-8"yerineLC_ALL="en_US"
  • locale-genKök olarak koştu
  • Koştu locale -a, gösterdi en_US.UTF-8; Ancak localegösterdi LC_ALLhala ediliyor en_US, o zaman ben ihraç etmiş hatırladım LC_ALLbenim de .bashrcdün gece Bunu düzeltmek için çalışıyoruz, bu yüzden değiştirdim LANGve LC_ALLhiçen_US.UTF-8
  • Terminali yeniledi, kaçtı gvim, başarı! Yine de garip, şimdi kutudakiler yerine üçgen ok karakterlerini kullanıyor. Muhtemelen ISO-8859 için olanları ve UTF-8 için üçgenleri kullandığını düşünmeme neden oluyor, bu da başka bir programda yolda sorun yaşayabileceğimden şüphelenmeme neden oluyor. Konuya gelince düzelteceğim.

1
Bu benim için bunu düzeltmek için yeterli değildi; Ayrıca vim'i multi_byte ile yeniden derlemek zorunda kaldım. Şimdi iyi çalışıyor.
chris.ritsen

Vim versiyonumun bu akşam multi_byte ile derlenip derlenmediğini kontrol edeceğim.
Tanner

LC_ALL="en_US.UTF-8benim için yeterliydi
Jakub M.

3

Belki bu bir kesmeye değmez ama benim için çalıştığı anlaşılıyor.

Satırı değiştirdim NERDTree.vim:

call s:initVariable("g:NERDTreeDirArrows", s:running_windows) 

( !s:running_windowsönceydi)

Şimdi hiçbir fantezi +sembolü görmüyorum , ancak en azından atlama dizinleri vim içinden çalışıyor. Solaris'tayım ve kök erişimim olduğunu sanmıyorum.


1

Değişikliğim, boole olumsuzluğunu ortadan kaldırmaktı (karakter!). İşte bir git diff:

~ / .vim / plugged / nerdtree / plugin] $ git diff NERD_tree.vim
diff - / a eklentisi / NERD_tree.vim b / eklentisi / NERD_tree.vim
endeks bbcc55f..6342b6c 100644
--- a / eklenti / NERD_tree.vim
+++ b / eklenti / NERD_tree.vim
@@ -66,7 +66,7 @@ call s: initVariable ("g: NERDTreeShowHidden", 0)
 call s: initVariable ("g: NERDTreeShowLineNumbers", 0)
 call s: initVariable ("g: NERDTreeSortDirs", 1)

-if! nerdtree # runningWindows ()
+ eğer nerdtree # runningWindows ()
     call s: initVariable ("g: NERDTreeDirArrowExpandable", "--junk1-here--")
     call s: initVariable ("g: NERDTreeDirArrowCollapsible", "--junk2-here--")
 Başka

1

Açıkça değer eklemek, .vimrc (vim config) içindeki bir sonraki 2 değişkene sorunumu çözdü:

let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'

Bunlar varsayılan değerler olmalıdır ancak bazı nedenlerden dolayı benim için ubuntu / vim'de ayarlanmadı.


1

Vimrc'niz değişiyorsa guicursor, bu satırı kaldırmayı deneyin. Bunlara neden / önleyici görünen diğer değişkenler:

set guicursor=vimrc
set t_Co=içinde vimrc
export TERM=xterm-256coloriçinde kabuk içinde


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.