如何使用windows terminal+WSL

windows terminal + windows subsystem for Linux

近日在使用Cygwin的时候查到原来 巨硬公司已开发Windows terminal工具combine终端,与此同时,通过安装WSL系统,我们可以在window下直接使用Linux,最后将window下安装具有terminal的所有软件都综合到windows terminal下面。更多知识分享请到 https://zouhua.top/

安装 Windows Subsystem for Linux

  • WSL2是windows开发的无需安装虚拟机且与Windows 10共存的Linux系统,一般需要window 10系统(具体版本未查)。安装前需要开启以下功能:
  1. CPU的虚拟机功能,否则在初始化过程会报错;

  2. windows的WSL功能,Windows features选项打开;

  • 完成上述操作后,可通过Microsoft Store搜索Ubuntu安装Ubuntu 20.04或18.04(可以根据自己的喜好下载)。

  • 下载完成后,启动Ubuntu,会出现initialization状态。在初始完成后需要设置root账户名和密码,设置完成后,Windows电脑即拥有了Linux系统了,它与Windows并存。大部分Linux常用的命令均可以在WSL下使用,可作为新手练习或学习Linux,并且它的崩溃不会影响到Windows系统,本人常用来做一些只有root账户才可以操作的命令,比如删库跑路的 rm -rf /* 命令!!!
  • 配置WSL和配置服务器一样,可以修改.bashrc或.bash_profile文件

安装Windows terminal

Windows terminal是Microsoft出品的工具,在GitHub上已有上千颗star了,它有太多太多功能了,这里我只用来作为综合各个terminal的工具。

  • 同样上Microsoft store下载Windows terminal(稳定版本或者preview版本,看自己需求,推荐下载稳定版本),以关键词“terminal”搜索

  • 安装完成后,配置Windows terminal,配置文件是json文件,可通过notepad等工具打开

  1. 配置参数主要有:

    • profiles: 配置每个terminal的guid、路径和颜色背景等等
    • schemes: 颜色背景
    • keybindings: 快捷键设置
  2. 本人参数配置情况: 1.设置了背景图片;2.设置了背景颜色;3.重新调整了terminal顺序;4.添加了新的terminal

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    // This file was initially generated by Windows Terminal 1.2.2381.0
    // It should still be usable in newer versions, but newer versions might have additional
    // settings, help text, or changes that you will not see unless you clear this file
    // and let us generate a new one for you.

    // To view the default settings, hold "alt" while clicking on the "Settings" button.
    // For documentation on these settings, see: https://aka.ms/terminal-documentation
    {
        "$schema": "https://aka.ms/terminal-profiles-schema",
       
        // set default profile: ubuntu
        "defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",

        // You can add more global application settings here.
        // To learn more about global settings, visit https://aka.ms/terminal-global-settings

        // If enabled, selections are automatically copied to your clipboard.
        "copyOnSelect": true,

        // If enabled, formatted data is also copied to your clipboard
        "copyFormatting": true,

        //customize the colors, font and keyboard bindings
        "wordDelimiters" : " \\()",    // word delimiters for copy and paste
        "showTabsInTitlebar" : true,
        "showTerminalTitleInTitlebar" : true,

        // A profile specifies a command to execute paired with information about how it should look and feel.
        // Each one of them will appear in the 'New Tab' dropdown,
        //   and can be invoked from the commandline with `wt.exe -p xxx`
        // To learn more about profiles, visit https://aka.ms/terminal-profile-settings
        "profiles":
        {
            "defaults":
            {
              "backgroundImage": "C:\\Users\\zouhu\\AppData\\Roaming\\terimal_figure\\goose.png",
              "backgroundImageStretchMode": "uniformToFill",
              "backgroundImageOpacity": 0.6,
              "background": "#013456",
              "acrylicOpacity": 0.8,
              "useAcrylic": true,

              //customize the colors, font and keyboard bindings
              //"wordDelimiters" : " ./\\()"'-:,.;<>~!@#$%^&*|+=[]{}~?│",
              //"showTabsInTitlebar" : true,
              //"showTerminalTitleInTitlebar" : true
            },
          "list": [
            {
              "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
              "hidden": false,
              "name": "Ubuntu-20.04",
              "source": "Windows.Terminal.Wsl",
              "colorScheme": "Monokai Night"
            },
            {
              "guid": "{60af1884-f8af-11ea-adc1-0242ac120002}",
              "hidden": false,
              "name": "gdl server",
              "commandline": "powershell.exe ssh [email protected]",
              "colorScheme": "Monokai Night",
              "icon": "C:\\Users\\zouhu\\AppData\\Roaming\\terimal_figure\\SSH.ico"
            },
            {
              // Make changes here to the powershell.exe profile.
              "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
              "name": "Windows PowerShell",
              "commandline": "powershell.exe",
              "hidden": false,
              "colorScheme": "Monokai Night"
            },
            {
              // Make changes here to the cmd.exe profile.
              "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
              "name": "Command Prompt",
              "commandline": "cmd.exe",
              "hidden": false,
              "colorScheme": "Solarized Dark Patched"
            },
            {
              "guid": "{a02de8a8-f4d3-11ea-adc1-0242ac120002}",
              "hidden": false,
              "name": "git",
              "source": "C:\\Software\\git\\Git\\bin\\bash.exe",
              "colorScheme": "Campbell"
            },
            {
              "guid": "{a7874b94-f4d3-11ea-adc1-0242ac120002}",
              "hidden": false,
              "name": "cygwin",
              "source": "C:\\Software\\Cygwin\\bin\\mintty.exe",
              "colorScheme": "Monokai Night"
            },
            {
              "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
              "hidden": false,
              "name": "Azure Cloud Shell",
              "source": "Windows.Terminal.Azure",
              "colorScheme": "Monokai Night"
            }
          ]
        },

        // Add custom color schemes to this array.
        // To learn more about color schemes, visit https://aka.ms/terminal-color-schemes
      "schemes": [
        {
          "name": "Solarized Dark Patched",
          "cursorColor": "#657b83",
          "background": "#002b36",
          "foreground": "#fdf6e3",
          "black": "#073642",
          "blue": "#268bd2",
          "cyan": "#2aa198",
          "green": "#859900",
          "purple": "#d33682",
          "red": "#dc322f",
          "white": "#eee8d5",
          "yellow": "#b58900",
          "brightBlack": "#657b83",
          "brightBlue": "#839496",
          "brightCyan": "#93a1a1",
          "brightGreen": "#586e75",
          "brightPurple": "#6c71c4",
          "brightRed": "#cb4b16",
          "brightWhite": "#fdf6e3",
          "brightYellow": "#657b83"
        },
        {
          "name": "Monokai Night",
          "background": "#1f1f1f",
          "foreground": "#f8f8f8",
          "black": "#1f1f1f",
          "blue": "#6699df",
          "cyan": "#e69f66",
          "green": "#a6e22e",
          "purple": "#ae81ff",
          "red": "#f92672",
          "white": "#f8f8f2",
          "yellow": "#e6db74",
          "brightBlack": "#75715e",
          "brightBlue": "#66d9ef",
          "brightCyan": "#e69f66",
          "brightGreen": "#a6e22e",
          "brightPurple": "#ae81ff",
          "brightRed": "#f92672",
          "brightWhite": "#f8f8f2",
          "brightYellow": "#e6db74"
        },
        {
          "name": "Campbell",
          "cursorColor": "#FFFFFF",
          "selectionBackground": "#FFFFFF",
          "background": "#0C0C0C",
          "foreground": "#CCCCCC",
          "black": "#0C0C0C",
          "blue": "#0037DA",
          "cyan": "#3A96DD",
          "green": "#13A10E",
          "purple": "#881798",
          "red": "#C50F1F",
          "white": "#CCCCCC",
          "yellow": "#C19C00",
          "brightBlack": "#767676",
          "brightBlue": "#3B78FF",
          "brightCyan": "#61D6D6",
          "brightGreen": "#16C60C",
          "brightPurple": "#B4009E",
          "brightRed": "#E74856",
          "brightWhite": "#F2F2F2",
          "brightYellow": "#F9F1A5"
        }
      ],

        // Add custom keybindings to this array.
        // To unbind a key combination from your defaults.json, set the command to "unbound".
        // To learn more about keybindings, visit https://aka.ms/terminal-keybindings
        "keybindings":
        [
            // Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json.
            // These two lines additionally bind them to Ctrl+C and Ctrl+V.
            // To learn more about selection, visit https://aka.ms/terminal-selection
            { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
            { "command": "paste", "keys": "ctrl+v" },

            // Press Ctrl+Shift+F to open the search box
            { "command": "find", "keys": "ctrl+shift+f" },

            // Press Alt+Shift+D to open a new pane.
            // - "split": "auto" makes this pane open in the direction that provides the most surface area.
            // - "splitMode": "duplicate" makes the new pane use the focused pane's profile.
            // To learn more about panes, visit https://aka.ms/terminal-panes
            { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" },
            { "command": { "action": "splitPane", "split": "vertical" }, "keys": "alt+shift+plus" },
            { "command": { "action": "splitPane", "split": "horizontal" }, "keys": "alt+shift+-" },

            //moveFocus
            { "command": { "action": "moveFocus", "direction": "down" }, "keys": "alt+down" },
            { "command": { "action": "moveFocus", "direction": "left" }, "keys": "alt+left" },
            { "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" },
            { "command": { "action": "moveFocus", "direction": "up" }, "keys": "alt+up" },

            //resizepan
            { "command": { "action": "resizePane", "direction": "down" }, "keys": "alt+shift+down" },
            { "command": { "action": "resizePane", "direction": "left" }, "keys": "alt+shift+left" },
            { "command": { "action": "resizePane", "direction": "right" }, "keys": "alt+shift+right" },
            { "command": { "action": "resizePane", "direction": "up" }, "keys": "alt+shift+up" },

            //closePane
            { "command": "closePane", "keys": "ctrl+shift+w" }
        ]
    }

  3. PS : 每个人的terminal的GUID都不一样,可以通过使用 在线 UUID生成器完成 Online UUID Generator

  • 最后完成配置的windows terminal

Windows terminal常用的命令

  • 分割屏幕:Alt + shift + d
  • 關閉屏幕:Ctrl + shift + w

引用

参考文章如引起任何侵权问题,可以与我联系,谢谢