Terminal: Ctrl- ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋Š” ์ด์ „ ๋‹จ์–ด ๋ถ„๋ฆฌ๋กœ ๋‹ค์‹œ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 05์›” 13์ผ  ยท  47์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/terminal

๋Œ€์‹  ๋ฌธ์ž๋ณ„๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Area-TerminalControl Help Wanted Issue-Bug Product-Terminal Resolution-Fix-Committed

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

PSReadLine ์ˆ˜์ • :
Set-PSReadLineKeyHandler -Key Ctrl+h -Function BackwardKillWord

๋ชจ๋“  47 ๋Œ“๊ธ€

ํ„ฐ๋ฏธ๋„ ์•ฑ์— ํ‚ค ๋ฐ”์ธ๋”ฉ์ด ๋ณด์ด์ง€ ์•Š์•„ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@kapperchino ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ Ctrl + Backspace๊ฐ€ ์ง๋ ฌํ™”๋˜์–ด ๋‹ค๋ฅธ ์ชฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ „์†ก๋˜์–ด์•ผํ•˜๋Š” VT ์‹œํ€€์Šค๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฆฌ ๋ฐ”์ธ๋”ฉ ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ํ‚ค ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ทจ๊ธ‰๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹ํ„ฐ๋ฏธ๋„์˜ ์ „๊ฒฝ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „์†ก๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๋‹จ์–ด ์‚ญ์ œ ์ž‘์—…์€ ํ„ฐ๋ฏธ๋„์ด ์•„๋‹ˆ๋ผ ์…€์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—๋Š” ๋‹จ์–ด ๊ฐœ๋…์ด์—†๊ณ  ์…€๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ˆ.


๋ณด๋‚ธ ์‚ฌ๋žŒ : Mike Frysinger [email protected]
๋ณด๋‚ธ ๋‚ ์งœ : 2019 ๋…„ 5 ์›” 14 ์ผ ํ™”์š”์ผ ์˜คํ›„ 2:19:01
๋ฐ›๋Š” ์‚ฌ๋žŒ : microsoft / Terminal
์ฐธ์กฐ : Dustin Howett; ์ €์ž
์ œ๋ชฉ : Re : [microsoft / Terminal] Ctrl- ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋กœ ์ด์ „ ๋‹จ์–ด ๋ถ„๋ฆฌ๋กœ ๋‹ค์‹œ ์‚ญ์ œ๋˜์ง€ ์•Š์Œ (# 755)

์˜ฌ๋ฐ”๋ฅธ ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹ํ„ฐ๋ฏธ๋„์˜ ์ „๊ฒฝ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ „์†ก๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๋‹จ์–ด ์‚ญ์ œ ์ž‘์—…์€ ํ„ฐ๋ฏธ๋„์ด ์•„๋‹ˆ๋ผ ์…€์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—๋Š” ๋‹จ์–ด ๊ฐœ๋…์ด์—†๊ณ  ์…€๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

โ€”
์Šค๋ ˆ๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ณ  GitHub https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FTerminal%2Fissues%2F755%3Femail_source%3Dnotifications%26email_token % 3DADNHLGSJTE4KKXWHDECROFDPVMUELA5CNFSM4HMTV4DKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVM2FPI % 23issuecomment-492,413,629 ๋ฐ ๋ฐ์ดํ„ฐ = 01ํผ์„ผํŠธ 7C01 % 7Cduhowett % 40microsoft.com % 7C1997e6ff518e4a3f396708d6d8b1c987 % 7C72f988bf86f141af91ab2d7cd011db47 % 7C1 ๋ฐ SDATA = V1y3C26WGNZ50VnZW5BhV1CYKetf % 2BgGLqov9Sc9tLw0 % 3D ๋ฐ = 0๋ฅผ ์†Œ์œ  ํ•˜๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ ์†Œ๊ฑฐ https://nam06.safelinks.protection.outlook.com/๋ฅผ? URL = HTTPS % 3A % 2F % 2Fgithub.com % 2Fnotifications % 2Funsubscribe-์ธ์ฆ % 2FADNHLGQKRNJQTZBZCRAZMO3PVMUELANCNFSM4HMTV4DA ๋ฐ ๋ฐ์ดํ„ฐ = 01ํผ์„ผํŠธ 7C01 % 7Cduhowett % 40microsoft.com % 7C1997e6ff518e4a3f396708d6d8b1c987 % 7C72f988bf86f141af91ab2d7cd011db47 % 7C1 ๋ฐ SDATA = auF20gJCIvXV % 2FYpDN0e % 2B3JzvxI766ZTbszhk3qx % 2BwUo % 3D & = 0 ์˜ˆ์•ฝ .

์ฐธ๊ณ ๋กœ WSL์„ ํ†ตํ•ด PowerShell์„ ์‹œ์ž‘ํ•˜๋ฉด ctrl + backspace ๋„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์‚ญ์ œ๋˜๋ฏ€๋กœ ํ„ฐ๋ฏธ๋„ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ Ctrl + backspace == <U+0008> == ^H PowerShell์„ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์…ธ์€ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์€ ์ผ์ข…์˜ ์„ค๊ณ„ ์ƒ์ž…๋‹ˆ๊นŒ? ๋˜ํ•œ ์ด๊ฒƒ์ด ์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์˜ Linux ์‰˜์ด ๋Œ€์‹  Alt + backspace ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค ์ด๊ฒƒ์€ PSReadline์˜ TBH ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ctrl + backspace๋กœ INPUT_RECORD ์„ ์ฐพ๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ @ Summon528์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ctrl + backspace๋ฅผ ์œ„ํ•ด ๋ณด๋‚ผ ^H ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ conpty๊ฐ€ ^H ๋ฐ›์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
image

๋ฐ˜๋Œ€๋กœ
image

์ด๊ฒƒ์€ ์ „์ฒด conpty INPUT_RECORD๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜ PowerShell์€ ์ด์ „ ๋‹จ์–ด ๋ถ„๋ฆฌ๊นŒ์ง€ ๋‹ค์‹œ ์‚ญ์ œํ•˜๋ฏ€๋กœ Windows ํ„ฐ๋ฏธ๋„์˜ PowerShell ํƒญ๋„ ๋˜‘๊ฐ™์ด ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

"๋‚˜๋Š” ๊ธฐ๋Œ€ํ•œ๋‹ค"

์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์•„์ง ์—ด๋ ค ์žˆ๊ณ  ์„ค๊ณ„ ์ƒ์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋ฒ„๊ทธ ์ธ ์ด์œ ์ž…๋‹ˆ๋‹ค.

@lzybkr @ daxian-dbw ์ด๊ฒƒ์— ๋Œ€ํ•œ ์–ด๋–ค ์ƒ๊ฐ? Windows Terminal์—์„œ PS Core๊ฐ€ ์‹คํ–‰๋  ๋•Œ ctrl+backspace ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์•„์‰ฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. FWIW ์ด๊ฒƒ์€ cmd.exe์—์„œ๋„ ๋ฌธ์ œ๊ฐ€๋ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…์€ ์—†์ง€๋งŒ Windows์—์„œ PSReadLine์€ CLR์„ ์‚ฌ์šฉํ•˜์—ฌ Windows๊ฐ€ ์•„๋‹Œ ํ„ฐ๋ฏธ๋„์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์–ป๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์ •ํ™•ํ•˜๊ฒŒ INPUT_RECORD๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ด€๋ จ ํ”Œ๋žซํผ ๋ณ„ ๊ฐ€์ •๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/PowerShell/PSReadLine/blob/f2f553156063a8635b9d4882a878a828365cdd99/PSReadLine/Keys.cs#L291

FWIW, Ctrl + Shift + ์™ผ์ชฝ (์ด์ „ ๋‹จ์–ด ์„ ํƒ)์„ ๋ˆ„๋ฅธ ๋‹ค์Œ ๋ฐฑ ์ŠคํŽ˜์ด์Šค ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐœ๋ณ„ ๋ฌธ์ž๋ฅผ ํ†ตํ•ด ๋ฐฑ ์ŠคํŽ˜์ด์Šคํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค! ์ผ๋ฐ˜ PowerShell ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ๋ช…๋ฐฑํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋งํ•˜์ž๋ฉด ์ด๊ฒƒ์€ powershell ํƒญ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์›๋ž˜ cmd.exe ํƒญ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ ๋ณด๊ณ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์™”์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Ctrl + Shift + ์™ผ์ชฝ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ cmd.exe ํƒญ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "foo"๋ฅผ ์ž…๋ ฅ ํ•œ ๋‹ค์Œ CTRL + SHIFT_LEFT๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ปค์„œ๊ฐ€ "foo"์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์–ด๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์›ํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

WSL์—์„œ ๋‚ด ์…ธ๋กœ zsh๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. bindkey '^H' backward-kill-word ์‚ฌ์šฉํ•  ๋•Œ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์„ ์–ป์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.

bindkey -e
# Control + backspace
bindkey '^H' backward-kill-word
# Control + arrows
bindkey ";5C" forward-word
bindkey ";5D" backward-word

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด Microsoft์˜ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋Œ€๋ถ€๋ถ„์˜ ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์€ control + backspace๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ ๋“  ๊ธฐ๋ณธ Windows ๊ธฐ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์„ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๊ฑฐ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ซํ‚ค๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋ชจ๋“  ๊ณณ์—์„œ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ํ‘œ์ค€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํ„ฐ๋ฏธ๋„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ธฐ๋ณธ ์ฐฝ ๊ธฐ๋Šฅ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ˜„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

(์ฐธ๊ณ  : explorer.exe๋Š” ์ „์ฒด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜๋Š” ascii 127๋„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.)

Ctrl + Backspace์— ๋Œ€ํ•œ ์ผ๋ถ€ ๊ธฐ๋ก : https://devblogs.microsoft.com/oldnewthing/?p=24823

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด bash์—์„œ bind '"\C-H":backward-kill-word' ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ / ๋ธŒ๋ผ์šฐ์ €๊ฐ€ cmd.exe ๋ฐ powershell.exe ๋ฐ ์ตœ์‹  Windows ๋นŒ๋“œ์˜ ๋ฉ”๋ชจ์žฅ๊ณผ ํ•จ๊ป˜์ด๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” @ yggdrasil75์— ํ™•์‹คํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ powershell์„ ์‚ฌ์šฉํ•˜๊ณ  powershell cmdlet / params๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์ €์—๊ฒŒ ํฐ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ด์ „ ๋‹จ์–ด๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›Œํฌ ํ”Œ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค.

autohotkey๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ์œ„ํ•ด์ด ๊ฐ„๋‹จํ•œ ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌํ˜„ ๋  ๋•Œ๊นŒ์ง€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#SingleInstance force ; Automatically overwrite any running instance of this script
#Persistent ; If this directive is present anywhere in the script, that script will stay running after the auto-execute section (top part of the script) completes

; For Windows Terminal - deletes the previous word
#IfWinActive ahk_exe WindowsTerminal.exe ; Wait for WindowsTerminal to be active
^backspace::
    Send, ^+{Left}
    Send, {Delete}
return

์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ํ•ญ์ƒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์งœ์ฆ๋‚˜์ง€๋งŒ ํ„ฐ๋ฏธ๋„์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์ธก๋ฉด์„ ์–ผ๋งˆ๋‚˜ ์ข‹์•„ํ•˜๋Š”์ง€์ด ๊ฒฝ๋กœ๋กœ๋งŒ ๊ฐ€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ์ด๊ฒƒ์ด ๋‚˜๋ฅผ์œ„ํ•œ ์™„๋ฒฝํ•œ ํ„ฐ๋ฏธ๋„์„ ๋งŒ๋“œ๋Š” ๋งˆ์ง€๋ง‰ ์ž‘ํ’ˆ์ž…๋‹ˆ๋‹ค.

PSReadLine ์ˆ˜์ • :
Set-PSReadLineKeyHandler -Key Ctrl+h -Function BackwardKillWord

๋ชจ๋“  ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ / ๋ธŒ๋ผ์šฐ์ €๊ฐ€ cmd.exe ๋ฐ powershell.exe ๋ฐ ์ตœ์‹  Windows ๋นŒ๋“œ์˜ ๋ฉ”๋ชจ์žฅ๊ณผ ํ•จ๊ป˜์ด๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” @ yggdrasil75์— ํ™•์‹คํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ powershell์„ ์‚ฌ์šฉํ•˜๊ณ  powershell cmdlet / params๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์ €์—๊ฒŒ ํฐ ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ด์ „ ๋‹จ์–ด๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ๋ฐฑ ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›Œํฌ ํ”Œ๋กœ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค.

autohotkey๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ์œ„ํ•ด์ด ๊ฐ„๋‹จํ•œ ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌํ˜„ ๋  ๋•Œ๊นŒ์ง€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#SingleInstance force ; Automatically overwrite any running instance of this script
#Persistent ; If this directive is present anywhere in the script, that script will stay running after the auto-execute section (top part of the script) completes

; For Windows Terminal - deletes the previous word
#IfWinActive ahk_exe WindowsTerminal.exe ; Wait for WindowsTerminal to be active
^backspace::
    Send, ^+{Left}
    Send, {Delete}
return

์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ํ•ญ์ƒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์งœ์ฆ๋‚˜์ง€๋งŒ ํ„ฐ๋ฏธ๋„์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์ธก๋ฉด์„ ์–ผ๋งˆ๋‚˜ ์ข‹์•„ํ•˜๋Š”์ง€์ด ๊ฒฝ๋กœ๋กœ๋งŒ ๊ฐ€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ์ด๊ฒƒ์ด ๋‚˜๋ฅผ์œ„ํ•œ ์™„๋ฒฝํ•œ ํ„ฐ๋ฏธ๋„์„ ๋งŒ๋“œ๋Š” ๋งˆ์ง€๋ง‰ ์ž‘ํ’ˆ์ž…๋‹ˆ๋‹ค.

AHK ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹ค๋ฅธ ํ•ซํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ #IfWinActive ๋ฐ”๋กœ ๋’ค์— ์ปจํ…์ŠคํŠธ ๋ฏผ๊ฐ๋„๋ฅผ ๋„์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ทธ ์•„๋ž˜์— ์ •์˜ ๋œ ํ•ซํ‚ค๋Š” ahk_exe WindowsTerminal.exe ๊ฐ€ ํ™œ์„ฑํ™” ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

; For Windows Terminal - deletes the previous word
#IfWinActive ahk_exe WindowsTerminal.exe ; only apply to this active window
^backspace::
    Send, ^+{Left}
    Send, {Delete}
return
#IfWinActive ; turns off context sensitivity

PSReadLine ์ˆ˜์ • :
Set-PSReadLineKeyHandler -Key Ctrl+h -Function BackwardKillWord

@paulelms ๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” PowerShell / Core ์ฐฝ์—์„œ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๋Œ€๋‹จํ•ด! ๐Ÿฅ‡

์šฐ๋ฆฌ๋Š” vscode์˜ ํ„ฐ๋ฏธ๋„์— ๋Œ€ํ•ด ๋น„์Šทํ•œ ์ž‘์—…์„ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

if ($env:TERM_PROGRAM -eq "vscode") {
    Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardKillWord
    Set-PSReadLineKeyHandler -Chord 'Alt+D' -Function KillWord
    Set-PSReadLineKeyHandler -Chord 'Ctrl+@' -Function MenuComplete    
}

Ctrl + Backspace๋Š” ์šฐ๋ฆฌ์—๊ฒŒ Ctrl + w๋ฅผ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค
Ctrl + Spacebar๋Š” Ctrl + @์„์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค

vscode๊ฐ€ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ PSReadLine์˜ ๊ธฐ๋ณธ ํ‚ค ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ทธ๋“ค (์ผ๋ช… xterm.js)๊ณผ์˜ ์ผ๋ถ€ ์ •๋ ฌ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” vscode์˜ ํ„ฐ๋ฏธ๋„์— ๋Œ€ํ•ด ๋น„์Šทํ•œ ์ž‘์—…์„ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

if ($env:TERM_PROGRAM -eq "vscode") {
    Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardKillWord
    Set-PSReadLineKeyHandler -Chord 'Alt+D' -Function KillWord
    Set-PSReadLineKeyHandler -Chord 'Ctrl+@' -Function MenuComplete    
}

Ctrl + Backspace๋Š” ์šฐ๋ฆฌ์—๊ฒŒ Ctrl + w๋ฅผ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค
Ctrl + Spacebar๋Š” Ctrl + @์„์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค

vscode๊ฐ€ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ PSReadLine์˜ ๊ธฐ๋ณธ ํ‚ค ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ทธ๋“ค (์ผ๋ช… xterm.js)๊ณผ์˜ ์ผ๋ถ€ ์ •๋ ฌ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

# 2256์˜ WT_SESSION ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Windows ํ„ฐ๋ฏธ๋„์— ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. Ctrl + Backspace๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ฝ 2 ์‹œ๊ฐ„ ๋™์•ˆ ์ง€์†๋˜์—ˆ๊ณ  ํฌ๊ธฐํ•ด์•ผํ–ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@billgr ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์„ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@TylerLeonhardt ,์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” PS์™€ $PROFILE ํ–ˆ์ง€๋งŒ ์šด์ด ์—†์—ˆ๋‹ค.

@TylerLeonhardt ,์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” PS์™€ $PROFILE ํ–ˆ์ง€๋งŒ ์šด์ด ์—†์—ˆ๋‹ค.

psreadline ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด์ด ์Šค ๋‹ˆํŽซ์„ $PROFILE.CurrentUserAllHosts

if ($env:WT_SESSION -ne $null)
{
    Set-PSReadLineKeyHandler -Key Ctrl+h -Function BackwardKillWord
}

์ด๊ฒƒ์€ ๋งค์šฐ ๊ฑฐ์นœ ์†”๋ฃจ์…˜์ด์ง€๋งŒ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. :)

@Kralizek , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ "๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€์—†๊ณ , ๋‹น์‹ ์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด์ œ ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ง€๊ธˆ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ๋ถ„์€ ์ด๋ฏธ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด WSL์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ :

stty werase ^H

WSL์—์„œ๋„ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

@ DHowett-MSFT ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ๋ฉฐ ์•„๋งˆ๋„ Ctrl + Del์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘์— ๋Œ€ํ•œ ํŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? WT์˜ VirtualTerminal ๋ถ€๋ถ„์„ ๋„ˆ๋ฌด ๊นŠ๊ฒŒ ํŒŒ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@mkitzan ํ™•์‹ค! ์—ฌ๊ธฐ์—๋ณด๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • VirtualTerminalInput -Cascadia์—์„œ (ํ•ญ์ƒ) ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ํ‚ค ๋ˆ„๋ฅด๊ธฐ์— ๋Œ€ํ•ด ์ƒ์„ฑ ํ•  VT๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • CONPTY PROCESS BOUNDARY (์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ชฉ๋ก ๋ ˆ์ด์•„์›ƒ์ด ์—‰๋ง์ด์—ˆ์Šต๋‹ˆ๋‹ค.)
  • InputStateMachineEngine -Conhost (์—ฌ๊ธฐ์„œ๋Š” conpty ํ˜ธ์ŠคํŒ…)์—์„œ VT์˜ ํŠน์ • ๋ถ€๋ถ„์ด ๋ณ€ํ™˜๋˜๋Š” ์ฃผ์š” ์ด๋ฒคํŠธ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • VirtualTerminalInput -Conhost (์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด VT ์ž…๋ ฅ์„ ์š”์ฒญํ•œ ๊ฒฝ์šฐ)์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ํ•ฉ์„ฑ ํ‚ค ๋ˆ„๋ฅด๊ธฐ์— ๋Œ€ํ•ด ์ƒ์„ฑ ํ•  VT๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์˜ํ•ด์•ผ ํ•  ๊ฒƒ์€ ์ฃผ์–ด์ง„ ๋น„ํ‘œ์ค€ ๋ฌธ์ž ์ž…๋ ฅ์— ๋Œ€ํ•ด VirtualTerminalInput ๊ฐ€ 0 ~ 2 ๋ฒˆ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ์กฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ.

์—…๋ฐ์ดํŠธ : ESC\0x8 ๋Š” WSL์—์„œ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ PS ๋˜๋Š” CMD์—์„œ๋Š” ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Ctrl + Del ์€ PS์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ WSL ๋˜๋Š” CMD์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„์ง ์ž‘์—… ์ค‘ โ›‘.
๋น ๋ฅธ ์ˆ˜์ •์„ ์›ํ•˜๋Š” ์Šค๋ ˆ๋“œ์˜ WSL ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž (๊ฐœ๋ฐœ ๋นŒ๋“œ ํฌํ•จ)์˜ ๊ฒฝ์šฐ L"\x8" ์„ L"\x1b\x8" . WSL ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋นŒ๋“œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ Alt + Ctrl + Backspace ๊ฐ€ ์ƒ์ž์—์„œ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค (ํ˜„์žฌ๋กœ์„œ๋Š” ์ฐจ์„ ์ฑ…).
์ฝ”๋“œ ์ถ”์  ์ค‘ Conpty ๊ฒฝ๊ณ„์— ๋„๋‹ฌ ํ•œ ์‹ค์ œ ์˜์ƒ์ž…๋‹ˆ๋‹ค.
conpty-boundary

์ด ๋ฌธ์ œ๋ฅผ ๊ตฌํ˜„ ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฝค ํ‘œ์ค€์ ์ธ ๋ฐ”๋กœ ๊ฐ€๊ธฐ์ด๋ฉฐ, ๊ทธ ์ดํ›„๋กœ ๋‹ค๋ฅธ ์œˆ๋„์šฐ ์‰˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค.

PSReadLine ๋ฐ AHK ์†”๋ฃจ์…˜์€ ๊ดœ์ฐฎ์ง€ ๋งŒ profiles.json ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋ฅผ ํ†ตํ•ด์ด๋ฅผ ๊ตฌํ˜„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰
"command": "something", "keys": [ "ctrl+backspace" ]

์ด ์„ค์ •์€ ์ฃผ๋กœ ๊ธฐ์กด ๋ช…๋ น์„ ํ‚ค ๋งคํ•‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฏ€๋กœ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

profiles.json ๋‹จ์ถ•ํ‚ค๋ฅผ ํ†ตํ•ด

ํ•ต์‹ฌ์—์„œ ํ„ฐ๋ฏธ๋„์€ ํ•œ ๊ณณ์—์„œ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. _terminal_ ์ธก์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜์žˆ๋Š” ๋ช…๋ น์€ ์›๊ฒฉ ์‰˜์ด ์ „์ฒด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์œ ์ผํ•œ ์˜ต์…˜์€ ์›๊ฒฉ ์…ธ์ด ์ดํ•ดํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ Ctrl + Backspace ๋ฅผ ํ†ต๊ณผ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ์ข‹์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
we-got-him

@ zadjii-msft ๊ท€ํ•˜์˜ ์˜๊ฒฌ ์ด ๋งค์šฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ InputStateMachine \b ๋ฅผ ์ œ์–ด ๋ฌธ์ž๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์žฌ ํ•ด์„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ž‘์—… ๋ธŒ๋žœ์น˜์˜ ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž‘์€ ์ˆ˜์ • ์‚ฌํ•ญ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๊ฐ€์ง€ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ํ•˜๋‚˜์˜ PR์„ ๋งŒ๋“ค์–ด๋„ ๋ ๊นŒ์š”? ์•„๋‹ˆ๋ฉด ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ PR์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๊นŒ?

: tada :์ด ๋ฌธ์ œ๋Š” # 3935์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ Windows Terminal Preview v0.8.10261.0 . : tada :

ํŽธ๋ฆฌํ•œ ๋งํฌ :

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ WSL1 ํ„ฐ๋ฏธ๋„์—์„œ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Ctrl + Backspace ๋Š”์ด ์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์— ์ œ๊ณต๋œ "bind"๋ช…๋ น์ด ์—†์œผ๋ฉด ๋ฐ”๋‹๋ผ WSL1 ํ„ฐ๋ฏธ๋„์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ๋ชจ๋“  ํ„ฐ๋ฏธ๋„์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@Nufflee bind ๋ช…๋ น์ด ๋” ์ด์ƒ wsl1์—์„œ ๋ฐ˜๋“œ์‹œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‚ด ๋ชจ๋“  ์ปดํ“จํ„ฐ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. stty werase ^H

thx @jevring , ๊ทธ๊ฒƒ์€ ๋‚ด bash์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฅด๊ฒ ์–ด์š” ... ctrl + backspace๋Š” "Windows ํ„ฐ๋ฏธ๋„"(๋ฒ ํƒ€)์—์„œ ssh๋ฅผ ํ†ตํ•ด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด ๊ธฐ๋Šฅ์€ Linux VM์„ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Ctrl + BS๋Š” ๋‚ด๊ฐ€ ์›๊ฒฉ ์…ธ์„ ์‚ฌ์šฉํ•˜๋“  ๋กœ์ปฌ์—์„œ๋“  Linux ํ™˜๊ฒฝ์˜ ๋ชจ๋“  ์ฐฝ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ ์ƒ๋‹นํžˆ ๋ณดํŽธ์  ์ธ ํ‚ค ๋ฐ”์ธ๋”ฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Windows ํ„ฐ๋ฏธ๋„์˜ ๊ฒฝ์šฐ-Ctrl + BS, Shift + BS, Ctrl + Shift + BS, Ctrl + Alt + BS, Alt + BS ๋“ฑ-๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ฝค๋ณด-๋งํ•  ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

"๋‚ด๊ฐ€ ssh ํ•  ๋•Œ-์ง€๊ฐ์„ ๊ทธ๋งŒ๋‘ฌ"๋ผ๊ณ  ๋งํ•  ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ???

์‚ฌ๋žŒ๋“ค์€ "์ง€๊ธˆ ์ž‘๋™ํ•œ๋‹ค"๊ณ  ์–ธ๊ธ‰ํ•˜์ง€๋งŒ ์ œ๋กœ ์ƒํ™ฉ์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@ lucky-wolf ์–ด๋–ค ๋ฒ„์ „์˜ SSH ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? Windows 7.7๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž…๋ ฅ ๋ฒ„๊ทธ๊ฐ€์žˆ์–ด "Windows Terminal"์—์„œ ํŠน์ • ํ‚ค๋ฅผ ๋ณด๋‚ผ ๋•Œ๋„ ํŠน์ • ํ‚ค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์˜ ํŒ€๊ณผ ํ•จ๊ป˜ ํ•ด๊ฒฐํ–ˆ์œผ๋ฉฐ ๋ฒ„์ „ 8.1 ์ด์ƒ์€ ํ„ฐ๋ฏธ๋„์ดํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

WSL์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ SSH๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ _new_ ๋ฒ„๊ทธ๋ฅผ ์ œ์ถœํ•˜๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ๋™์ž‘์ด๋ฏ€๋กœ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ์ด์ œ ๋‚ด ์ปดํ“จํ„ฐ์— ์žˆ์œผ๋ฏ€๋กœ ์ด๊ฒƒ์„ ์ข€ ๋” ์ž˜ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Ctrl + Backspace์— ๋Œ€ํ•œ ์ธ์ฝ”๋”ฉ์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด showkey ์œ ํ‹ธ๋ฆฌํ‹ฐ (Ubuntu ๋ฐ Debian์˜ kbd ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€)๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

wsl์—์„œ ssh

% wsl ssh -4 dustin<strong i="10">@antares</strong> -t showkey -a

Press any keys - Ctrl-D will terminate this program

^H        8 0010 0x08
^D        4 0004 0x04
Connection to antares closed.

ssh 7.7 (win32-openssh, Windows์™€ ํ•จ๊ป˜ ์ œ๊ณต๋จ)

% ssh -V
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

% ssh dustin<strong i="14">@antares</strong> -t showkey -a

Press any keys - Ctrl-D will terminate this program

^?      127 0177 0x7f
^D        4 0004 0x04
Connection to antares closed.

ssh 8.1 (win32-openssh, ์ €์žฅ์†Œ์˜ ์ตœ์‹  ๋ฒ„์ „)

% ssh8 -V
OpenSSH_for_Windows_8.1p1, LibreSSL 2.6.5

% ssh8 dustin<strong i="19">@antares</strong> -t showkey -a

Press any keys - Ctrl-D will terminate this program

^H        8 0010 0x08
^D        4 0004 0x04
Connection to antares closed.

^H ์€ ์˜ฌ๋ฐ”๋ฅธ ์ธ์ฝ”๋”ฉ์ด๊ณ  ^? ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Win32-OpenSSH๋Š” ๋ฒ„์ „ 8 ์ด์ƒ์ด ๋  ๋•Œ๊นŒ์ง€ Windows ์ฝ˜์†” ์ธํ”„๋ผ๋ฅผ ์‹ ๋ขฐํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ด๊ณ 

์‚ฌ๊ณผ. ๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๋Š”์ง€ 100 % ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๊นŒ? ์ €๋Š” Win 10์—์„œ "Windows Terminal"์•ฑ 1.1.2021.0์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ดœ์ฐฎ์€ ์…ธ์„ ์ฐพ์œผ๋ ค๊ณ  ํ•  ๋•Œ ๊ทธ๊ฒƒ์„ ์„ค์น˜ํ–ˆ๊ณ  PS์™€ WSL์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค (๋‹น์‹œ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ ์ดํ›„๋กœ ๋ฒˆ๊ฑฐ๋กœ์šด WSL์„ ์ œ๊ฑฐํ–ˆ์ง€๋งŒ์ด Windows ํ„ฐ๋ฏธ๋„์„ ๊ฒฌ๊ณ ํ•œ ์›๊ฒฉ ์…ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ssh๋ฅผ ํ†ตํ•ด ์ง์žฅ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ Linux ์ƒ์ž์— ๋Œ€ํ•œ bash / zsh ์ƒ‰์ƒ ์ง€์ •์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ €๋Š” ๋งค์šฐ ๋งŒ์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๊ฐ€์ง€ ์˜ˆ์™ธ๋Š” ctrl + backspace๋Š” ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ขŒ์ ˆ๊ฐ์— ์ €๋Š” Windows ํ„ฐ๋ฏธ๋„์—์„œ ๊ฐ„๋‹จํ•œ ๊ฒ€์ƒ‰์„ํ–ˆ๊ณ  Ctrl + BS๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๊ณ  ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๊ณ  ์—ฌ๊ธฐ์— ์™”์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๊ฑฐ๊ธฐ์— ๋‹ค๋ฅธ ์œˆ๋„์šฐ ํ„ฐ๋ฏธ๋„์ด ์žˆ์Šต๋‹ˆ๊นŒ? Windows ํ„ฐ๋ฏธ๋„์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ (Power Shell 5.1.18362.752์—์„œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๊ฑฐ๊ธฐ์—์„œ ssh๋ฅผ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค ... ์‹œ์ž‘ํ•˜๊ธฐ์— ๋” ๋‚˜์€ ๊ธฐ๋ณธ ์‰˜์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?)

ํ›จ์”ฌ ์ตœ์‹  ๋ฒ„์ „์˜ PS๊ฐ€ ์žˆ์Œ์„ ํ™•์ธ ํ–ˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ 7.03์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋” ์ž˜ ์ž‘๋™ํ•˜๋ฉด WSL์„ ๋‹ค์‹œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š” ์–ด๋–ค ๋กœ์ปฌ ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋„ PS์—๋ณ„๋กœ ๊ด€์‹ฌ์ด ์—†๋‹ค-๋น„๋ก ์ƒˆ๋กœ์šด ์…ธ์— ๋Œ€ํ•ด ์กฐ๊ธˆ์ด๋ผ๋„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€ ๋งŒ-๋‚ด๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ๊ฒƒ์˜ 98 %๋Š” ๊ธฐ๋ณธ ์„ค์ •์„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฆฌ๋ˆ…์Šค ๋ฐ•์Šค์— ssh ํ•  ์ˆ˜์žˆ๋Š” ์•ˆ์ •์ ์ด๊ณ  ์œ ์—ฐํ•œ ํ„ฐ๋ฏธ๋„์ด๋‹ค. ๋กœ๊ทธ ์ˆ˜์ง‘ / ๋ฌธ์ œ ํ•ด๊ฒฐ-

๊ทธ๋ฆฌ๊ณ  ctrl + backspace๊ฐ€ ์—†์œผ๋ฉด ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค (๋‚˜๋จธ์ง€ ํ„ฐ๋ฏธ๋„ ๊ฒฝํ—˜์ด ๋งค์šฐ ์šฐ์ˆ˜ ํ•  ๋•Œ).

๊ทธ๋ฆฌ๊ณ  ํ  ... ์˜ˆ-๋‚˜๋Š” ๋‹ฌ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ssh -v
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

๋ฌธ์ œ์˜ ๋‹ค๋ฅธ ์ ˆ๋ฐ˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค!

๊ทธ๋Ÿฐ ๋ฉ์ฒญ์ด๋กœ ๋ฏธ์•ˆํ•ด. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๋„์›€, @DHowett ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค! ๋งค์šฐ ๊ฐ์‚ฌ!


์ตœ์‹  ์ •๋ณด:

Power Shell 7.03์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
OpenSSH_for_Windows_8.1p1, LibreSSL 2.9.2๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ssh8์„ ๋‚ด ๋ฆฌ๋ˆ…์Šค ๋ฐ•์Šค์— ๋„ฃ์œผ๋ฉด ctrl + bs๋Š” ๋‹จ์–ด ์‚ญ์ œ๋ฅผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Mint VM์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ํ„ฐ๋ฏธ๋„ ๋ฐ ssh ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋˜‘๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ctrl + bs๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์—ฌ์ „ํžˆ ์žƒ์–ด๋ฒ„๋ฆฐ ๊ฒƒ ๊ฐ™์•„์š”? : /

ssh ์—ฐ๊ฒฐ์„ ์—ฐ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ Ctrl + Backspace๊ฐ€ Linux VM์—์„œ ์ž‘๋™ํ•˜๋„๋กํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

stty werase ^h

์ตœ์‹  Windows Terminal Preview ๋ฐ OpenSSH 8.1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. BTW๊ฐ€ bash ์‰˜์—์„œ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ ์›๊ฒฉ์—์„œ Ctrl+Backspace pwsh ์„ ์‹œ์ž‘ํ•˜๋ฉด Ctrl+Backspace ๋Š” ๋‹จ์ผ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. PowerShell์—์„œ stty ๋ช…๋ น์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ธฐ์จ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@ DHowett-MSFT
์ด๊ฒŒ ์™œ ๋‹ซํ˜€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ ์–ด๋„ bash์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. powershell๊ณผ cmd์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

WSL ๊ธฐ๋ฐ˜ ํ„ฐ๋ฏธ๋„์€ Ctrl + Backspace๋กœ ์ „์ฒด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

WSL์€ ์–ด๋–ค ์ด์œ ๋กœ ๋“  (WSL2์— ๋Œ€ํ•ด ํ™•์‹คํ•˜์ง€ ์•Š์Œ) Ctrl + Backspace ๊ฐ€์ƒ ํ‚ค ์‹œํ€€์Šค๋ฅผ "์ „์ฒด ๋‹จ์–ด ์‚ญ์ œ"๋กœ ํ•ด์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „ WSL ๊ธฐ๋ฐ˜ ํ„ฐ๋ฏธ๋„ (์˜ˆ : MS ์Šคํ† ์–ด์˜ Ubuntu ์…ธ)์„ ์—ฌ๋Š” ๊ฒฝ์šฐ Ctrl + Backspace ๋Š” ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ „์ฒด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WSL ๊ธฐ๋ฐ˜ ํ„ฐ๋ฏธ๋„์—์„œ ์ „์ฒด ๋‹จ์–ด๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด Ctrl + W ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. Ctrl + Backspace ๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ๊ฐ€์ƒ ํ‚ค ์‹œํ€€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— CMD ๋ฐ PS์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

(์Šค๋ ˆ๋“œ ์ฝ๊ธฐ / PR, ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰