Was kann in Vim zu seltsamen Charakteren führen?

13

Ich habe dieses wirklich seltsame Problem in Vim mit dem NERD-Baum-Plugin, wo, wie Sie auf dem Bild sehen können, die Charaktere sehr seltsam auftauchen. Wo es das ahat gibt, ~ V 3/4 sollte es sein | -. Ich habe mein LANG auf en_US und LC_ALL auf en_US (in Arch Linux) gesetzt und verwende die Anonymous Pro-Schriftart, obwohl das Umschalten der Schriftart keinen Unterschied macht.

echt seltsam

Gerber
quelle
Es sieht aus wie ein Zeichensatzproblem. Ihr Plugin verwendet den UTF-8-Zeichensatz, während Ihre gvim wahrscheinlich latin1 erwartet. Es tut mir leid, dass ich im Moment keine vollständigere Lösung habe. Sie könnten versuchen, " :set fenc=utf-8" auszuführen , aber das ist nicht wirklich die langfristige Lösung.
Garyjohn
1
Es sieht in der Tat nach einem Zeichencodierungsproblem aus. Ich vermute, dass die Daten ├ (BOX ZEICHNUNGEN LICHT VERTIKAL UND RECHTS, U + 251C) enthalten, was in UTF-8 0xE2 0x94 0x9C ist. Ausgelegt als ISO-8859-1 ist das erste Byte â, die anderen sind Steuercodes. Der Rest ist unklar, aber die Interpretation der Daten auf UTF-8 zu erzwingen, sollte das Problem etwas beleuchten.
Jukka K. Korpela
Ok, ja, die Box-Zeichnung macht Sinn, ich dachte immer, es sei nur ein Strich. Anonymous Pro hat die Box Zeichen.
Tanner
@ Tom Wijsman Ich bin mir nicht sicher, was Sie an dem Titel geändert haben. Ihre Bearbeitung besagt, dass Sie den Titel bearbeitet haben, aber nichts geändert wurde.
Tanner
@Tanner: Ich habe "What could cause" und ein Fragezeichen hinzugefügt.
Tamara Wijsman

Antworten:

16

Dieser eine Liner von scrooloose auf diesem Thread hat es behoben:

let g:NERDTreeDirArrows=0

Versuchen Sie, das in Ihre Liste aufzunehmen .vimrc

(Siehe auch: Gleiche Antwort hier auf Stack Overflow )

Skye Giordano
quelle
Was zur Frucht. Problem gelöst.
Erwin Rooijakkers
6

Ich habe das Problem gelöst. Was ich getan habe, um es zu lösen:

  • Bearbeitet /etc/locale.genzu LC_ALL="en_US.UTF-8"anstelle vonLC_ALL="en_US"
  • Ran locale-genals root
  • Ran locale -a, es zeigte sich en_US.UTF-8; jedoch localezeigte LC_ALLnoch ist en_US, dann erinnerte ich mich ich ausgeführt hatte LC_ALLin meiner .bashrcletzten Nacht versucht , dieses Problem zu beheben, so änderte ich meine LANGund LC_ALLzuen_US.UTF-8
  • Reloaded das Terminal, lief gvim, Erfolg! Es ist jedoch seltsam, dass jetzt die Dreieckspfeile anstelle der Kästchen verwendet werden. Ich denke, dass es die Box für ISO-8859 und Dreiecke für UTF-8 verwendet, was mich zu dem Verdacht veranlasst, dass ich später in einem anderen Programm Probleme haben könnte. Ich werde es reparieren, wenn es darum geht.
Gerber
quelle
1
Das war nicht genug, um das für mich zu beheben. Ich musste auch vim mit multi_byte neu kompilieren. Funktioniert jetzt gut.
chris.ritsen
Ich werde heute Abend überprüfen, ob meine Version von vim mit multi_byte kompiliert ist.
Tanner
LC_ALL="en_US.UTF-8hat mir gereicht
Jakub M.
3

Vielleicht ist dies keinen Hack wert, aber es scheint, dass es für mich funktioniert hat.

Ich habe die Zeile geändert in NERDTree.vim:

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

(es war !s:running_windowsvorher)

Jetzt sehe ich kein ausgefallenes +Symbol, aber das Wechseln zwischen Verzeichnissen funktioniert immerhin aus vim heraus. Ich bin auf Solaris und glaube nicht, dass ich root-Zugriff habe.

Guru
quelle
1

Meine Änderung bestand darin, die boolesche Negation (Zeichen!) Zu entfernen. Hier ist ein Git Diff:

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

-if! nerdtree # runningWindows ()
+ if nerdtree # runningWindows ()
     rufe s: initVariable auf ("g: NERDTreeDirArrowExpandable", "--junk1-here--")
     rufe s: initVariable auf ("g: NERDTreeDirArrowCollapsible", "--junk2-here--")
 sonst
Sergei G
quelle
1

Das explizite Hinzufügen von Werten zu den nächsten 2 Variablen in .vimrc (vim config) löste das Problem für mich:

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

Dies sollten Standardwerte sein, aber aus irgendeinem Grund wurden sie auf Ubuntu / Vim nicht für mich festgelegt.

mrki
quelle
1

Wenn sich Ihr vimrc ändert guicursor, versuchen Sie, diese Zeile zu entfernen. Andere Variablen, die diese zu verursachen / zu verhindern scheinen, sind:

set guicursor=in vimrc
set t_Co=in vimrc
export TERM=xterm-256colorin der Schale

csghone
quelle