使用 wsl-terminal 更好地體驗 Win 10 WSL 終端環(huán)境

WSL 從最初功能不全 bug 遍地都是,到現(xiàn)在除了少數(shù)幾個比較頑固的 bug 外,基本足以正常使用了。但自帶終端模擬器的體驗依然非常糟糕,而且在可以預(yù)期的未來都不會有太大的長進了。我是從去年 8 月開始開發(fā) wsl-terminal中文頁面)的,期間因為想不到可以添加什么功能而擱置了比較長時間。最近心血來潮,添加了很多實用功能,用戶體驗也會上升很多。

希望有在使用的朋友可以多反饋下意見建議,如果之前沒有嘗試過,也可以體驗一下,軟件是一個 1.6 MB 的壓縮包,解壓后即可使用,不會往系統(tǒng)中寫入任何東西(如果想添加到開始菜單或者右鍵菜單,可以使用 tools 中的工具)。

介紹

用于 Windows Subsystem for Linux (WSL) 的終端模擬器,基于 minttywslbridge

截圖

screenshot

查看更多截圖。

用法

  1. 這里下載最新版本并解壓,或者在 cmd.exe 或 WSL 里運行 bash -c "wget https://github.com/goreliu/wsl-terminal/releases/download/v0.8.1/wsl-terminal-0.8.1.7z && 7z x wsl-terminal-0.8.1.7z"

  2. 運行 open-wsl.exe 可以在當前目錄打開一個 WSL 終端模擬器(wsl-terminal 需要放置在本地的 NTFS 分區(qū)上,原因)。

  3. 運行 tools/1-add-open-wsl-terminal-here-menu.js (幫助) 來添加一個 Open wsl-terminal Here 右鍵菜單到資源管理器上 (運行 tools/1-remove-open-wsl-terminal-here-menu.js 可以將其刪除)。 如果你使用 Total Commander, 可以參考 在 Total Commander 中使用 wsl-terminal 。

  4. run-wsl-file.exe 可以在 wsl-terminal 里運行任何 .sh (以及任何其他的可執(zhí)行文件,比如 .py .pl 文件) 腳本文件,你可以在文件打開方式里設(shè)置使用它來打開文件。

  5. vim.exe 可以使用 WSL 中的 vim 打開任何文件 (在 wsl-terminal 中),支持在打開方式中配置。如果你使用其他編輯器,可以把 vim.exe 重命名成 emacs.exe nvim.exe nano.exe 等等,會調(diào)用對應(yīng)的編輯器打開。

快捷鍵

按鍵 功能
Alt + Enter 全屏
Alt + F2 新建窗口
Alt + F3 搜索文本
Ctrl + [Shift] + Tab 切換窗口
Ctrl + = + - 0 縮放
Ctrl + Click 打開光標處的文件、目錄名或者網(wǎng)址

將 wsl-terminal 綁定到快捷鍵。

命令行參數(shù)

open-wsl

用法: open-wsl [選項]...
  -a: 激活在運行的 wsl-terminal 窗口。
      如果 use_tmux=1,會 attach 到正在運行的 tmux 會話上。
  -l: 運行一個 login shell(如果 use_tmux=1 則失效)。
  -c command: 運行命令 (例如 -c "echo a b; echo c; cat")。
  -e commands: 運行后邊的所有命令 (例如 -e echo a b; echo c; cat)。
  -C dir: 進入到 dir 目錄中,WSL 目錄(例如 /home/username)。
  -W dir: 進入到 dir 目錄中,Windows 目錄(例如 c:\Users\username)。
  -d distro: 切換發(fā)行版。
  -b "options": 傳遞額外的選項給 wslbridge。
  -B "options": 傳遞額外的選項給 mintty。
  -h: 顯示幫助信息。

-B-b 后可以添加的選項,請參考 mintty 參數(shù)wslbridge 參數(shù)。

cmdtool(在 WSL 中運行)

用法: cmdtool [選項]...
  wcmd: 使用 cmd.exe /c 運行 Windows 程序。
  wstart: 使用 cmd.exe /c start 運行 Windows 程序。
  update: 檢查更新,如果有更新可以直接升級。
  killall: 殺死所有的 WSL 進程。
  install cbwin: 安裝 cbwin。
  install dash: 安裝 Cygwin 中的 dash(用于調(diào)試)。
  install busybox: 安裝 Cygwin 中的 busybox(用于調(diào)試)。

工具

tools 目錄下的工具:

文件名 功能
1-add-open-wsl-terminal-here-menu.js 添加 Open wsl-terminal Here 右鍵菜單到資源管理器上。
1-remove-open-wsl-terminal-here-menu.js 移除 Open wsl-terminal Here 右鍵菜單。
2-add-wsl-terminal-dir-to-path.js wsl-terminal 目錄添加到 Path 環(huán)境變量里。
2-remove-wsl-terminal-dir-from-path.js Path 環(huán)境變量中移除 wsl-terminal 目錄。
3-write-distro-guids-to-config-file.js 將所有發(fā)行版的 guid 寫入到配置文件 etc/wsl-terminal.conf 中。
4-create-start-menu-shortcut.js 創(chuàng)建一個開始菜單快捷方式,指向 open-wsl -C ~。
4-create-start-menu-shortcut-login-shell.js 創(chuàng)建一個開始菜單快捷方式,指向 open-wsl -l。
4-remove-all-start-menu-shortcuts.js 移除所有 wsl-terminal 的開始菜單快捷方式。

雙擊 .js 文件即可運行。如果 .js 文件被某個編輯器關(guān)聯(lián)上了,可以修改打開方式為 Microsoft (R) Windows Based Script Host,或者在 tools 目錄運行一個 cmd.exe,然后用 wscript xxx.js 運行對應(yīng)文件。

配置文件

etc/wsl-terminal.conf 是 wsl-terminal 的配置文件:

[config]
title="窗口標題"
shell=bash
use_tmux=0
;icon=
;distro_guid=

etc/themes/ 目錄下的是主題文件,使用主題

etc/minttyrc 是 mintty 的配置文件, mintty 幫助

升級

wsl-terminal 里打開 open-wsl.exe,然后運行 ./cmdtool update 可以檢查 wsl-terminal 的最新版本然后升級。如果下載速度過慢,可以先使用其他方法從發(fā)布頁面下載 wsl-terminal-v{version}.7z 文件,然后將其放入到 wsl-terminal 目錄,然后運行 ./cmdtool update

該工具依賴 wget7z 命令(安裝方法。Ubuntu: apt install wget p7zip-full, Archlinux: pacman -S wget p7zip)。

升級過程不會覆蓋配置文件,etc/wsl-terminal.confetc/minttyrc 會被放置到 etc/wsl-terminal.conf.pacnewetc/minttyrc.pacnew。升級后 bin 目錄會殘余一些 .bak 文件,因為這些文件還在運行,不能被刪除。下一次升級時,會將之前的 .bak 文件全部刪除,你也可以等那些進程退出后手刪除那些文件。

使用 tmux

  1. 在 WSL 里安裝 tmux。

  2. etc/wsl-terminal.conf 中設(shè)置 use_tmux=1。如果版本號低于 0.8.1,還需要添加 attach_tmux_locally=1 。

  3. 添加如下代碼到 ~/.bashrc(如果配置的是 shell=bash)或者 ~/.zshrc(如果配置的是 shell=zsh):

[[ -z "$TMUX" && -n "$USE_TMUX" ]] && {
    [[ -n "$ATTACH_ONLY" ]] && {
        tmux a 2>/dev/null || {
            cd && exec tmux
        }
        exit
    }

    tmux new-window -c "$PWD" 2>/dev/null && exec tmux a
    exec tmux
}

然后 open-wsl 就會使用 tmux 了。

切換發(fā)行版

使用 open-wsl -d distro (在 cmd.exe 里運行)來切換發(fā)行版:

# 列出所有發(fā)行版
> wslconfig /l
Legacy (默認)
Ubuntu

# 使用 Ubuntu(會運行 wslconfig /s Ubuntu 然后打開 wsl-terminal)
> open-wsl -d Ubuntu

# Ubuntu 已經(jīng)是默認的發(fā)行版了
> wslconfig /l
Ubuntu (默認)
Legacy

如果你不想修改默認的發(fā)行版,可以在 etc/wsl-terminal.conf 里設(shè)置 distro_guid

運行 tools/3-write-distro-guids-to-config-file.js幫助),然后會有窗口彈出結(jié)果:

result has been written to ..\etc\wsl-terminal.conf:

; Legacy
;distro_guid={12345678-1234-5678-0123-456789abcdef}

; Ubuntu
;distro_guid={47a89313-4300-4678-96ae-e53c41a79e03}

remove the ; before distro_guid to use the distro.

可以去掉 distro_guid 前邊的 ; 來使用對應(yīng)的發(fā)行版。

如果你想通過命令行將 distro_guid 傳遞給 open-wsl

# 將 distro guid 傳遞給 wslbridge
> open-wsl -b "--distro-guid {47a89313-4300-4678-96ae-e53c41a79e03}"

鏈接

常見問題

反饋建議

發(fā)布頁面

文檔幫助

編譯

確保已經(jīng)在 WSL 里安裝了這些 wget tar xz gzip p7zip (安裝方法。Ubuntu: apt install wget tar xz-utils gzip p7zip-full, Archlinux: pacman -S wget tar xz gzip p7zip)。

運行 build.bat。

許可

MIT

付費解決 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等領(lǐng)域相關(guān)問題,靈活定價,歡迎咨詢,微信 ly50247。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容