Windows 10 coder 设置指南

8 minute read

博主有一台Windows PC,主要是用来打游戏,偶尔也用来在WSL里做一做开发和博客写作。慢慢发现WSL其实用起来还是很舒适的, 我也渐渐的开始接纳用Windows来做一些平常只会在Mac上做的事情. 碰巧最近重新安装了系统, 这一篇日志主要记录一下一些我常用的工具的配置过程。 这些都是主要在Windows端, 如果没有特别说明, 命令都是跑在powershell里, 如果权限不够, 请以管理员权限运行powershell再运行命令.

最近升级到了 Windows 11, 文中内容同样适用于Windows 11

Windows Terminal

首先要解决的就是一个好用的terminal,要知道windows的 powershell 或者 cmd 可真的是很劝退啊.

这里最好的选择无疑是 Windows Terminal 和WSL有无缝集成非常方便。

WSL2

如果是insider build的话,有一个简化版的安装指令

1wsl --install

否则的话, 需要参考下面的步骤安装.

首先, 运行下列命令打开windows subsystem for linux 功能

1dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

wsl2 需要打开虚拟机支持

1dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

wsl2还需要一个kernel update 下载并运行这个安装包

这是默认版本为wsl2

1wsl --set-default-version 2

然后就可以去微软商店去安装你想要的linux的版本即可。我用的是Ubuntu 20.04 LTS。

Linux GUI apps

目前, 我把系统升级到了 Windows 11, 可以尝试Linux GUI apps. 具体的步骤可以按照官网的教程

第一步, 是安装专门的 GPU driver. 根据你的显卡类型选择即可.

第二步, 需要update WSL. 注意 Linux GUI 只在WSL2中被支持.

我目前用过的Linux GUI apps 有

  • Intellij IDEA
    • 不能IDEA GUI app中创建command line entry, 但是可以手动创建这个symbol link
      1sudo ln -s /opt/idea/bin/idea.sh /usr/local/bin/idea
      

WinGet

WinGet是微软官方的一个cmd的包管理软件,一般是我的首选安装工具,其次才是Choco

https://github.com/microsoft/winget-cli

目前,WinGet还不是GA(generally avaiable), 需要至少 Windows 10 1809 (build 17763), 然后需要用户是 insider build。

WinGety的一个缺点就是不会自动更新Path, 有时候需要手动去更新system path.

常用的软件安装方法

1? winget search sublime
2名称                ID                         版本
3-----------------------------------------------------------
4Sublime Text 4      SublimeHQ.SublimeText.4    4.0.0.410700
5Sublime Text 3      SublimeHQ.SublimeText.3    3.2.2
6Sublime Merge       SublimeHQ.SublimeMerge     2056
7Sublime Merge (Dev) SublimeHQ.SublimeMerge.Dev 2057
1winget install SublimeHQ.SublimeText.4

Chocolately

Chocolately是另一个第三方的windows包管理软件. 可以和WinGet互补, 目前不是所有的软件都在WinGet里.

Chocolately 安装方法

首先调整 execution policy

1Get-ExecutionPolicy
2#上述命令如果返回Restricted,则更新为
3Set-ExecutionPolicy AllSigned
4# 或者
5Set-ExecutionPolicy Bypass -Scope Process

然后在powershell里运行

1Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Git

1winget install git

Docker

1winget install Docker.DockerDesktop

Vim

1winget install vim

需要自己添加vim binary C:\Program Files\Vim\vim82 到system path 去.

推荐 SpaceVim

Visual Studio Code

1winget install Microsoft.VisualStudioCode

因为Visual Studio Code和 WSL的集成非常的好, 所以我大部分的编码就只需要在Code中打开ubuntu里的proj即可. 再加上Windows Terminal, 基本满足了所有的需求.

当然了, 如果需要比较heavy的IDE, 可以考虑vnc-like的方案, 或者 Linux GUI on WSL.

Emacs

1winget install GNU.Emacs

也需要自己添加 path C:\Program Files\Emacs\x86_64\bin

Spacemacs

1git clone https://github.com/syl20bnr/spacemacs C:\Users\syi\appdata\roaming\.emacs.d

Notion

1winget install notion

SharpKeys

对于有一些支持qmk的键盘或者本身固件支持按键映射的键盘, 就没有这个需求.

但是, 对于不支持固件修改案件映射的键盘,可能需要利用到window上的keymap软件. 比如, 我一般需要将 caplocks 映射成 control.

1winget install sharpkeys

starship

Rust编写, 跨平台terminal主题, 支持各种操作系统上的terminal

1choco install starship

安装后需要在powershell的启动中去调用

1echo $PROFILE
2# 应该是 C:\Users\xxx\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
3# 如果这个文件不存在就请自行创建
1# 把下列加入到profile文件的最后一行即可
2Invoke-Expression (&starship init powershell)

重启windows terminal即可.

安装Nerd字体

为了正确的显示一些图标, 需要安装Nerd字体, 这里推荐 Fira Code Nerd Font

在Windows Terminal上按ctrl+,,调出设置页面,然后将字体改为刚才安装的字体即可.

fzf

1choco install fzf

可能需要手动添加path 默认安装位置 C:\ProgramData\chocolatey\bin\fzf.exe 验证系统能否找到fzf binary

1Get-Commands fzf

需要一个powershell module - PSFzf 来和fzf 做集成

安装方式是通过powershell galary

1Install-Module -Name PSFzf -RequiredVersion 2.2.6

在powershell或者windows terminal中运行下列命令来绑定ctrl+r

1# replace 'Ctrl+t' and 'Ctrl+r' with your preferred bindings:
2Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'

把这一行加入到之前的

1C:\Users\xxx\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

重启terminal之后, 如果按 ctrl+r, 应该会用fzf来返回最近的命令行历史