Как отключить подсветку синтаксиса в консоли?
Я просто хочу, чтобы PowerShell был черным текстом на белом фоне. Тем не менее, PowerShell v5 выделяет мои команды и делает их желтыми, что невозможно увидеть. Есть ли способ отключить ВСЕ подсветку синтаксиса в PowerShell?
6 ответов
Окрашивание синтаксиса в PowerShell v5 можно изменить с помощью Set-PSReadlineOption
, Следующая команда устанавливает передний план и цвет фона для комментариев к переднему плану и цвету фона оболочки:
Set-PSReadlineOption -TokenKind Comment -ForegroundColor $Host.UI.RawUI.ForegroundColor -BackgroundColor $Host.UI.RawUI.BackgroundColor
или просто чёрно-белое
Set-PSReadlineOption -TokenKind Comment -ForegroundColor Black -BackgroundColor White
Вы должны сделать это для всех TokenKind
Значения для полного удаления синтаксической раскраски.
Если вы также хотите изменить цвета выходного потока, вы можете сделать это через свойства хоста. PrivateData
объект:
$Host.PrivateData.WarningForegroundColor = $Host.UI.RawUI.ForegroundColor
$Host.PrivateData.WarningBackgroundColor = $Host.UI.RawUI.BackgroundColor
...
Поместите все эти утверждения в свой профиль, чтобы применять их при каждом запуске PowerShell, например:
$HOME\Documents\WindowsPowerShell\profile.ps1
Синтаксис изменен в недавнем обновлении. Старый синтаксис теперь выдаст вам неприятное сообщение об ошибке:
Set-PSReadLineOption : A positional parameter cannot be found that accepts argument 'Command'.
At line:1 char:1
+ Set-PSReadLineOption 'Command' white black
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-PSReadLineOption], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.SetPSReadLineOption
или
Set-PSReadLineOption : A parameter cannot be found that matches parameter name 'TokenKind'.
At line:1 char:22
+ Set-PSReadlineOption -TokenKind Comment -ForegroundColor 'black' -Bac ...
+ ~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-PSReadLineOption], Par ameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.SetP SReadLineOption
Обновленный синтаксис, кажется, требует от вас передать словарь новых настроек.
Set-PSReadLineOption -Colors @{None='black';Comment='black';Keyword='black';String='black';Operator='black';Variable='black';Command='black';Parameter='black';Type='black';Number='black';Member='black'}
См. Также https://github.com/PowerShell/PSReadLine/issues/738
Set-PSReadLineOption -Colors @{
Command = 'White'
Number = 'White'
Member = 'White'
Operator = 'White'
Type = 'White'
Variable = 'White'
Parameter = 'White'
ContinuationPrompt = 'White'
Default = 'White'
}
Пример, как отключить подсветку всего синтаксиса:
Set-PSReadlineOption -TokenKind Parameter -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind String -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Operator -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Type -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Variable -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Number -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Member -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Command -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Comment -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -TokenKind Keyword -ForegroundColor DarkYellow -BackgroundColor DarkMagenta
Set-PSReadlineOption -ContinuationPromptForegroundColor DarkYellow -ContinuationPromptBackgroundColor DarkMagenta
Set-PSReadlineOption -EmphasisForegroundColor DarkYellow -EmphasisBackgroundColor DarkMagenta
Set-PSReadlineOption -ErrorForegroundColor DarkYellow -ErrorBackgroundColor DarkMagenta
(Get-Host).PrivateData.ErrorForegroundColor="DarkYellow"
(Get-Host).PrivateData.ErrorBackgroundColor="DarkMagenta"
(Get-Host).PrivateData.WarningForegroundColor="DarkYellow"
(Get-Host).PrivateData.WarningBackgroundColor="DarkMagenta"
(Get-Host).PrivateData.DebugForegroundColor="DarkYellow"
(Get-Host).PrivateData.DebugBackgroundColor="DarkMagenta"
(Get-Host).PrivateData.VerboseForegroundColor="DarkYellow"
(Get-Host).PrivateData.VerboseBackgroundColor="DarkMagenta"
(Get-Host).PrivateData.ProgressForegroundColor="DarkYellow"
(Get-Host).PrivateData.ProgressBackgroundColor="DarkMagenta"
get-help set-psreadlineoption
https://docs.microsoft.com/en-us/powershell/module/PSReadline/Set-PSReadlineOption
'None', 'Comment', 'Keyword', 'String', 'Operator',
'Variable', 'Command', 'Parameter', 'Type', 'Number', 'Member' |
foreach { set-psreadlineoption $_ black white }
Вот как я делаю это в OSX для вещей, которые меня сразу беспокоят:
$a = get-psreadlineoption | select ErrorBackgroundColor
$clear = $a.ErrorBackgroundColor
'command','number','operator','member' |
foreach { set-psreadlineoption $_ black $clear }