Pick your shell on the fly inside Zed editor — without touching your default terminal.
VS Code has a built-in shell picker — you can switch between Bash, PowerShell, Git Bash, WSL, and more with a single click from the terminal toolbar. It is a small but genuinely useful feature that many developers rely on daily.
Zed does not have this. Zed is a fast, modern editor, but its terminal is tied to a single shell configured globally in settings. If you want to open a different shell, your only option today is to change your default shell setting, restart the terminal, do your work, and change it back. For developers who regularly jump between environments — say, PowerShell for a .NET project and WSL for a Linux build — this friction adds up fast.
This is not a criticism of Zed. It is a young, actively developed editor and this is a known, minor limitation. But until the Zed team ships a native solution, Zed Shell Switcher fills that gap — giving you an on-demand shell picker that feels native, requires no extension API, and does not touch your default configuration.
Zed Shell Switcher adds an on-demand shell picker to Zed editor via the built-in task system.
Press Ctrl+Shift+R, choose a shell, and it opens in a new terminal tab — your default terminal is never changed.
| Shell | Platform |
|---|---|
| Git Bash | Windows |
| PowerShell | Windows |
| CMD | Windows |
| WSL (Ubuntu) | Windows |
| Zsh | macOS |
| Bash | macOS / Linux |
irm https://raw.githubusercontent.com/Mantitup-Org/Zed-Shell-Switcher/main/install.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/Mantitup-Org/Zed-Shell-Switcher/main/install.sh | bash- Open any project in Zed
- Press Ctrl+Shift+R to open the shell picker
- Type a shell name or navigate with arrow keys
- Press Enter
The selected shell opens in a new terminal tab alongside your existing shell.
Why does it re-run instead of showing the picker?
Zed's defaultCtrl+Shift+Rbinding maps totask::Rerun, which silently re-runs the last used task.
The installer automatically writes akeymap.jsonthat rebinds it totask::Spawn— which always opens the picker. This is handled for you during install.
irm https://raw.githubusercontent.com/Mantitup-Org/Zed-Shell-Switcher/main/uninstall.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/Mantitup-Org/Zed-Shell-Switcher/main/uninstall.sh | bash-
Download
tasks.jsonandkeymap.jsonfrom this repository -
Copy each file to the correct location for your OS:
File OS Path tasks.jsonWindows %APPDATA%\Zed\tasks.jsontasks.jsonmacOS ~/Library/Application Support/Zed/tasks.jsontasks.jsonLinux ~/.config/zed/tasks.jsonkeymap.jsonWindows %APPDATA%\Zed\keymap.jsonkeymap.jsonmacOS ~/Library/Application Support/Zed/keymap.jsonkeymap.jsonLinux ~/.config/zed/keymap.json -
Open Zed, press Ctrl+Shift+R — done.
Note: If you already have a
tasks.jsonorkeymap.json, the installer backs each one up as.bakbefore overwriting. Uninstalling restores them automatically.
The Zed extension API does not yet support injecting entries into the task picker or modifying keybindings programmatically.
Using tasks.json + keymap.json is the most reliable and maintainable approach until that API becomes available.
Contributions are welcome!
- To add a new shell entry, edit
tasks.jsonand open a pull request. - To report a bug or request a feature, open an issue.
git clone https://github.com/Mantitup-Org/Zed-Shell-Switcher.git
cd Zed-Shell-SwitcherThis project is licensed under the MIT License.
Built by Ankan Dalui ❤️ Team Mantitup