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


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:



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.

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.


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

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.


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


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.