Co może powodować dziwne postacie w Vimie?


13

Mam bardzo dziwny problem w Vimie, używając wtyczki drzewa NERD, gdzie, jak widać na zdjęciu, postacie są bardzo dziwne. Gdzie jest to, ~ V 3/4 powinno być | -. Ustawiłem LANG na en_US i LC_ALL na en_US (w Arch linux) i używam czcionki Anonymous Pro, chociaż zmiana czcionki nie ma znaczenia.

naprawdę dziwne


Wygląda jak problem z charsetem. Twoja wtyczka używa zestawu znaków UTF-8, podczas gdy twój gvim prawdopodobnie oczekuje latin1. Przepraszam, że nie mam obecnie bardziej kompletnego rozwiązania. Możesz spróbować wykonać „ :set fenc=utf-8”, ale tak naprawdę nie jest to rozwiązanie długoterminowe.
garyjohn

1
Rzeczywiście wygląda to na problem z kodowaniem znaków. Domyślam się, że dane zawierają ├ (RYSUNKI RAMKI PIONOWE I PRAWE, U + 251C), czyli 0xE2 0x94 0x9C w UTF-8. Pierwszy bajt interpretowany jako ISO-8859-1 to â, pozostałe to kody sterujące. Reszta jest niejasna, ale wymuszenie interpretacji danych na UTF-8 powinno rzucić nieco światła na problem.
Jukka K. Korpela,

Ok tak, rysunek pudełka ma sens, zawsze myślałem, że to tylko kreska. Anonymous Pro ma postacie rysujące w polu.
Tanner

@Tom Wijsman Nie jestem pewien, co zmieniłeś w tytule. Twoja edycja mówi, że edytowałeś tytuł, ale nic się nie zmieniło.
Tanner

@Tanner: Dodałem „Co może powodować” i znak zapytania.
Tamara Wijsman,

Odpowiedzi:



6

Rozwiązałem problem. Co zrobiłem, aby to rozwiązać:

  • Zmieniono /etc/locale.genna LC_ALL="en_US.UTF-8"zamiastLC_ALL="en_US"
  • Run locale-genjako root
  • Ran locale -a, to pokazało en_US.UTF-8; jednak localewykazywały LC_ALLnadal en_US, potem przypomniałem sobie, że wywoził LC_ALLw mojej .bashrcostatniej nocy starają się to naprawić, więc zmieniłem LANGi LC_ALLdoen_US.UTF-8
  • Przeładowano terminal, pobiegł gvim, sukces! To dziwne, używa teraz trójkątnych znaków strzałek zamiast pudełkowych. Sprawia, że ​​myślę, że używa pudełkowych dla ISO-8859 i ewentualnie trójkątów dla UTF-8, co prowadzi mnie do podejrzeń, że mogę mieć problemy w dalszej części innego programu. Naprawię to, jeśli chodzi o to.

1
To mi nie wystarczyło, aby to naprawić; Musiałem też ponownie skompilować vima z multi_byte. Teraz działa dobrze.
chris.ritsen

Sprawdzę później, czy moja wersja vima zostanie skompilowana z multi_byte.
Tanner

LC_ALL="en_US.UTF-8wystarczyło mi
Jakub M.

3

Może to nie jest warte włamania, ale wydaje mi się, że zadziałało.

Zmieniłem linię w NERDTree.vim:

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

(było !s:running_windowswcześniej)

Teraz nie widzę żadnego wymyślnego +symbolu, ale przynajmniej przeskakiwanie katalogów działa z poziomu vima. Jestem na solaris i nie sądzę, że mam dostęp do roota.


1

Moją zmianą było usunięcie boolowskiej negacji (znak!). Oto git diff:

~ / .vim / plugged / nerdtree / plugin] $ git diff NERD_tree.vim
diff --git a / plugin / NERD_tree.vim b / plugin / NERD_tree.vim
indeks bbcc55f..6342b6c 100644
--- a / plugin / NERD_tree.vim
+++ b / plugin / 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 ()
+ if nerdtree # runningWindows ()
     call s: initVariable („g: NERDTreeDirArrowExpandable”, „--junk1-here--”)
     call s: initVariable („g: NERDTreeDirArrowCollapsible”, „--junk2-here--”)
 jeszcze

1

Bezpośrednie dodanie wartości do następnych 2 zmiennych w .vimrc (konfiguracja vim) rozwiązało problem:

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

Powinny to być wartości domyślne, ale z jakiegoś powodu nie zostały dla mnie ustawione na Ubuntu / vim.


1

Jeśli twój vimrc się zmienia guicursor, spróbuj usunąć tę linię. Inne zmienne, które wydają się powodować / zapobiegać:

set guicursor=in vimrc
set t_Co=in vimrc
export TERM=xterm-256colorw powłoce


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.