WSL의 TAB에서 Ctrl-i를 분리하는 방법은 무엇입니까?

WSL의 TAB에서 Ctrl-i를 분리하는 방법은 무엇입니까?

저는 Ubuntu의 WSL2에서 bash를 사용하고 있으며 Crtl-i와 TAB이 서로 다른 키코드를 보내도록 하여 들여쓰기에 TAB을 사용하는 동안 emacs에서 Ctrl-i를 다시 매핑할 수 있기를 원합니다. 아래 답변을 따라해 보았습니다.이 문제.Xresources, 파일을 편집한 다음 를 실행하여 Ctrl-i를 다시 매핑하는 것이 좋습니다 xrdb ~/.Xresources. 내 파일 .Xresources에 이게 있어요

XTerm*metaSendsEscape: true
XTerm*eightBitInput: false

Xterm*Translations: #override\
        Ctrl ~Meta ~Shift <Key>i :string("\033[105;5u")

내가 전화할 때 빼고는 xrdb .Xresources이 메시지만 줘요

xrdb: Connection refused
xrdb: Can't open display 'localhost:0.0'

이는 WSL이 일반 텍스트 편집기이기 때문에 파일 변경 사항이 적용되지 않았기 때문인 것 같습니다. xterm을 사용하고 있는지 확인하기 위해 bash에서 이것을 실행했고 echo $TERM그것이 반환되었으므로 xterm-256color이것이 올바른 것 같습니다.

WSL에서 사용할 수 있는 방법이 있나요? .Xresources아니면 WSL에서 Ctrl-i와 TAB을 구별하는 다른 방법이 있나요?

답변1

좋은 연구를 수행했지만 WSL의 터미널 상황에 대해 오해가 있습니다.

귀하가 링크한 질문/답변에는 이러한 xrdb지침이 구체적으로 나와 있습니다 xterm. 사용할 수 있는 단말은 다양하며, 단말마다 리매핑 방법이 다릅니다. 이 특정 답변은 세 가지 다른 터미널에 대한 솔루션도 제공합니다.

  • Xterm
  • Urkesft
  • 고양이

비록 그렇긴 하지만가능한WSL에서 터미널을 사용하려면(이 답변의 끝 참조) 이러한 터미널 중 어느 것도 기본 WSL 터미널이 아닙니다. WSL에는 두 가지 기본 터미널이 있습니다.

  • Windows 10에서는 레거시 Windows 콘솔 호스트입니다. CMD 및 PowerShell에 사용되는 것과 동일한 터미널입니다.
  • Windows 11에서는 (상당히) 새로운 Windows 터미널이 콘솔 호스트를 대체합니다. 이전 버전에 비해 상당히 발전했으며 많은 추가 기능을 포함하고 있습니다. 터미널은 Windows 10에도 설치할 수 있지만 기본으로 설정할 수는 없습니다.

따라서 다음 지침이 필요합니다.단말기실제로는 WSL용이 아닌 것을 사용하고 있습니다.

내가 아는 한, Windows 콘솔 호스트에는 중요한 재매핑 기능이 포함되어 있지 않습니다. 그러나 다음과 같은 것을 사용할 수 있습니다자동 단축키또는 (아마도)자동으로Ctrl+를 가로채고 i올바른 이스케이프 시퀀스를 보냅니다. 적어도 AutoHotkey에는 이 기능이 있는 것 같지만 이 목적으로 사용해 본 적은 없습니다.

그러나 아직 설치하지 않았다면 Windows 터미널을 설치하는 것이 좋습니다. Windows 10용 Microsoft Store에서 찾을 수 있습니다(최신 Windows 11 버전에서는 자동으로 설치됩니다).

여기에는 키를 다시 매핑하는 기능이 포함되어 있지만 구성 파일 뒤에 다소 "숨겨져 있습니다". 이제 터미널에는 일부 설정을 편집할 수 있는 GUI가 포함되어 있지만 이러한 고급 기능에는 수동 편집이 필요합니다 settings.json.

이를 위해:

  • Windows 터미널에서 드롭다운 메뉴로 이동하여 엽니다.설정

  • 설정의 왼쪽 하단에서"JSON 파일 열기"옵션.

  • 참고: VSCode를 설치하거나 최소한 JSON을 잘 처리할 수 있는 편집기를 설치하는 것이 좋습니다. VSCode의 또 다른 장점은 Windows 터미널 아키텍처를 이해하므로 입력할 때 옵션을 자동 완성한다는 것입니다.

  • 목록에 다음을 추가합니다 "actions".

    {
        "command": {
            "action": "sendInput",
            "input": "\u001b[105;5u"
        },
        "keys": "ctrl+i"
    }
    

Emacs에서는 이것을 테스트하지 않았지만 Fish 쉘에서 fish_key_reader+가 탭 문자 대신 지정된 제어 코드를 보내는 Ctrl것을 확인했습니다.i

WSL에서 Linux/X 터미널 사용

Linux 터미널 중 하나를 실제로 사용하려면 WSL을 사용하면 됩니다. WSLg를 지원하는 Windows 11(WSL2에서 Linux GUI 애플리케이션 실행 가능)을 사용하거나 Windows 10에서 자세히 설명한 방법 중 하나를 사용하여 GUI 지원을 구성하면 됩니다.이 슈퍼유저의 답변. 이 작업을 완료한 후에는 원하는 경우 Xterm을 실행하고 링크된 답변의 지침을 사용할 수 있습니다.

관련 정보