Windows Terminal에서 현재 디렉토리 복사 창 또는 탭 상속

본고에서 소개한 기능은 Windows Terminal 1.6 이후 버전에서 사용할 수 있다
Windows Terminal에서 작업할 때 창과 탭을 열고 원래 같은 디렉터리cd로 이동하는 작업을 해 본 적이 있습니까?예를 들어 테스트를 실행하는 동안 코드 변경 프로그램을 제출합니다.
본고에서 소개한 내용을 설정하면 원본 디렉터리를 계승하는 창이나 탭을 열 수 있습니다.
디렉터리 경로 복제, 검색cd의 역사 기록 등 작업에서 해방!
설정 전

설정 후

아래에 새로 열린 창의 현재 디렉터리는 원래의 현재 디렉터리 ~/workspace 를 계승합니다.

설정


케이스의 세계에서 출력을 피하는 시퀀스로 설정하고 현재 디렉터리를 Windows Terminal에 알려야 합니다.이 도피 서열의 출력은 케이스마다 따로 설정해야 합니다.
다음은 각 조개를 설치하는 방법입니다.

bash - Cygwin/MSYS2

.bashrc에서 다음과 같은 내용을 보충한다.
function _windows_terminal_osc_9_9 {
    # Inform Terminal about shell current working directory
    # see: https://github.com/microsoft/terminal/issues/8166
    printf '\e]9;9;%s\e\' "$(cygpath --windows "$(pwd)")"
}
PROMPT_COMMAND="_windows_terminal_osc_9_9; ${PROMPT_COMMAND}"
MSYS2msys2_shell.cmd를 사용하여 부팅 케이스로 설정할 때 -here 옵션을 지정해야 합니다.
예:settings.json(Windows Terminal)
"commandline": "C:/msys64/msys2_shell.cmd -no-start -defterm -msys2 -here -shell bash",

bash - WSL2

.bashrc에서 다음과 같은 내용을 보충한다.
function _windows_terminal_osc_9_9 {
    # Inform Terminal about shell current working directory
    # see: https://github.com/microsoft/terminal/issues/8166
    printf '\e]9;9;%s\e\' "$(wslpath -w "$(pwd)")"
}
PROMPT_COMMAND="_windows_terminal_osc_9_9; ${PROMPT_COMMAND}"

zsh - Cygwin/MSYS2

.zshrc에서 다음과 같은 내용을 보충한다.
function _windows_terminal_osc_9_9 {
    # Inform Terminal about shell current working directory
    # see: https://github.com/microsoft/terminal/issues/8166
    printf '\e]9;9;%s\e\' "$(cygpath --windows "$(pwd)")"
}
precmd_functions+=(_windows_terminal_osc_9_9)
MSYS2msys2_shell.cmd를 사용하여 부팅 케이스로 설정할 때 -here 옵션을 지정해야 합니다.
예:settings.json(Windows Terminal)
"commandline": "C:/msys64/msys2_shell.cmd -no-start -defterm -msys2 -here -shell zsh",

zsh - WSL2

.zshrc에서 다음과 같은 내용을 보충한다.
function _windows_terminal_osc_9_9 {
    # Inform Terminal about shell current working directory
    # see: https://github.com/microsoft/terminal/issues/8166
    printf '\e]9;9;%s\e\' "$(wslpath -w "$(pwd)")"
}
precmd_functions+=(_windows_terminal_osc_9_9)

PowerShell


프로필을 만들고 다음 함수를 추가합니다.프로파일을 만드는 방법은 다음 기사를 참조하십시오.
PowerShell로 프로파일 만드는 방법
function prompt {
    $p = $($executionContext.SessionState.Path.CurrentLocation)
    $converted_path = Convert-Path $p
    $ansi_escape = [char]27
    "PS $p$('>' * ($nestedPromptLevel + 1)) ";
    Write-Host "$ansi_escape]9;9;$converted_path$ansi_escape\"
}
※ 이 코드는 https://gist.github.com/skyline75489/480d036db8ae9069b7009377e6eebb79에서 인용되었습니다.

구조


발표 노트에는 ConEmu 독자적인 도피 시퀀스 OSC 9;9;<windows path> (OSC: Operating 시스템 m commands) 를 지원한다고 기록되어 있다.(ConEmu는 Windows 전용 터미널 에뮬레이터 중 하나)
The terminal now supports ConEmu’s OSC 9;9 sequence , which sets the current working directory. If you emit OSC 9;9;<Windows path> , creating a duplicate of that pane or tab will use the Windows path you specified (Thanks @skyline75489! ).
Windows Terminal Preview 1.6 Release | Windows Command Line
탈출 시퀀스는 터미널에 표시되는 문자 색상 변경, 커서 위치 변경 등 터미널을 제어하는 데 사용되는 특수 문자열입니다.탈출 시퀀스 자체는 터미널에 문자로 표시되지 않습니다.
자세한 설명: ANSI 탈출 코드 - 콘솔 제어 - 벽색 공방
이전 장에서 설명한 설정은 터미널에서 알림을 표시할 때 (문자를 입력한 곳) 매번 출력 시퀀스 OSC 9;9;<Windows path> 이다.cd에서 디렉터리를 이동하면 알림이 표시될 때 이동한 디렉터리가 터미널로 전송되기 때문에 분할 창cd 이후의 디렉터리가 계승됩니다.

좋은 웹페이지 즐겨찾기