Хорошо, это странно. Последние несколько лет я использовал символ молнии Unicode в качестве подсказки в Powershell. Я только что получил новый ноутбук и переустановил все. Я запускаю Powershell с помощью Cmder, просто создаю резервную копию всего каталога в Dropbox и восстанавливаю его на свой новый ноутбук, поэтому ничего не нужно менять. Теперь моя подсказка - два удара молнии. Функция подсказки выглядит так:
Write-Host -ForegroundColor Yellow -NoNewLine "`n" ([char]0x26a1).ToString()
Когда я запускаю эту команду, я получаю:
Итак, в основном символ 0x26a1 - это два болта вместо одного. Та же версия Windows 10, та же версия Powershell, та же версия Cmder, все те же настройки. Что может заставить PowerShell отображать символы Unicode, как это? Есть также несколько других символов, которые удвоены (например, 26aa - два круга), но большинство символов в порядке (2601 - одно облако). Я также пробовал разные шрифты в терминале, но каждый удваивается. Какая часть Windows будет нести ответственность? Спасибо!
Обновление: файл настроек
# name: Pressing Ctrl-D exits session
# type: bool
# Ctrl-D exits cmd.exe when it is pressed on an empty line.
ctrld_exits = 1
# name: Toggle if pressing Esc clears line
# type: bool
# Clink clears the current line when Esc is pressed (unless Readline's Vi mode
# is enabled).
esc_clears_line = 1
# name: Match display colour
# type: int
# Colour to use when displaying matches. A value less than 0 will be the
# opposite brightness of the default colour.
match_colour = -1
# name: Executable match style
# type: enum
# 0 = PATH only
# 1 = PATH and CWD
# 2 = PATH, CWD, and directories
# Changes how Clink will match executables when there is no path separator on
# the line. 0 = PATH only, 1 = PATH and CWD, 2 = PATH, CWD, and directories. In
# all cases both executables and directories are matched when there is a path
# separator present. A value of -1 will disable executable matching completely.
exec_match_style = 2
# name: Whitespace prefix matches files
# type: bool
# If the line begins with whitespace then Clink bypasses executable matching and
# will match all files and directories instead.
space_prefix_match_files = 1
# name: Colour of the prompt
# type: int
# Surrounds the prompt in ANSI escape codes to set the prompt's colour. Disabled
# when the value is less than 0.
prompt_colour = -1
# name: Auto-answer terminate prompt
# type: enum
# 0 = Disabled
# 1 = Answer 'Y'
# 2 = Answer 'N'
# Automatically answers cmd.exe's 'Terminate batch job (Y/N)?' prompts. 0 =
# disabled, 1 = answer 'Y', 2 = answer 'N'.
terminate_autoanswer = 0
# name: Lines of history saved to disk
# type: int
# When set to a positive integer this is the number of lines of history that
# will persist when Clink saves the command history to disk. Use 0 for infinite
# lines and <0 to disable history persistence.
history_file_lines = 10000
# name: Skip adding lines prefixed with whitespace
# type: bool
# Ignore lines that begin with whitespace when adding lines in to the history.
history_ignore_space = 0
# name: Controls how duplicate entries are handled
# type: enum
# 0 = Always add
# 1 = Ignore
# 2 = Erase previous
# If a line is a duplicate of an existing history entry Clink will erase the
# duplicate when this is set 2. A value of 1 will not add duplicates to the
# history and a value of 0 will always add lines. Note that history is not
# deduplicated when reading/writing to disk.
history_dupe_mode = 2
# name: Read/write history file each line edited
# type: bool
# When non-zero the history will be read from disk before editing a new line and
# written to disk afterwards.
history_io = 0
# name: Sets how command history expansion is applied
# type: enum
# 0 = Off
# 1 = On
# 2 = Not in single quotes
# 3 = Not in double quote
# 4 = Not in any quotes
# The '!' character in an entered line can be interpreted to introduce words
# from the history. This can be enabled and disable by setting this value to 1
# or 0. Values or 2, 3 or 4 will skip any ! character quoted in single, double,
# or both quotes respectively.
history_expand_mode = 4
# name: Support Windows' Ctrl-Alt substitute for AltGr
# type: bool
# Windows provides Ctrl-Alt as a substitute for AltGr, historically to support
# keyboards with no AltGr key. This may collide with some of Readline's
# bindings.
use_altgr_substitute = 1
# name: Strips CR and LF chars on paste
# type: enum
# 0 = Paste unchanged
# 1 = Strip
# 2 = As space
# Setting this to a value >0 will make Clink strip CR and LF characters from
# text pasted into the current line. Set this to 1 to strip all newline
# characters and 2 to replace them with a space.
strip_crlf_on_paste = 2
# name: Enables basic ANSI escape code support
# type: bool
# When printing the prompt, Clink has basic built-in support for SGR ANSI escape
# codes to control the text colours. This is automatically disabled if a third
# party tool is detected that also provides this facility. It can also be
# disabled by setting this to 0.
ansi_code_support = 1
Информация о версии ConEmu:
ConEmu 161206 [32] Startup Info
OsVer: 10.0.17763.x64, Product: 1, SP: 0.0, Suite: 0x100, SM_SERVERR2: 0
CSDVersion: , ReactOS: 0 (), Rsrv: 0
DBCS: 0, WINE: 0, PE: 0, Remote: 0, ACP: 1252, OEMCP: 437, Admin: 0
StartTime: 2019-01-04 19:41:25.472
AppID:
Desktop: `Winsta0\Default`, SessionId: 1, ConsoleSessionId: 1
Title: `ConEmu -?`
Size: {0,1},{100,100}
Flags: 0x00000000, ShowWindow: 1, ConHWnd: 0x00000000
char: 1, short: 2, int: 4, long: 4, u64: 8
Handles: 0x00000000, 0x00000000, 0x00000000
Current PID: 7588, TID: 15944
Active HKL: 0x04090409
GetKeyboardLayoutList: 0x04090409
CmdLine: ConEmu -?
ExecMod: C:\tools\Cmder\vendor\conemu-maximus5\ConEmu.exe
WorkDir: C:\tools\Cmder\vendor\conemu-maximus5
PathEnv: C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\ProgramData\chocolatey\bin;C:\Program Files\Git\cmd;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\tools;C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\;C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code;C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager;C:\Users\michael.christensen\AppData\Local\Microsoft\WindowsApps;C:\tools\Cmder;
ConFont: 0 Lucida Console 00 Consolas
CMD's AutoRuns: {not defined}
Foreground: x001F0BA4 {160,160}-{1279,807} 'ConsoleWindowClass' - C:\WINDOWS\system32\cmd.exe
MouseCursor: {246,744} MouseMonitor: 003C07AD StartMonitor: 00000000
Display: bpp=32, planes=1, align=1, vrefr=60, shade=x00000000, rast=x00007E99, dpi=120x120, per-mon-dpi=1
Monitors (dpi: WholeDesktop, Effective, Angular, RAW):
003C07AD: {0,0}-{1920,1080} (1920x1080), Working: {0,0}-{1920,1030} (1920x1030), dpi: {120,120};{120,120};{137,137};{157,157} `\\.\DISPLAY1` <<== Primary
Modules:
00400000-00611FFF 212000 C:\tools\Cmder\vendor\conemu-maximus5\ConEmu.exe
771B0000-7734BFFF 19C000 C:\WINDOWS\SYSTEM32\ntdll.dll
75510000-755EFFFF E0000 C:\WINDOWS\System32\KERNEL32.DLL
75A10000-75C08FFF 1F9000 C:\WINDOWS\System32\KERNELBASE.dll
75870000-75A08FFF 199000 C:\WINDOWS\System32\USER32.dll
74850000-74866FFF 17000 C:\WINDOWS\System32\win32u.dll
74870000-74892FFF 23000 C:\WINDOWS\System32\GDI32.dll
76CA0000-76E06FFF 167000 C:\WINDOWS\System32\gdi32full.dll
76B10000-76B8FFFF 80000 C:\WINDOWS\System32\msvcp_win.dll
75070000-75192FFF 123000 C:\WINDOWS\System32\ucrtbase.dll
76C20000-76C9DFFF 7E000 C:\WINDOWS\System32\ADVAPI32.dll
75270000-7532FFFF C0000 C:\WINDOWS\System32\msvcrt.dll
76E60000-76ED8FFF 79000 C:\WINDOWS\System32\sechost.dll
76EE0000-76F9EFFF BF000 C:\WINDOWS\System32\RPCRT4.dll
74820000-7483FFFF 20000 C:\WINDOWS\System32\SspiCli.dll
74810000-74819FFF A000 C:\WINDOWS\System32\CRYPTBASE.dll
75480000-754E1FFF 62000 C:\WINDOWS\System32\bcryptPrimitives.dll
75C10000-7615CFFF 54D000 C:\WINDOWS\System32\SHELL32.dll
76850000-7688AFFF 3B000 C:\WINDOWS\System32\cfgmgr32.dll
76760000-767E8FFF 89000 C:\WINDOWS\System32\shcore.dll
755F0000-75867FFF 278000 C:\WINDOWS\System32\combase.dll
76160000-7675AFFF 5FB000 C:\WINDOWS\System32\windows.storage.dll
754F0000-7550BFFF 1C000 C:\WINDOWS\System32\profapi.dll
75420000-75473FFF 54000 C:\WINDOWS\System32\powrprof.dll
76800000-76843FFF 44000 C:\WINDOWS\System32\shlwapi.dll
74A10000-74A1EFFF F000 C:\WINDOWS\System32\kernel.appcore.dll
74F10000-74F21FFF 12000 C:\WINDOWS\System32\cryptsp.dll
76A10000-76B09FFF FA000 C:\WINDOWS\System32\COMDLG32.dll
76900000-769FBFFF FC000 C:\WINDOWS\System32\ole32.dll
73C60000-73C67FFF 8000 C:\WINDOWS\SYSTEM32\VERSION.dll
74A20000-74ABAFFF 9B000 C:\WINDOWS\System32\OLEAUT32.dll
70FB0000-711BEFFF 20F000 C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17763.195_none_4d616d831b9c5e9f\COMCTL32.dll
73330000-73353FFF 24000 C:\WINDOWS\SYSTEM32\WINMM.dll
73D60000-73D72FFF 13000 C:\WINDOWS\SYSTEM32\NETAPI32.dll
73300000-73322FFF 23000 C:\WINDOWS\SYSTEM32\WINMMBASE.dll
73D50000-73D5AFFF B000 C:\WINDOWS\SYSTEM32\NETUTILS.DLL
73760000-73774FFF 15000 C:\WINDOWS\SYSTEM32\SAMCLI.DLL
76E10000-76E34FFF 25000 C:\WINDOWS\System32\IMM32.DLL
70B90000-70C0AFFF 7B000 C:\WINDOWS\system32\uxtheme.dll
70330000-70355FFF 26000 C:\WINDOWS\SYSTEM32\dwmapi.dll
76FA0000-77138FFF 199000 C:\WINDOWS\System32\CRYPT32.dll
767F0000-767FDFFF E000 C:\WINDOWS\System32\MSASN1.dll