V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daguaochengtang
V2EX  ›  Windows

作为程序员你是如何搭建自己的 windows 开发环境的?

  •  
  •   daguaochengtang · 178 天前 · 5228 次点击
    这是一个创建于 178 天前的主题,其中的信息可能已经有所发展或是发生改变。
    作为程序员,如果你拿到一个新的 windows 笔记本,你会如何搭建自己的开发环境(其实不局限于开发环境,包括日常的其它工作和使用场景)?

    主要是我过段时间有个新的 windows 本,想提前想好需要注意的点,我目前考虑的几个点,v 友们可以帮忙解答和补充其它的点:

    1. 硬盘是否有必要分区?分区和不分区各有什么注意点?(比如我现在的电脑就没分区,但是会把 desktop 、download 文件夹等这些移动到其它盘。比如会把所有快捷方式放在一个文件夹然后放进环境变量里,通过 win+r 直接打开)
    2. 考虑减少重复配置的成本,用 docker 来配置大部分的环境的可行性怎么样?比如 git,node,nginx 等都跑在一个 docker 里,本机不装这些环境,会不会有性能问题?有没有谁这样实践过的
    3. windows 下你们会用包管理器嘛?用的什么?
    4. windows terminal 怎么配置? wsl 你们平常会用吗(一直不懂 wsl 的使用场景,你们会直接在 wsl 上开发、写代码嘛)?
    5. 。。。
    58 条回复    2024-12-12 16:54:36 +08:00
    tool2dx
        1
    tool2dx  
       178 天前
    我个人是用 vhd 进行开发配置,第一尽可能用 portable 的软件,第二很多公司陈旧项目编译依赖特别多,只能通过 vhd 挂载和同步代码。

    还有一些 COM 组件注册很多的程序,都被我扔到虚拟机里运行的。

    别的好像也没什么,git 我用 msys ,没用 wsl ,反正常用软件来说,两者都大同小异。
    murmur
        2
    murmur  
       178 天前
    不用 wsl ,java 和前端就 win 自己就够了,真的需要 linux 开虚拟机,win 的虚拟化贼麻烦,有的要开 supervisior ,有的不能开

    linux 配虚拟机挺简单的,双网卡,里面开 docker ,不开发的时候虚拟机关了就完了,也多不了几个资源,随便买都是 32g 内存的电脑
    murmur
        3
    murmur  
       178 天前
    *supervisior->hypervisor
    AoEiuV020JP
        4
    AoEiuV020JP  
       178 天前
    用什么装什么, 尽量优先考虑官网下载 exe 安装包,能选择安装路径的都指定到 D 盘目录里,
    terminal 默认 cmd ,其他不改,
    wsl 用过几年不打算再用了, 整个 hyperv 关了,改用现在免费的 vmware,
    开发机也不是服务器, 和 docker 不太搭,有需要的在 vmware 里 linux 跑,git ,node 之类都是直接装,
    不用包管理器,感觉 win 压根没有这个生态, 包管理器只是个 exe 下载器,
    快捷方式会放在一个文件夹里,文件夹放开始菜单里,同时固定在文件管理器左边的快速访问里, 用鼠标打开,
    yunv2
        5
    yunv2  
       178 天前
    楼主以前用的是 windows 吗?
    到手配置开发环境,一般按文档执行一遍,就装全了。

    1.没必要分区,现在笔记本两个 ssd ,都不分区,C 盘 1T ,D 盘 2T ;
    2.git 和 node ( nvm )安装在本机了,nginx 是用 docker 跑;
    3.没用过,日常吃饭挣钱的工具,都有安装文档。windows 官版系统安装官方软件一般不会出错,装完就不动了。仅代表个人观点。
    4.windows 是图形化界面,terminal 用的很少,除非远程 linux 或者 wsl ; wsl 用来装 docker on wsl ,只用来测试运行环境;写代码还是在 windows 的 jetbrains 系列软件。
    fish267
        6
    fish267  
       178 天前
    简单,安装个 Linux 虚拟机
    tool2dx
        7
    tool2dx  
       178 天前
    @AoEiuV020JP "快捷方式会放在一个文件夹里"

    我快捷方式是写了一个程序,常驻任务栏,用双击 Ctrl 打开跳转界面。速度快的飞起。
    dobelee
        8
    dobelee  
       178 天前
    代码和开发全套都跑在 WSL 的文件系统。Win 上只有一个 Jetbrains 的壳。
    非常稳健,用了五六年了。
    enchilada2020
        9
    enchilada2020  
       178 天前 via Android
    vscode devcontainer 其他爱咋咋
    gloye
        10
    gloye  
       178 天前
    佬们太 city 了,我就下载 node,git,vscode(同步),就开始撸代码了,最多再配一个 oh-my-posh
    缺什么工具就去该工具官网上找
    eslizn
        11
    eslizn  
       178 天前
    包管理 chocolatey
    zsxzy
        12
    zsxzy  
       178 天前
    Android studio + vscode 就齐活了
    clf
        13
    clf  
       178 天前
    git 、jetbrains 、vscode 、nvm 、jdk 、tabby terminal 、VMWare 、数据库连接工具。
    ysc3839
        14
    ysc3839  
       178 天前 via Android
    MSYS2 + Git for Windows 的补丁 https://github.com/git-for-windows/git/wiki/Install-inside-MSYS2-proper (非官方支持,有滚包滚炸的可能,看需求选择)
    终端用 MSYS2 的 mintty ,shell 用 zsh+oh-my-zsh+powerlevel10k
    Visual Studio 选择 C++ 和 C#
    VSCode
    用 fnm 安装 Node.js https://github.com/Schniz/fnm
    用 Python 官网的安装包安装 Python
    seafox
        15
    seafox  
       178 天前
    我是先下个 vscode 再下个 visual studio 主要用 vscode 写 构建工具用用 xmake 包啊啥的看看 xmake 里面有没有 没用就用 vcpkg 还有些东西比较麻烦的还是要装个 linux 虚拟机
    securityCoding
        16
    securityCoding  
       178 天前
    不怎么折腾了申请了开发机 32 核 64g 云开发机, 全部 vscode remote ssh
    lanytcc
        17
    lanytcc  
       178 天前 via Android
    win 本?我感觉你这个有必要在 win 上吗,拿回来换 linux ,docker 在 win 下只有 50 %的效率,除非你是 win for arm
    zsj1029
        18
    zsj1029  
       178 天前
    @murmur 非也,win 自带的 hyper 不要太好用,吊打市面所有虚机,效率很高
    lyusantu
        19
    lyusantu  
       178 天前
    一个 IDEA ,一个 VM ,VM 里装 Docker ,所有环境跑在 Docker 里
    ysc3839
        20
    ysc3839  
       178 天前 via Android
    1. 不分区。除非哪天 Windows 能有很简单的方法把“整个 Users 文件夹”迁移到其他分区,且有类似 APFS 或 btrfs subvolume 这种多分区共享可用空间的机制,我才会考虑分区。
    在 Linux 上我选择 btrfs 且使用多个 subvolume 。
    2. 不如虚拟机。
    3. 用。参见前一条,用 MSYS2 的 pacman 包管理。我目前不太会考虑 winget 等“软件管家”式的,没有统一包格式的包管理。
    4. 默认配置。我只用 Windows Terminal 配合 cmd 和 PowerShell 用。
    用 WSL1 ,使用 wslbridge 等项目在 mintty 中使用,不用 Windows Terminal 。

    为什么不用 Windows Terminal ,因为 Windows Terminal 要兼容 Windows 曾经的控制台设计,实际工作模式是类似 screen/tmux 那样:程序输出,然后 Windows Console 更新一个内部 buffer ,再计算 buffer 的差异,再把差异部分用 ANSI escape sequence 输出给终端。
    加了这么一层转换之后难免会引入问题,也不支持一些高级功能。曾经遇到最严重的问题是,用 Git 附带的 ssh 客户端连接服务器,按 Ctrl+C 直接把本地的 ssh 客户端结束掉了。
    cxsz
        21
    cxsz  
       178 天前
    windows terminal 用 pwsh 当默认终端,插件装 PSReadLine 、oh-my-posh 、Terminal-Icons
    bqn
        22
    bqn  
       178 天前
    winget
    kdwycz
        23
    kdwycz  
       178 天前
    把 wsl2 打包还原到新电脑,安装 vscode
    BeforeTooLate
        24
    BeforeTooLate  
       178 天前
    vagrant+virturlbox+debian+docker
    搭配一次,永久有效,还机子了也没有任何问题,换 mac 了也可以。
    EndlessMemory
        25
    EndlessMemory  
       177 天前
    用到了再配
    magicfield
        26
    magicfield  
       177 天前
    1. 没必要分区,一个盘一个区最后,之前一台开发机 C 盘只分了 200G 后续很痛苦
    2. 如果要直接配一个通用部署环境可以考虑 vm 虚拟机一把梭,你在虚拟机里塞 docker 都行,但基础的开发环境,node 、git 之类最好还是本地环境
    3. 包管理看什么语言,但不是很推荐用 ide 原生功能的包管理,最好自己建本地库
    4. 不是很推荐用 wsl ,首先本身 hyper-v 就和 wsl 不兼容,想要兼容很困难,而且还要处理一堆其他问题,比如 wsl2 到 win11 新版本前配置静态路由都极其狗屎,显卡调用也极其狗屎
    win 下好用的 Terminal 也足够多了,目前在用 Tabby Terminal ,虚拟机也是用它连的
    laobobo
        27
    laobobo  
       177 天前
    不分区,直接一个盘, 开启 wsl2 ,配合 vscode 爽歪
    magicfield
        28
    magicfield  
       177 天前
    @magicfield 查了下有点误解了,hyper-v 和很多 vm 不是很兼容
    daguaochengtang
        29
    daguaochengtang  
    OP
       177 天前
    @murmur
    @zsj1029
    @magicfield 虚拟机没玩过,不过根据我之前网上看来的浅薄的经验,虚拟机好像会比较卡吧,你们用着体验怎么样呢?
    zsj1029
        30
    zsj1029  
       177 天前
    @daguaochengtang win 自带的 hyper 虚机,效率很高,内存足够的话一点不卡
    AItsuki
        31
    AItsuki  
       177 天前
    1. 没必要
    2. git 和 node 等工具类型必须本机安装,放 docker 估计是想折腾自己,怎么用。
    3. 没必要用包管理器,用处不大。非要用的话 winget 就够了
    4. terminal 默认配置就行。不用 wsl ,宁愿开虚拟机
    5. 哪有那么多机会给你搭建开发环境,缺啥装啥也不花时间。
    yunye
        32
    yunye  
       177 天前
    xampp 、vscode 双击安装完事
    magicfield
        33
    magicfield  
       177 天前
    @daguaochengtang win 自己的虚拟化 hyper-v 快不少,vmware 之类的虚拟机对性能折损挺大的
    isnullstring
        34
    isnullstring  
       177 天前
    vs+git ,一直下一步就完事
    hefish
        35
    hefish  
       177 天前
    首先买一台新电脑。然后开机。然后跟着感觉走。。。
    0o0O0o0O0o
        36
    0o0O0o0O0o  
       177 天前   ❤️ 1
    1. 不分区,不改路径,何苦给未来的自己挖坑
    2. windows 上的 docker 没用过,WSL 2 里的 docker 不知道可用程度如何,性能从不担心,敲代码跑跑编译而已
    3. 用,winget scoop chocolatey ,一些必需软件从里面找,实在没有你可以考虑自己维护个源或者提交一个进去
    4. 不怎么配置 wt ,主要用 WSL 里的终端

    > 你们会直接在 wsl 上开发、写代码嘛

    很多人都是从 Windows 上的 IDE 连进去吧? JetBrains 和 VSCode 都支持

    > 考虑减少重复配置的成本

    首先很赞同 #9 ,尽管我不了解它在 Windows 上是不是那么好用
    其次还是建议围绕 WSL 来构建你自己的 dotfiles
    最后,如果都接受围绕 WSL 开发了,何不 Linux 双系统,省太多事了

    我总觉得当 Windows 用户产生了避免重复配置的念头时,结局几乎就注定了,兜兜转转到最后,要么放弃这个念头——因为确实也没那么重要,要么投向 Linux 。。。

    这是我上次重装时的简单记录,目前也是日常用 /t/1001795

    再贴一个你可能会感兴趣的东西 https://learn.microsoft.com/en-us/windows/package-manager/configuration/create
    jaggerjiang
        37
    jaggerjiang  
       177 天前
    scoop wsl
    bandian
        38
    bandian  
       177 天前
    VSCode + Linux 虚拟机
    mingl0280
        39
    mingl0280  
       177 天前 via Android
    我自己撸的镜像,dism 直接刷
    daguaochengtang
        40
    daguaochengtang  
    OP
       177 天前
    @0o0O0o0O0o 感谢认真的回答
    zhumengyang
        41
    zhumengyang  
       177 天前
    1 全装 d 盘
    2 个人电脑会装 docker
    3 git-fork
    4 公司电脑 phpstudy ,个人电脑配置了 wsl2
    mmdsun
        42
    mmdsun  
       177 天前 via iPhone
    Dev Drive 开发驱动器
    WSL2 LINUX 版本 docker
    VSCODE 远程开发
    xiaoguai945yeah
        43
    xiaoguai945yeah  
       177 天前
    作为科研相关人员(属于自学吊车尾程序员吧……)硬答一下:
    1. 没必要分区,除非双系统。您说的 Desktop,Download 这些移动过去也可以,我都是直接把 Desktop/Documents 指到 OneDrive 下的目录,然后 Download 只用来下载/保存临时文件,哪天心血来潮/系统提醒了,就全删掉都行。快捷方式这个操作挺好,学到了(我用 Listary/PowerToys 也都能启动软件,用惯了)
    2. 没用过
    3.不太用,每次都官网下载,默认安装到 C 盘,但给爸妈电脑装了个 wingetUI (以后会改名叫 UnigetUI ),让他们尽量在那里装软件(也防不住继续用 360 软件管家……)
    4. 给 terminal/powershell 换个好看的字体(例如 Inziu IosevkaCC Slab SC )。wsl 之前做前端的时候用过,配合 VSCode 用挺无感的,现在也不用了,换新电脑都没再开启过……

    曾经事无巨细地写了 win+linux 双系统安装和配置的步骤到 OneNote 里,但后来发现根本懒得打开照着操作,而且当时 win10 各种设置的方法和位置,在现在的 win11 也都过时了……需求也会跟着变,对电脑的认知已经从“我的电子朋友”变成了“我的工作的一部分”,有时间更想花在休息、兴趣、陪家人上。
    esee
        44
    esee  
       177 天前
    1 、分区啊,系统一个盘,文件和程序一个盘,够用了。主要是平时养成区分好工作文件的习惯,这样重装系统的时候不至于还得去费劲去定位需要迁移的文件。
    2 、win 上现在就一个 vscode 、笔记文件、和一个终端管理,开发环境都在另外的 ubuntu 服务器上。远程开发,本地的 win 环境基本不用动,换个电脑也能同步工作进度,比如打开的文件夹,打开的哪个文件。等等。
    boxy123
        45
    boxy123  
       176 天前
    如果只有一个盘,又不分区的话,那之后重装系统要做数据备份
    WuLiSenSen
        46
    WuLiSenSen  
       176 天前
    程序员不都是用 macos 吗
    CodeAllen
        47
    CodeAllen  
       176 天前
    1.分 CD 盘足够了,我在 D 盘开了一个共享目录,方便 smb 挂在到 HyperV 虚拟机中,而且一堆 git 项目我也放在 D 盘,集中管理,我默认不显示桌面图标,运行程序直接 win+关键字基本秒开,公司的文档记录什么的用 OneDrive 同步,定期打包备份,根本不担心电脑突然坏;
    2.docker 我安装在 HyperV 的 ubuntu 虚拟机上,主要是固定版本的编译环境,Go 、Java 、NodeJS 程序直接就安装了,这个没啥版本问题,也可能是我没那么大的需求;
    3.PowerShell 里面装软件?没用过,有点难用;
    4.只要是 Linux 环境需求,首先去 wsl ,wsl 如果不行,再换 HyperV 里面的正经 Ubuntu 发行版,goland 都支持连接 wsl 进行开发;
    5.目前上班主要是 win 笔记本远程 NUC 主机使用,win 笔记本主要登录企业微信、微信等,开发主要环境在 NUC 主机上,而且都安装了 zerotier ,在外可以连上 NUC 主机直接用,公司虽然有 VPN ,但是并不能知道 NUC 主机的 IP 是多少,VPN 登录没法用 mDNS 有网段隔离只能连确定的 IP ,市面上的各种远控不放心。
    workingpad2
        48
    workingpad2  
       176 天前
    VSCode + WSL, Tabby
    artiga033
        49
    artiga033  
       176 天前 via Android
    1. ssd 完全不需要分区,不过我会单独拉一个 ReFS 的开发卷专门用来放各种编译工具链的缓存以及代码。

    2. 见 4

    3. winget 和 scoop ,不过严格来讲 winget 不算是包管理器

    4. 配色文件,Nerd 字体,然后一些常用快捷键,还有 profile 可以直接指定为任意指令,比如 ssh 到某个设备,还是很方便的。
    非微软生态(C#,msvc 之类)的开发我现在完全放到 wsl 里了,~~i use arch btw~~,想要什么数据库、redis 、mq 之类的直接 docker 起一个,甚至 windows 端也能访问到。对于 golang 之类的优先面向 linux 的语言在 Windows 上搞也是折磨自己。而且很多很重的开发环境直接 wsl --shutdown 之后 Windows 就可以进入游戏模式了,在 Windows 上做开发总感觉有后台清不干净,一般直接重启。
    另外 wsl 和 Windows 的互操作性比 vm 强多了,比如你可以直接在 wsl 里复用 Windows 端的 ssh 、git 配置,甚至是用 wsl 的 git 调用 Windows 的 gpg 签名,反之亦然。以及还有 wslg 临时用一下 linux 下独占的 gui 软件也挺好的。
    而且我的显卡是 intel 的 arc a770 ,这玩意跑机器学习的各种软件包在 linux 下都是比 Windows 既新又快。
    另外使用 wsl 还能用 btrfs 等新型文件系统,透明压缩真的是救了 rust 和 node 开发者的命
    tooyoungtoo
        50
    tooyoungtoo  
       176 天前
    windows terminal+zsh+wsl+vscode remote 。
    git nginx 和 docker 这些全部装 wsl 里面,windows 上面都不装。
    jones2000
        51
    jones2000  
       176 天前
    专职前端开发( c++/js). 无后台开发需求。
    就 2 个盘,c: 盘 250G , 其他给 D 盘。

    开发工具
    VSCode, vs2013 , vs2022, CMake ,git, svn, 各种小程序开发工具
    调试工具
    windbg, fiddler, Wireshark, Microsoft Network Monitor. 手机模拟器
    浏览器
    chrome ,Edge, Firefox
    数据备份
    OneDrive

    笔记本 2 年一换,新本子 2 年内坏的概率比较小。
    ByteCat
        52
    ByteCat  
       176 天前
    包管理器 scoop ,然后安 WSL2 ,完事
    ryanlid
        53
    ryanlid  
       176 天前
    不分区,所有软件用默认配置一键安装,不折腾。空间不够的话加个机械硬盘,存视频和一些大的文件

    vscode ,Jetbrains 连 wsl ,创建多个 wsl 也能环境隔离
    catamaran
        54
    catamaran  
       175 天前
    是我用 windows 太久了吗?区和盘啥区别?除开物理设备不说,就操作系统层面,楼主说不分区,但是又把 download 移到其他盘,这是啥操作? windows 上说 c 盘,一般是指 disk 1 上面的 partition 1 ,这个区,我理解就是盘吧?
    NotAProgrammer
        55
    NotAProgrammer  
       175 天前
    @dobelee #8 老哥能具体说一下嘛
    smdbh
        56
    smdbh  
       175 天前
    看你工作行业。我是除了 office 和 ide ,基本都是绿色软件,d:\program 直接复制就能用。个别需要双击 reg ,添加进右键一次。
    Chuckle
        57
    Chuckle  
       175 天前
    固态没必要分盘,按文件夹分就行,装环境的、软件的各种文件夹,all in vscode ,配合 wsl ,也有人喜欢把数据库、环境都装 docker 里,我是习惯本地装,工具集合用 utools ,主打一个操作越少越好。还有固态+硬盘盒+Ventoy 搞的多系统已经吃灰了,VMware 也吃灰但也得装好。所有软件的快捷键都扔桌面,用 Coodesker 分类保存。
    joey9696
        58
    joey9696  
       14 天前
    @dobelee goland 访问 wsl 的文件不会卡吗,我看我项目稍微大一点,检索索引的时候就很慢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5384 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.