Ваш пейджер отображает свое содержимое в альтернативном буфере экрана , который выбирает «альтернативный режим прокрутки» (, который вы видите, потому что вертикальная полоса прокрутки меняется — она больше не позволяет прокручивать содержимое окна ), и в этом режиме терминал преобразует движение колесика мыши в элементы управления курсором вверх/вниз. Это было введено в XTerm давным-давно и широко поддерживается в современных терминалах.
Чтобы увидеть, какая последовательность используется для переключения на альтернативный экранный буфер, запустите
tput smcup | od -a
Вы должны увидеть esc [ ? 1 0 4 9 h
. Это то, что пейджер отправляет на терминал. ↓ представлен CSI B, который терминал отправляет запущенному приложению.
Если ваш пейджер less
, вы можете отключить это, экспортировав LESS=X
в среду (это пропускает инициализацию терминала ).
Прочитав некоторые статьи и не найдя правильного ответа, я обнаружил, что при запуске '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
Можете идти.
Похоже, эта проблема возникает из-за того, что в вашем дистрибутиве 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.