Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zazwyczaj akcje "nowa karta" i "okienko podziału" zawsze będą otwierać nową kartę/okienko w dowolny sposób startingDirectory dla tego profilu. Jednak na innych platformach często nowe karty automatycznie używają katalogu roboczego bieżącej karty jako katalogu początkowego dla nowej karty. Dzięki temu użytkownik może szybko pracować wielotask w jednym katalogu.
Niestety w systemie Windows trudno jest określić, jaki jest bieżący katalog roboczy ("CWD") dla procesu. Nawet jeśli udało nam się go wyszukać, nie wszystkie aplikacje faktycznie ustawiają swoje CWD podczas nawigowania. W szczególności program Windows PowerShell nie zmienia jego CWD w cd całym systemie plików! Duplikowanie CWD programu PowerShell automatycznie prawie zawsze byłoby błędne.
Na szczęście istnieje obejście problemu. Aplikacje mogą emitować specjalną sekwencję ucieczki (w szczególności "OSC 9; Format 9" w celu ręcznego przekazania terminalowi, jaki powinien być CWD.
Z tego samouczka dowiesz się, jak wykonywać następujące działania:
- Skonfiguruj powłokę, aby poinformować terminal o bieżącym katalogu roboczym
-
duplicateTabUżyj akcji, aby otworzyć kartę z tym samym CWD -
splitPaneUżyj akcji, aby otworzyć okienko z tym samym CWD - Za pomocą menu kontekstowego karty otwórz karty lub okienka z tym samym CWD
Konfigurowanie powłoki
Aby poinformować terminal o tym, czym jest CWD, należy zmodyfikować powłokę, aby emitować sekwencję ucieczki podczas nawigowania po systemie operacyjnym. Na szczęście większość powłok ma mechanizm konfigurowania "wiersza polecenia", który jest uruchamiany po każdym poleceniu. Jest to idealne miejsce do dodania takich danych wyjściowych.
Windows
Wiersz polecenia: cmd.exe
cmd używa zmiennej środowiskowej %PROMPT% do skonfigurowania monitu. Możesz łatwo wstępnie otworzyć wiersz polecenia, aby ustawić CWD za pomocą następującego polecenia:
set PROMPT=$e]9;9;$P$e\%PROMPT%
Spowoduje to dołączenie $e]9;9;$P$e\ do bieżącego monitu. Gdy polecenie cmd oceni ten monit, zastąpi go
- znak
$eucieczki - z
$pbieżącym katalogiem roboczym
Należy pamiętać, że powyższe polecenie będzie działać tylko dla bieżącej cmd.exe sesji. Aby ustawić wartość na stałe, po uruchomieniu powyższego polecenia należy uruchomić polecenie
setx PROMPT "%PROMPT%"
PowerShell: powershell.exe lub pwsh.exe
Jeśli nigdy wcześniej nie zmieniono monitu programu PowerShell, najpierw należy wyewidencjonować about_Prompts .
Dodaj następujące elementy do profilu programu PowerShell:
function prompt {
$loc = $executionContext.SessionState.Path.CurrentLocation;
$out = ""
if ($loc.Provider.Name -eq "FileSystem") {
$out += "$([char]27)]9;9;`"$($loc.ProviderPath)`"$([char]27)\"
}
$out += "PS $loc$('>' * ($nestedPromptLevel + 1)) ";
return $out
}
Program PowerShell z usługą posh-git
Jeśli używasz polecenia posh-git, spowoduje to już zmodyfikowanie monitu. W takim przypadku należy dodać tylko niezbędne dane wyjściowe do już zmodyfikowanego monitu. Poniższy przykład to lekko zmodyfikowana wersja tego przykładu z witryny ConEmucs:
function prompt
{
$loc = Get-Location
$prompt = & $GitPromptScriptBlock
$prompt += "$([char]27)]9;12$([char]7)"
if ($loc.Provider.Name -eq "FileSystem")
{
$prompt += "$([char]27)]9;9;`"$($loc.ProviderPath)`"$([char]27)\"
}
$prompt
}
Program PowerShell z programem Starship
Jeśli używasz programu Starship, spowoduje to już zmodyfikowanie monitu. W takim przypadku należy dodać tylko niezbędne dane wyjściowe do już zmodyfikowanego monitu.
function Invoke-Starship-PreCommand {
$loc = $executionContext.SessionState.Path.CurrentLocation;
$prompt = "$([char]27)]9;12$([char]7)"
if ($loc.Provider.Name -eq "FileSystem")
{
$prompt += "$([char]27)]9;9;`"$($loc.ProviderPath)`"$([char]27)\"
}
$host.ui.Write($prompt)
}
WSL
Podsystem Windows dla dystrybucji systemu Linux używać przede wszystkim powłoki BASH jako powłoki wiersza polecenia.
bash
Dodaj następujący wiersz na końcu .bash_profile pliku konfiguracji:
PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND ; "}'printf "\e]9;9;%s\e\\" "$(wslpath -w "$PWD")"'
Zmienna PROMPT_COMMAND w powłoce bash informuje powłokę bash o tym, jakie polecenie należy uruchomić przed wyświetleniem wiersza polecenia. Instrukcja printf jest używana do dołączania sekwencji ustawiania katalogu roboczego w terminalu. Bit $(wslpath -w "$PWD") wywoła wslpath plik wykonywalny, aby przekonwertować bieżący katalog na ścieżkę przypominającą system Windows. Bit to magia ${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}powłoki bash , aby upewnić się, że dołączamy to polecenie do dowolnego istniejącego polecenia (jeśli już ustawiono PROMPT_COMMAND gdzieś indziej).
zsh
Dodaj następujące wiersze na końcu .zshrc pliku:
keep_current_path() {
printf "\e]9;9;%s\e\\" "$(wslpath -w "$PWD")"
}
precmd_functions+=(keep_current_path)
Hak precmd_functions informuje zsh, jakie polecenia należy uruchomić przed wyświetleniem wiersza polecenia. Instrukcja printf jest używana do dołączania sekwencji ustawiania katalogu roboczego w terminalu. Bit $(wslpath -w "$PWD") wywoła wslpath plik wykonywalny, aby przekonwertować bieżący katalog na ścieżkę przypominającą system Windows. Za pomocą precmd_functions+= polecenia upewnij się, że dołączamy keep_current_path funkcję do dowolnej istniejącej funkcji już zdefiniowanej dla tego elementu zaczepienia.
Ryba
Jeśli używasz powłoki Fish, dodaj następujące wiersze na końcu pliku konfiguracji znajdującego się w lokalizacji ~/.config/fish/config.fish:
function storePathForWindowsTerminal --on-variable PWD
if test -n "$WT_SESSION"
printf "\e]9;9;%s\e\\" (wslpath -w "$PWD")
end
end
Ta funkcja będzie wywoływana za każdym razem, gdy bieżąca ścieżka zostanie zmieniona w celu potwierdzenia otwarcia bieżącej sesji przez terminal systemu Windows (weryfikowanie $WT_SESSION) i wysyłanie polecenia systemu operacyjnego (OSC 9; 9;), ze ścieżką równoważną systemu Windows (wslpath -w) bieżącej ścieżki.
MINGW
W przypadku usług MINGW, Git Bash i Cygwin należy zmodyfikować element dla biblioteki PROMPT_COMMAND WSL: zastąp wslpathciąg cygpath .
Dodaj następujący wiersz na końcu .bashrc pliku:
PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'printf "\e]9;9;%s\e\\" "`cygpath -w "$PWD" -C ANSI`"'
Uwaga / Notatka
Nie widzisz tutaj ulubionej powłoki? Jeśli to zrozumiesz, możesz otworzyć żądanie ściągnięcia , aby współtworzyć rozwiązanie dla preferowanej powłoki.
Używanie akcji w celu zduplikowania ścieżki
Po skonfigurowaniu powłoki w celu przekazania terminalowi zawartości bieżącego katalogu otwarcie nowej karty lub okienka z tą ścieżką jest łatwe.
Otwórz nową kartę za pomocą polecenia duplicateTab
Aby otworzyć nową kartę z tą samą ścieżką (i profilem), co aktualnie aktywny terminal, użyj akcji "Duplikuj kartę". Jest to domyślnie powiązane z Ctrl+Shift+D w następujący sposób:
{ "command": "duplicateTab", "keys": "ctrl+shift+d" },
(zobacz duplicateTab) aby uzyskać więcej informacji.
Otwórz nowe okienko za pomocą polecenia splitPane
Aby otworzyć nowe okienko z tą samą ścieżką (i profilem), co aktualnie aktywny terminal, użyj akcji "Zduplikuj okienko". Nie jest to domyślnie powiązane. Najprostszą formą tej akcji jest:
{ "command": { "action": "splitPane", "splitMode": "duplicate" } },
(zobacz splitPane) aby uzyskać więcej informacji.
Używanie menu w celu zduplikowania ścieżki
Powyższe akcje są również dostępne w menu kontekstowym karty w obszarze wpisów "Duplikuj kartę" i "Okienko podziału".
Windows Terminal