Что может вызвать странные символы в Vim?

15323
Tanner

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

очень странно

13
Это похоже на проблему с кодировкой. Ваш плагин использует кодировку UTF-8, в то время как ваш gvim, вероятно, ожидает latin1. Извините, у меня нет более полного решения в данный момент. Вы можете попробовать выполнить "`: set fenc = utf-8` ", но это не является долгосрочным решением. garyjohn 12 лет назад 0
Это действительно похоже на проблему кодировки символов. Я предполагаю, что данные содержат ├ (КОРОБКА ЧЕРТЕЖЕЙ СВЕТОВОЙ ВЕРТИКАЛЬНОЙ И ПРАВОЙ, U + 251C), что составляет 0xE2 0x94 0x9C в UTF-8. Интерпретируется как ISO-8859-1, первый байт - â, остальные - управляющие коды. Все остальное неясно, но форсирование интерпретации данных в UTF-8 должно пролить свет на проблему. Jukka K. Korpela 12 лет назад 1
Хорошо, да, рисунок на коробке имеет смысл, я всегда думал, что это просто полоса и тире. Anonymous Pro имеет поле для рисования символов. Tanner 12 лет назад 0
@ Tom Wijsman Я не уверен, что вы изменили в названии. Ваше редактирование говорит, что вы редактировали заголовок, но ничего не изменилось. Tanner 12 лет назад 0
@Tanner: я добавил «Что может вызвать» и знак вопроса. Tom Wijsman 12 лет назад 0

7 ответов на вопрос

16
Skye Giordano

This one liner from scrooloose on this thread fixed it:

let g:NERDTreeDirArrows=0 

Try putting that in your .vimrc

(see also: same answer posted here on Stack Overflow)

Что за фрукт. Задача решена. Erwin Rooijakkers 10 лет назад 0
6
Tanner

Я решил проблему. Что я сделал, чтобы решить это:

  • Отредактированный, /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, возможно, что наводит меня на мысль, что у меня могут быть проблемы в будущем в какой-то другой программе. Я исправлю это, когда дело доходит до этого.
Этого было недостаточно, чтобы исправить это для меня; Мне также пришлось перекомпилировать vim с помощью multi_byte. Работает нормально сейчас. chris.ritsen 12 лет назад 1
Я проверю, скомпилирована ли моя версия vim с multi_byte сегодня вечером. Tanner 12 лет назад 0
Мне хватило `LC_ALL =" en_US.UTF-8` Jakub M. 9 лет назад 0
3
Guru

Может быть, это не стоит взломать, но, кажется, это сработало для меня.

Я изменил строку в NERDTree.vim:

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

(это было !s:running_windowsраньше)

Сейчас я не вижу каких-либо причудливых +символов, но по крайней мере прыжковые каталоги работают изнутри vim. Я на солярисе и не думаю, что у меня есть root-доступ.

1
Sergei G

My change was to remove boolean negation (character !). Here is a 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) 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--") else 
1
mrki

Явное добавление значений к следующим двум переменным в .vimrc (vim config) решило проблему для меня:

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

Это должны быть значения по умолчанию, но по какой-то причине они не были установлены для меня в Ubuntu / Vim.

1
csghone

Если ваш vimrc меняется guicursor, попробуйте удалить эту строку. Другие переменные, которые, кажется, вызывают / предотвращают это:

set guicursor=в vimrc
set t_Co=в vimrc
export TERM=xterm-256colorв оболочке

1
0x8BADF00D

В моем случае проблема была связана с проблемой локали. Решение:

  1. Установить значение:

    export LC_ALL = "en_US.UTF-8"

  2. Запустите vim:

    напор

Смотрите подробности для локали проблемы здесь:

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

Похожие вопросы