2013-10-10 2 views
24

Я использую oh-my-zsh в Arch linux с загруженной темой robbyrussell. Когда я пытаюсь выполнить вкладку, я заканчиваю остальными символами, добавленными в приглашение. Если я удалю автоматически заполненные символы, оставшиеся символы не удаляются.Остальные символы при заполнении вкладки с помощью ZSH

Например, если я ввожу:

~ /etc 

затем вкладку, она превращается в

~ /e/etc/ 

со списком опций ниже. Даже если удалить /etc/, то /e остается и я застрял:

~ /e 

Я не могу удалить /e. Я должен выполнить команду, чтобы избавиться от остаточного символа.

Любая идея, что здесь происходит?

+0

Без дополнительной информации, это, вероятно, недостающий символ или два в вашем приглашении. Прочтите [этот вопрос] (http://stackoverflow.com/questions/7957435/zsh-auto-complete-screws-up-command-name/10644062#10644062), например. Используете ли вы последнюю версию oh-my-zsh? Вы вообще изменили приглашение? Могу ли я скачать oh-my-zsh из GitHub для тестирования и иметь точное представление о вашей настройке? :) – simont

ответ

0

Оказывается, это была проблема локали. Запуск locale-gen не работал, пока я где-то не удалил какой-либо файл конфигурации и не перезапустил его.

Ваш совет подходит для подсказки. Спасибо.

+0

Вы можете быть более конкретным в решении, другие пользователи, такие как я, могут не понимать, как вы решили проблему. –

+2

Хотелось бы, чтобы я был более конкретным, но я изначально перешел с UTF8 на латинский в /etc/locale.gen, и когда я пошел, чтобы изменить его на UTF8, у меня возникли проблемы. Я удалил много файлов, и я не могу найти статью, которая рассказывала мне, какой файл разрешил для меня. В конце концов, это привело к тому, что /etc/locale.gen правильно и работает locale-gen как root. Я установил новую Arch в том же поле и не имел этой проблемы снова с тех пор. –

17

Как было предложено simont, вероятно, что приглашение, которое вы используете, использует непечатаемые символы (например, цветовые escape-коды), но не означает, что эти символы непечатаемы. Поэтому, когда запрос перерисовывается, терминал полагает, что подсказка шире, чем на самом деле.

Вы указываете, что последовательность символов в запросе zsh имеет нулевую ширину с использованием разделителей %{ и %}. Например моя подсказка есть:

%{%(?.%F{green}.%F{red})%}➜%{%f%} 

(?...) является тройным, который задает цвет строки, и это было отмечено выше, чтобы показать, что она равна нуль ширины. Точно так же %f сбрасывает цвет, который также был отмечен.

Вы можете проверить изменения в своем приглашении, обновив переменную PS1, чтобы вы могли попробовать различные варианты и посмотреть, что сработает для вас.

Вы можете пометить любым символами, поэтому будьте осторожны, чтобы сделать ваш запрос слишком коротким!

5

У меня была такая же проблема, так что на моих поисках решения я столкнулся с этой статьей: https://wiki.archlinux.org/index.php/Locale

И, как и предполагалось, чтобы включить некоторые локали системы в масштабах, нужно просто раскомментировать нужный локали на /etc/locale.gen, например, в моем случае:

en_US.UTF-8 UTF-8 

После сохранения изменений на файл, выполните (как корень) в командной строке:

locale-gen 

Перезагрузка, и она работает!(По крайней мере для меня)

48

Кажется, я имел проблемы с конфигурацией локали и не конфигурации

UTF8 В моем случае исправление было:

export LC_ALL="en_US.UTF-8" 

и держать его постоянное добавление линии к .zshrc :

echo "export LC_ALL=en_US.UTF-8" >> .zshrc 

Подробнее в Ubuntu док https://help.ubuntu.com/community/Locale

+1

Это должен быть принятый ответ. отрицательный голосовой ответ, как принято, является неудачным. – Harry

+0

Большое спасибо. Это очень помогает мне. – MOHRE

+0

Разоблачение следующей строки в стандартном '.zshrc' также показалось мне полезным для меня: ' export LANG = en_US.UTF-8' – skube

0

У меня была аналогичная проблема, хотя и не с oh-my-zsh, а с подсказкой; для меня решение было удалить из моей конфигурации:

ZLE_PROMPT_INDENT=0 
Смежные вопросы