OpenSSH через powershell - vi становится синим

674
p0lar_bear

Я на Windows 10, использую Win32-OpenSSH через Powershell для подключения к машине CentOS 7 в моей сети.

Если я запускаю viновый файл или иногда открываю другие файлы, любой новый текст в моем окне становится синим.

enter image description here

Это продолжается, пока я не закрою окно Powershell.

Любая идея, почему это происходит, и если есть обходной путь, который не предполагает использование другого sshклиента или среды? Я понимаю, что могу просто использовать "правильный" эмулятор терминала, такой как PuTTYm, но мой вопрос в том, есть ли известное исправление для этого конкретного сценария.

1
Это происходит, когда вы используете другой клиент (например, PuTTY) для подключения? Kamil Maciorowski 6 лет назад 0
Вы используете vim, neovim, nvi или ex-vi? grawity 6 лет назад 0
@KamilMaciorowski Я не пробовал другой эмулятор терминала. Однако этого не происходит, когда я использую компьютер напрямую, то есть подключаясь к нему через диспетчер Hyper-V. p0lar_bear 6 лет назад 0
@ Grawity Я понятия не имею, из головы. Поскольку буфер показывает, что я выполняю `vi`, а это минимальная установка CentOS 7 с минимальными изменениями, я предполагаю, что это просто vanilla vi. И я помню, как пытался выполнить `vim` и получить« команду не найдена ». p0lar_bear 6 лет назад 0

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

0
Kaveh Vahedipour

Powershell не является эмулятором терминала и поэтому будет в восторге от соответствующего персонажа дистанционного управления потоком и визуального контроля.

Пока вы планируете использовать ssh в скрипте, вас не будут волновать рыбные цвета, они не будут отображаться в выходных данных. Однако возможно то, что у вас получаются искаженные персонажи. подобно

Однако, если это интерактивная оболочка, рассмотрите возможность использования эмулятора терминала, такого как putty.

Я более чем осведомлен о том, что консоль Windows не пытается и не пытается эмулировать TTY VT100. Тем не менее, разновидность Microsoft клиента OpenSSH включает в себя интерпретатор VT100, и сказано, что он может обрабатывать большинство сценариев TTY, с оговоркой, что некоторые интерактивные * nix-приложения имеют некоторые проблемы. https://github.com/PowerShell/Win32-OpenSSH/wiki/TTY-PTY-support-in-Windows-OpenSSH Вопрос был о том, существует ли какой-либо известный обходной путь для этого, т. е. сталкивались ли с этим другие пользователи WinOpenSSH, или если это случилось с другими эмуляторами TTY. p0lar_bear 6 лет назад 0
Проблема не в клиенте ssh, т.е. в openssh. Проблема в том, что `cmd` или` powershell` получают управляющие знаки, которые манипулируют цветами и т. Д. В клиентском терминале, такие как `\ [\ e] 0;`, и вместо того, чтобы поворачивать зеленый шрифт, просто облажаются. Другими словами, если вы использовали клиент openssh в его собственном окне пользовательского интерфейса, у вас все будет хорошо. Кстати, тот же мусор будет отображаться, если вы используете `plink.exe` из PuTTY в оболочке cmd. Я был бы очень признателен, если бы вы приняли ответ, если это помогло вам, так как какой-то осел решил опровергнуть правильный ответ. Kaveh Vahedipour 6 лет назад 0
Не секрет, что исторически Windows и * nix плохо взаимодействуют. Microsoft знает об этом, и у них есть форк OpenSSH, созданный специально для использования с `cmd` /` powershell`, который я использую. Это действительно проблема с этим конкретным клиентом `ssh`, поскольку встроенный интерпретатор VT100, вероятно, не обрабатывает некоторые управляющие коды таким образом, который приводит к ожидаемому результату. Как вы можете видеть на моем скриншоте, я не получаю «мусорный» вывод, как если бы я запускал скрипт или двоичный файл, предназначенный для терминала ANSI без дальнейшей обработки. p0lar_bear 6 лет назад 0
Я был бы очень признателен, если бы вы приняли мой ответ. Kaveh Vahedipour 6 лет назад 0
Нет. Кроме того, я сказал «осел», спасибо, так как этот ответ выглядит так же, как избиение Windows ради избиения Windows. Ваше отношение к отрицательному голосу (то есть, называя меня ослом и утверждая, что ваш ответ - правильный ответ) усиливает это восприятие. Хотя поразмысливаю, признаюсь, мне было непонятно. Я отменю отрицательное голосование, потому что я понимаю, что мне нужно перефразировать мой вопрос, поскольку я хотел понять, почему это происходит, и знать, был ли обходной путь, который не был "просто используйте PuTTY lol", и, похоже, мое намерение не было " т передал. p0lar_bear 6 лет назад 1
... И я не могу отменить голосование, пока вы не отредактируете ответ. Цифры. : / p0lar_bear 6 лет назад 0
При всем моем уважении, я действительно не вижу, где ответ бьет за бить окна. Мне 47 лет и за эти годы. Первая строка просто говорит, что powershell не является эмулятором терминала. Это не значит быть одним, никогда. Остальное "подумайте об использовании ...". Во всяком случае, много, спасибо. Kaveh Vahedipour 6 лет назад 0
Спасибо, этот ответ читается намного лучше. Я приму это как ответ, если в ближайшее время никто не придет и не опубликует ответ, который имеет обходной путь / исправление. Извиняюсь за скрещенные сигналы. p0lar_bear 6 лет назад 1

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