Що може спричинити дивних персонажів у Vim?


13

У мене є справді дивна проблема у Vim, використовуючи плагін дерева NERD, де, як ви бачите на малюнку, символи відображаються дуже дивно. Там, де є ахат, ~ V 3/4, це має бути | -. Я встановив свою LANG на en_US, а LC_ALL - на en_US (в Arch linux), і використовую шрифт Anonymous Pro, хоча перемикання шрифту не має ніякої різниці.

реально дивно


Це схоже на проблему з комірками. Ваш плагін використовує схему UTF-8, тоді як ваш gvim, ймовірно, очікує latin1. Вибачте, у мене поки немає більш повного рішення. Ви можете спробувати виконати " :set fenc=utf-8", але це насправді не довгострокове рішення.
garyjohn

1
Це дійсно схоже на проблему кодування символів. Я здогадуюсь, що дані містять ├ (КОРОТКИ КОРОБКИ СВІТЛО І ПРАВО, U + 251C), що становить 0xE2 0x94 0x9C в UTF-8. Інтерпретується як ISO-8859-1, перший байт - це, інші - керуючі коди. Інше незрозуміло, але примушення інтерпретації даних до UTF-8 повинно дати трохи світла для проблеми.
Юкка К. Корпела

Добре так, малюнок коробки має сенс, я завжди думав, що це просто бар і тире. Anonymous Pro містить символи для малювання поля.
Таннер

@Tom Wijsman Я не впевнений, що ти змінив щодо назви. У вашій редакції сказано, що ви редагували заголовок, але нічого не було змінено.
Таннер

@Tanner: Я додав "Що може спричинити" та знак питання.
Тамара Війсман

Відповіді:



6

Я вирішив проблему. Що я зробив, щоб вирішити це:

  • Відредагований , /etc/locale.genщоб LC_ALL="en_US.UTF-8"замістьLC_ALL="en_US"
  • Ран locale-genяк корінь
  • Побіг locale -a, показав en_US.UTF-8; однак localeпоказав, що LC_ALLвсе ще є en_US, тоді я згадав, що експортував LC_ALLв .bashrcостанню ніч, намагаючись виправити це, тож я змінив своє LANGі LC_ALLнаen_US.UTF-8
  • Перезавантажив термінал, біг gvim, успіх! Це дивно, але він використовує символи трикутної стрілки зараз, замість знаків поля. Змушує мене думати, що він використовує коробку для ISO-8859 і трикутники для UTF-8, можливо, що призводить до того, що я підозрюю, що я можу мати проблеми в дорозі в якійсь іншій програмі. Я це виправлю, коли справа дойде.

1
Цього мені було недостатньо, щоб виправити це; Мені також довелося перекомпілювати vim з multi_byte. Зараз добре працює.
chris.ritsen

Я перевірте, чи пізніше сьогодні ввечері складена моя версія vim з multi_byte.
Таннер

LC_ALL="en_US.UTF-8мені вистачило
Якуб М.

3

Можливо, це не варто хакати, але, здається, це працювало для мене.

Я змінив рядок у NERDTree.vim:

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

(це було !s:running_windowsраніше)

Тепер я не бачу жодного фантазійного +символу, але принаймні стрибки каталогів працюють зсередини vim. Я на Solaris і не думаю, що у мене є кореневий доступ.


1

Моя зміна полягала в тому, щоб видалити булеве заперечення (символ!). Ось git diff:

~ / .vim / plugged / nerdtree / plugin] $ git diff NERD_tree.vim
diff --git a / plugin / NERD_tree.vim b / plugin / NERD_tree.vim
індекс bbcc55f..6342b6c 100644
--- a / плагін / NERD_tree.vim
+++ b / плагін / 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)

-як! nerdtree # runningWindows ()
+ якщо nerdtree # runningWindows ()
     call s: initVariable ("g: NERDTreeDirArrowExpandable", "--junk1-here--")
     call s: initVariable ("g: NERDTreeDirArrowCollapsible", "--junk2-тут--")
 ще

1

Додавши значення явно до наступних 2 змінних у .vimrc (vim config) вирішив проблему для мене:

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

Це повинні бути значення за замовчуванням, але чомусь вони не були встановлені для мене на ubuntu / vim.


1

Якщо ваш vimrc змінюється guicursor, спробуйте видалити цей рядок. Інші змінні, які, здається, спричиняють / перешкоджають цим:

set guicursor=in vimrc
set t_Co=in vimrc
export TERM=xterm-256colorв оболонці


1

У моєму випадку випуск був пов’язаний з проблемою локальної мови. Рішення:

  1. Встановлене значення:

    export LC_ALL = "en_US.UTF-8"

  2. Виконати vim:

    вим

Докладні відомості про проблему з мовою див. Тут:

Неможливо встановити LC_CTYPE за мовою за замовчуванням: такого файлу чи каталогу немає

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.