Ошибка запуска рыбы _config web ui в WSL

Ваш пейджер отображает свое содержимое в альтернативном буфере экрана , который выбирает «альтернативный режим прокрутки» (, который вы видите, потому что вертикальная полоса прокрутки меняется — она больше не позволяет прокручивать содержимое окна ), и в этом режиме терминал преобразует движение колесика мыши в элементы управления курсором вверх/вниз. Это было введено в XTerm давным-давно и широко поддерживается в современных терминалах.

Чтобы увидеть, какая последовательность используется для переключения на альтернативный экранный буфер, запустите

tput smcup | od -a

Вы должны увидеть esc [ ? 1 0 4 9 h. Это то, что пейджер отправляет на терминал. представлен CSI B, который терминал отправляет запущенному приложению.

Если ваш пейджер less, вы можете отключить это, экспортировав LESS=Xв среду (это пропускает инициализацию терминала ).

1
07.07.2020, 10:33
2 ответа

Прочитав некоторые статьи и не найдя правильного ответа, я обнаружил, что при запуске 'help'он открывает браузер и указывает на

file://wsl%24/Ubuntu-20.04/usr/share/doc/fish/index.html#variables-for-changing-highlighting-colors

и когда мы пытаемся запустить fish _config , он указывает на

"file://wsl%24/Ubuntu/tmp/web_configpo_b9wan.html"

Это означает, что нам нужно изменить наш wsl%24/Ubuntu на wsl%24/Ubuntu -20.04.

Для этого прежде всего откройте каталог webconfig.

cd /usr/share/fish/tools/web_config

Теперь дайте разрешение на запись в файл webconfig.py.

sudo chmod 777 webconfig.py

Измените следующую строку с "file:///" + f.name"на "file://wsl%24/Ubuntu-20.04" + f.nameв файле webconfig.py.


Верните права доступа к файлу в исходное состояние, запустивchmod 644 webconfig.py

Можете идти.

4
18.03.2021, 23:21

Похоже, эта проблема возникает из-за того, что в вашем дистрибутиве WSL2 может не быть последней версии fish. Решением было бы исправить обнаружение wslдля fishв /usr/share/fish/tools/web_config/webconfig.py.

Отредактируйте свой /usr/share/fish/tools/web_config/webconfig.pyи измените функцию is_wsl(), чтобы она была такой же, как эта :

.
 def is_wsl(): 
     """ Return whether we are running under the Windows Subsystem for Linux """ 
     if "linux" in platform.system().lower() and os.access("/proc/version", os.R_OK): 
         with open("/proc/version", "r") as f: 
             # Find 'Microsoft' for wsl1 and 'microsoft' for wsl2 
             if "microsoft" in f.read().lower(): 
                 return True 
     return False

В частности, изменить «Microsoft» на «Microsoft»(Заглавная буква «m» в нижнем регистре)

Для получения дополнительной информации прочитайте этот выпуск , открытый в репозитории fish shell на github.

1
17.04.2021, 05:01

Теги

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