使用 wsl-terminal 更好地體驗 Win 10 WSL 終端環境

WSL 從最初功能不全 bug 遍地都是,到如今除了少數幾個比較頑固的 bug 外,基本足以正常使用了。但自帶終端模擬器的體驗依然很是糟糕,並且在能夠預期的將來都不會有太大的長進了。我是從去年 8 月開始開發 wsl-terminal中文頁面)的,期間由於想不到能夠添加什麼功能而擱置了比較長時間。最近心血來潮,添加了不少實用功能,用戶體驗也會上升不少。html

但願有在使用的朋友能夠多反饋下意見建議,若是以前沒有嘗試過,也能夠體驗一下,軟件是一個 1.6 MB 的壓縮包,解壓後便可使用,不會往系統中寫入任何東西(若是想添加到開始菜單或者右鍵菜單,可使用 tools 中的工具)。linux

介紹

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

截圖

screenshot

查看更多截圖github

用法

  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 分區上,緣由)。
  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 (以及任何其餘的可執行文件,好比 .py .pl 文件) 腳本文件,你能夠在文件打開方式裏設置使用它來打開文件。
  5. vim.exe 可使用 WSL 中的 vim 打開任何文件 (在 wsl-terminal 中),支持在打開方式中配置。若是你使用其餘編輯器,能夠把 vim.exe 重命名成 emacs.exe nvim.exe nano.exe 等等,會調用對應的編輯器打開。

快捷鍵

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

將 wsl-terminal 綁定到快捷鍵shell

命令行參數

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: 切換髮行版。
  -b "options": 傳遞額外的選項給 wslbridge。
  -B "options": 傳遞額外的選項給 mintty。
  -h: 顯示幫助信息。

-B-b 後能夠添加的選項,請參考 mintty 參數wslbridge 參數vim

cmdtool(在 WSL 中運行)

用法: cmdtool [選項]...
  wcmd: 使用 cmd.exe /c 運行 Windows 程序。
  wstart: 使用 cmd.exe /c start 運行 Windows 程序。
  update: 檢查更新,若是有更新能夠直接升級。
  killall: 殺死全部的 WSL 進程。
  install cbwin: 安裝 cbwin。
  install dash: 安裝 Cygwin 中的 dash(用於調試)。
  install busybox: 安裝 Cygwin 中的 busybox(用於調試)。

工具

tools 目錄下的工具:bash

文件名 功能
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 環境變量裏。
2-remove-wsl-terminal-dir-from-path.js Path 環境變量中移除 wsl-terminal 目錄。
3-write-distro-guids-to-config-file.js 將全部發行版的 guid 寫入到配置文件 etc/wsl-terminal.conf 中。
4-create-start-menu-shortcut.js 建立一個開始菜單快捷方式,指向 open-wsl -C ~
4-create-start-menu-shortcut-login-shell.js 建立一個開始菜單快捷方式,指向 open-wsl -l
4-remove-all-start-menu-shortcuts.js 移除全部 wsl-terminal 的開始菜單快捷方式。

雙擊 .js 文件便可運行。若是 .js 文件被某個編輯器關聯上了,能夠修改打開方式爲 Microsoft (R) Windows Based Script Host,或者在 tools 目錄運行一個 cmd.exe,而後用 wscript xxx.js 運行對應文件。微信

配置文件

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 的最新版本而後升級。若是下載速度過慢,能夠先使用其餘方法從發佈頁面下載 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 中設置 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 了。

切換髮行版

使用 open-wsl -d distro (在 cmd.exe 裏運行)來切換髮行版:

# 列出全部發行版
> wslconfig /l
Legacy (默認)
Ubuntu

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

# Ubuntu 已是默認的發行版了
> wslconfig /l
Ubuntu (默認)
Legacy

若是你不想修改默認的發行版,能夠在 etc/wsl-terminal.conf 裏設置 distro_guid

運行 tools/3-write-distro-guids-to-config-file.js幫助),而後會有窗口彈出結果:

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 前邊的 ; 來使用對應的發行版。

若是你想經過命令行將 distro_guid 傳遞給 open-wsl

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

連接

常見問題

反饋建議

發佈頁面

文檔幫助

編譯

確保已經在 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 等領域相關問題,靈活訂價,歡迎諮詢,微信 ly50247。

相關文章
相關標籤/搜索