О-о-о-о-о, темы некорректно работают со шрифтом Powerline и ConEmu

Я использую PowerShell в качестве оболочки в Windows 7. Я считаю, что ConEmu - действительно хороший терминал. Поскольку у меня нет Windows 10, я не могу использовать Windows Terminal, но ConEmu совсем неплох. Я узнал о posh-git и oh-my-posh и о том, как они могут настроить вашу работу с PowerShell. Я установил oh-my-posh, и тема Paradox выглядела неплохо. Но я видел несколько пустых ящиков в случайных местах в моей подсказке. парадокс-проблема

И это проблема, с которой я сталкиваюсь по всем темам. Цвета и дизайн прекрасны, и я хочу использовать это, но эти странные коробки мешают мне сделать это. Я также хотел бы сказать, что я использую Cascadia Code в качестве шрифта, а также это версия Cascadia Code для Powerline. Итак, я думаю, что это должно работать как исключение. Затем, пытаясь исправить это, я зашел на nerdfont.com и установил Cascadia Code оттуда, в отличие от официального репозитория Microsoft GitHub. Затем я установил шрифт ConEmu на Cascadia, который я установил из nerdfonts, и произошло следующее:  введите описание изображения здесь

Лучше в том смысле, что я могу видеть символ Python и еще несколько символов, но все же есть одно поле, которое невозможно отобразить. Но станет хуже, если я изменю репозиторий:  введите описание изображения здесь

После слова «хозяин» стоит странный вопросительный знак. Я думаю, что выполнил все предварительные условия для использования oh-my-posh, такие как установка posh-git и PSReadLine, наличие шрифта Powerline Cascadia Code, а также использование ConEmu, как они официально предлагают. Я был бы очень признателен, если бы кто-нибудь мог помочь мне выйти из этого беспорядка и посоветовать, что делать, чтобы исправить мою подсказку.

P.S Я использую PowerShell 7 Core.


person Arafat Khan    schedule 28.04.2020    source источник


Ответы (3)


Когда вы видите поля, это означает, что в шрифте нет указанного символа. например существует множество специализированных шрифтов, в которых не определено расположение каждого символа.

Прямо на странице oh-my-posh GitHub, цитата:

В случае, если вы заметили странные глифы после установки выбранного шрифта, убедитесь, что они доступны (возможно, они находятся в другом месте шрифта, если это так, настройте правильный значок $ThemeSettings). Если окажется, что нужный символ не поддерживается, выберите другой шрифт.

Также на странице oh-my-posh GitHub используется следующий шрифт:

Я использую шрифты Powerline, их можно найти в отличном репозитории. Я использую Meslo LG M Regular для шрифта Powerline Nerd Font

Если использование Meslo LG M Regular не решает вашу проблему, вам необходимо вручную переназначить значки на правильные местоположения Unicode в выбранном шрифте.

Для версии 2 Oh My Posh необходимо отредактировать переменную $ThemeSettings. Следуйте инструкциям на GitHub по настройке параметров темы. например.:

$ThemeSettings.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0xE0A0) 

Для версии 3+ Oh My Posh вам необходимо отредактировать файл JSON конфигурации, чтобы внести изменения, например:

...
{
    "type": "git",
    "style": "powerline",
    "powerline_symbol": "\uE0B0",
....
person HAL9256    schedule 28.04.2020
comment
Спасибо за ответ. Это, безусловно, помогло мне. Но мне нужно знать еще одну информацию. Я вручную исправил неработающие символы (пустые поля), такие как символ git, символ индикатора подсказки, символ неудачной команды и т. Д., Чтобы убедиться, что это не странные глифы, а хорошие символы. Я использовал для этого $ ThemeSettings и поместил все это в свой профиль .ps1. Но при установке новой темы мои настройки отменяются. Единственный способ исправить это - жестко закодировать мои настройки в самих файлах .ps1 тем. Это хорошая идея или мне стоит заняться чем-нибудь еще? - person Arafat Khan; 28.04.2020
comment
Поскольку профили ps1 запускаются только в начале сеанса PowerShell, при изменении тем вам может потребоваться повторно запустить команды $ThemeSettings, чтобы изменения вступили в силу. Лично я бы сохранил настройки внутри профиля, так как они конкретно связаны со шрифтами. Если вы жестко закодируете их в файлы тем .ps1, они могут быть перезаписаны любыми обновлениями. - person HAL9256; 28.04.2020
comment
Может быть, я мог бы написать функцию или что-то, что я мог бы вызвать сразу после изменения моей темы, которая будет правильно обновлять символы в рамке. В любом случае, мне было любопытно, работают ли шикарные темы в VS Code Terminal. И я увидел, что терминал VS Code ужасно непригоден для использования, если задана тема. Мой шрифт VS Code также является шрифтом Cascadia Code Nerd. Вот почему я использую Git Bash в качестве оболочки в VS Code. Так это ожидаемое поведение? Разве oh-my-posh НЕ должен работать в VS Code Terminal? - person Arafat Khan; 28.04.2020
comment
Короткий ответ. Консоль PowerShell не отображает то же самое, что и терминал VS Code. Помните, что VS Code - это приложение Electron, поэтому терминал PowerShell визуализируется с использованием нескольких элементов <canvas> или может быть изменен для визуализации с помощью DOM. Попытка заставить любую тематику работать одинаково для обоих - это надежда и молитва ;-). - person HAL9256; 28.04.2020
comment
Привет, спасибо за всю эту информацию и знания. Удачного вам дня, и я выберу ваш ответ как правильный. - person Arafat Khan; 28.04.2020
comment
В настоящее время у меня такая же проблема с отображением настроек красной базы. Я пробовал менять шрифты, но безуспешно. Когда я перехожу в $ ThemeSettings, я вижу, что значение ErrorCount равно 1, есть ли способ просмотреть эту ошибку? - person avenmia; 30.05.2020
comment
Я не могу получить доступ к файлу $ ThemeSettings. Где это находится? - person U.Savas; 06.03.2021
comment
@ U.Savas $ThemeSettings находится в версии 2 программы Oh My Posh. Oh My Posh V3 использует .JSON файлы для конфигурации, поэтому переменной $ThemeSettings больше нет. - person HAL9256; 09.03.2021

Я столкнулся с той же проблемой и решил ее, отредактировав следующий файл: C:\Path\To\Your\WindowsPowerShell\Modules\oh-my-posh\2.0.496\defaults.ps1

Внутри PromptSymbols должно быть что-то под названием VirtualEnvSymbol. Просто измените значение с текущего на какое-нибудь из перечисленных выше. Например,

VirtualEnvSymbol = [char]::ConvertFromUtf32(0x26A1)
person Sachin Paryani    schedule 05.02.2021

Я столкнулся с той же проблемой и решил установить шрифты.

  1. Загрузите шрифты со страницы https://github.com/microsoft/cascadia-code/releases
  2. Разархивировать
  3. Щелкните шрифт правой кнопкой мыши и выберите Установить шрифт для всех пользователей введите описание изображения здесь
  4. Наслаждаться !

От: https://github.com/microsoft/cascadia-code

person XOR    schedule 03.02.2021