Ubuntu下安装配置VS Code:C/C++、Python与远程开发全攻略 用VS Code久了你会发现“编辑器”和“开发环境”之间其实差着好几个数量级。尤其从Windows切到Ubuntu之后很多人第一个装的就是它——但要装得干净、用得顺手背后还是有不少细节值得挖一挖。这篇文章就是围绕“Ubuntu下安装VS Code”这件事把我这些年折腾过的路径、踩过的坑、验证过的配置方案全捋一遍目标很明确让你在自己的机器上从零装出一个能写C/C、能跑Python、连远程服务器都顺手的VS Code开发环境。适合谁看两类人。第一类刚接触Ubuntu、还在纠结“哪个编辑器适合Linux”的新手第二类已经在用VS Code但每次重装系统后都要重新配一遍环境、想找个完整流程照着抄的老手。这篇文章会覆盖安装方式选型、中文界面配置、C/C与Python两大主流语言环境的搭建以及WSL、SSH远程开发、输入法和常见启动故障的处理办法。内容偏实操命令直接复制就能用但每个关键环节我都会解释一句“为什么要这么干”。1. 先想明白在Ubuntu装VS Code到底有哪些讲究1.1 为什么是VS Code而不是其他编辑器在Ubuntu下写代码可选的编辑器其实非常多Vim、Emacs、Sublime Text、Atom已经停更了……但VS Code在Linux生态里的地位基本相当于瑞士军刀——它本身就是用Electron写的跨平台应用Windows、macOS、Linux三端体验一致这在团队协作时特别重要。你在Windows上习惯的快捷键、配置文件、插件体系切到Ubuntu后几乎无缝迁移。更核心的原因是插件生态。以填代码补全、调试、Git集成为例VS Code的扩展市场里既有微软官方的语言插件也有社区维护的腰杆子很硬的项目覆盖面很全。很多刚需功能不用自己拼命令行装个插件就能在图形界面解决。相比Vim需要花大量时间做配置VS Code属于“开箱即用、逐步增强”的路子对从Windows切过来的用户尤其友好。1.2 不同Ubuntu版本的下载差异有一点必须提前说清楚Ubuntu的版本直接影响你下载哪个安装包。比如说Ubuntu 20.04、22.04、24.04它们的基础库版本差别不小VS Code的deb包对glibc等系统库有最低版本要求。如果系统太老装上之后可能连图标都点不开。所以我建议你在执行安装之前先确认自己的系统版本命令是lsb_release -a cat /etc/os-release看到版本号之后再决定下载哪个包。目前绝大多数在用的Ubuntu是22.04 LTS和24.04 LTS这两个版本跑最新版VS Code都没问题。如果还在用18.04这种老版本那建议优先考虑通过官方apt仓库安装因为它会根据系统实际情况拉取兼容的版本。1.3 三种主流安装方式对比在Ubuntu下装VS Code主要有三条路安装方式优点缺点适合场景官网下载deb包用dpkg安装版本明确安装路径直观后续需要手动升级一次性安装不想折腾的人微软官方apt仓库能随apt update自动升级首次配置密钥和源稍麻烦长期使用追求省心的人snap商店安装一条命令搞定自动更新启动速度略慢权限偶有沙箱限制只是临时用一下或懒得配置仓库的人我自己三套都试过。最近两年的习惯是优先用deb包下载快、装完就能跑、遇到问题好排查。apt仓库适合那种“我一个月重装一次系统不想每次都跑去官网点下载”的人配置一次就能持续更新。snap怎么说呢不推荐作为主力方案但也不是不能用后面我会细讲它的坑。2. 三种安装方式实操从下载到命令行验证2.1 方式一官网deb包安装推荐打开VS Code官网的下载页面注意有两个入口一个是“Download for Linux arm64”一个是“Download for Linux x64”。绝大多数桌面PC和笔记本都是x64架构ARM架构的设备才选前者。ARM的机器选错包装的时候倒不报错但跑起来会出现奇怪的架构不匹配问题。下载好deb包之后打开终端进入下载目录执行sudo dpkg -i code_*.deb这里大概率会碰到一个经典场景dpkg提示依赖关系不满足常见的报错是依赖某几个包未安装。因为Ubuntu的软件仓库里不一定自带VS Code要求的全部依赖。遇到这种情况不用慌先补一轮依赖修复sudo apt -f install这条命令会自动把缺失的依赖装上然后VS Code就算装好了。如果你比较讲究也可以先手动更新一遍索引再安装能少踩不少坑。验证是否装成功在终端敲code --version能输出版本号就说明核心程序已经就位。此时在应用列表里搜“Visual Studio Code”或者直接敲code命令都能启动。2.2 方式二微软官方apt仓库自动更新如果你不想总惦记“有没有新版本”那就配置微软的官方apt仓库。步骤比下载deb包多几步但胜在一劳永逸。先安装必要的基础工具sudo apt update sudo apt install software-properties-common apt-transport-https wget然后导入微软的GPG密钥并添加到系统信任列表wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg接下来添加VS Code专属的apt源。这里有个细节值得注意不同版本的Ubuntu对应的源地址不一样需要把$(lsb_release -cs)替换成实际版本代号。直接用下面的命令它会自动获取当前系统的版本代号这样就不需要手动查echo deb [archamd64,arm64,armhf signed-by/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main | sudo tee /etc/apt/sources.list.d/vscode.list /dev/null做完这些更新仓库索引并安装sudo apt update sudo apt install code之后每次sudo apt update sudo apt upgradeVS Code都会跟着一起更新。这条路的隐患是什么微软的GPG密钥偶尔会轮换导致apt更新时报错签名失效。遇到这种情况重跑一遍导入密钥的命令就行不用重装系统。2.3 方式三snap商店不太推荐的主力方案snap安装非常简单一条命令sudo snap install code --classic看起来干净利落但实际用起来有几个不太舒服的地方。首先是首启速度snap包是压缩挂载的方式运行冷启动比deb包慢个一两秒其次是沙箱权限某些涉及文件系统深度操作的插件可能会因为权限受限而表现异常比如部分代码格式化工具、文件同步工具在snap版本里需要额外配置接口权限。如果你只是想在虚拟机里快速体验一下VS Codesnap完全够用。但如果是认真的开发主力环境我还是建议用前两种方式。说到底VS Code本身是自由软件微软也不限制你用哪种方式装但选择一个让自己后续少折腾的安装方式才是真正的效率。3. 装完之后的二次配置中文、字体与终端体验3.1 汉化别急着找语言包很多人的第一个动作是装“Chinese (Simplified) (简体中文)”这个插件——思路没问题但有一个前置条件容易忽略Ubuntu系统本身的语言环境。如果系统locale不是中文VS Code汉化后可能只改了菜单部分右键菜单和插件提示还是英文算是“半个汉化”。建议先确认系统localeecho $LANG如果是en_US.UTF-8可以不改系统语言直接在VS Code里装中文插件效果已经不错。真正想要完全中文化可以在系统设置里把Language改成中文并注销重新登录。但说实话我自己后来反而切回英文界面了——因为很多插件的文档、报错信息都是英文的中英混着用容易造成理解偏差英文界面反而更统一。插件安装方式很简单左侧边栏点扩展图标快捷键CtrlShiftX搜索“Chinese (Simplified)”点击Install。装完右下角会弹出提示重启VS Code后界面就会变成中文。3.2 字体配置一路向macOS体验靠拢热词里有个非常有意思的点“wsl ubuntu写代码最推荐的字体接近macos的体验”。这说明很多人的心理预期是——在Ubuntu里写代码也想拥有macOS那种清晰圆润的字体渲染效果。这事完全可行关键在两步选择合适的等宽字体以及打开字体连字font ligatures。先说字体选择。我比较推荐的几款适合编程的等宽字体有JetBrains Mono、Fira Code、Source Code Pro、Hack。其中最接近macOS默认等宽字体的我个人感觉是JetBrains Mono圆润、可读性高而且有专门的连字设计。安装字体直接用apt或手动下载都可以。以JetBrains Mono为例wget https://github.com/JetBrains/JetBrainsMono/releases/latest/download/JetBrainsMono-2.304.zip unzip JetBrainsMono-2.304.zip -d JetBrainsMono mkdir -p ~/.local/share/fonts cp JetBrainsMono/fonts/ttf/*.ttf ~/.local/share/fonts/ fc-cache -f然后在VS Code设置里快捷键Ctrl,搜索font-family把默认字体改成JetBrains Mono, Fira Code, Droid Sans Mono, Courier New, monospace同一个设置界面里再把font-ligatures开关打开代码里的、这些符号会自动变成漂亮的连字形状。渲染效果出来后虽然不能完全复刻macOS的渲染引擎但视觉体验已经能拉到一个很舒服的层次。3.3 终端集成与WSL开发VS Code自带终端Ctrl这个功能在Linux下格外重要。因为它直接继承系统环境变量你之前在终端里配过的PATH、alias、conda环境在VS Code终端里都能直接用。这意味着很多编译、运行命令不需要切出编辑器就能执行。如果你的主要战场是WSLWindows Subsystem for Linux那要特别记住一个原则不要在WSL里面再装一个完整的VS Code而是要在Windows端的VS Code里装“WSL扩展”然后通过code .命令让VS Code以远程模式连接WSL环境。这样做的好处是图形界面仍然由Windows端的VS Code渲染但文件系统、编译工具链、运行环境全部走WSL速度比在WSL里直接跑图形应用更快兼容性也更好。连接之后左下角会出现一个绿色的“WSL: Ubuntu”标志说明已经进入远程开发模式。这时候在VS Code终端里执行的命令实际上是在WSL里执行的输入法和文件路径都能正常跟Windows互通体验非常顺畅。4. C/C环境配置从编译器到调试器一整套4.1 给系统装上完整工具链很多新手在Ubuntu上用VS Code写C/C遇到的第一道坎是“明明装了VS Code怎么连编译都报错”。原因很简单——VS Code只是一个编辑器编译器是另一套东西。在Ubuntu上你要先确认有没有安装GCC、G、GDB和Makesudo apt update sudo apt install build-essential gdbbuild-essential是一个元包它会自动安装gcc、g、make等一套核心编译工具。gdb是调试器没有它就没法在VS Code里做断点调试。装完之后验证一下gcc --version gdb --version有版本输出说明工具链就绪。接下来才是VS Code侧的事情——让编辑器能“看懂”C/C代码并能调用这些工具完成编译和调试。4.2 插件三件套与tasks.json配置VS Code插件市场里C/C插件最核心的是微软官方的“C/C”扩展它提供IntelliSense代码补全和跳转以及调试支持。写CMake项目的话再装一个“CMake Tools”。对于纯单文件的算法题、练习代码光靠C/C扩展和tasks.json就够了。先创建项目目录写一个hello.cpp#include iostream using namespace std; int main() { cout Hello from VS Code on Ubuntu endl; return 0; }要让它能一键编译、运行按CtrlShiftP打开命令面板输入“Tasks: Configure Default Build Task”选择“C/C: g build active file”。VS Code会在项目根目录生成一个.vscode/tasks.json内容类似{ version: 2.0.0, tasks: [ { type: cppbuild, label: C/C: g 生成活动文件, command: /usr/bin/g, args: [ -fdiagnostics-coloralways, -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension} ], options: { cwd: ${fileDirname} }, problemMatcher: [$gcc], group: { kind: build, isDefault: true }, detail: 调试器生成的任务。 } ] }这个文件的作用是把“按CtrlShiftB编译当前文件”这件事绑定到g命令上。${file}和${fileDirname}是VS Code的变量分别代表当前文件和所在目录不用手写死路径换项目也能用。4.3 调试配置launch.json怎么写才不踩坑编译没问题后按F5想调试VS Code会提示你配置调试器。创建一个launch.json选择“C (GDB/LLDB)”生成的配置模板里往往需要手动改几个关键字段尤其是program和miDebuggerPath。{ version: 0.2.0, configurations: [ { name: C/C 调试, type: cppdbg, request: launch, program: ${fileDirname}/${fileBasenameNoExtension}, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: false, MIMode: gdb, setupCommands: [ { description: 为 gdb 启用整齐打印, text: -enable-pretty-printing, ignoreFailures: true } ], preLaunchTask: C/C: g 生成活动文件, miDebuggerPath: /usr/bin/gdb } ] }两个细节preLaunchTask的值必须和tasks.json里的label完全一致否则F5调试的时候不会先编译最新代码externalConsole最好设成false让程序在VS Code内置终端里跑否则在Ubuntu某些桌面环境下会弹出一个不可控的外部终端窗口。4.4 IntelliSense的includePath配置如果你的代码用到了第三方库比如OpenCV、Eigen等VS Code的代码补全可能会标红波浪线说找不到头文件。这时候要写.vscode/c_cpp_properties.json把库的头文件路径加进去{ configurations: [ { name: Linux, includePath: [ ${workspaceFolder}/**, /usr/include/**, /usr/local/include/** ], defines: [], compilerPath: /usr/bin/gcc, cStandard: c17, cppStandard: c17, intelliSenseMode: linux-gcc-x64 } ], version: 4 }includePath里${workspaceFolder}/**的意思是项目根目录下的所有子目录都会参与头文件搜索。/usr/include/**和/usr/local/include/**是Ubuntu系统库和常见第三方库的默认安装位置。配置好之后即便不运行编译编辑器里的跳转和补全也都能正常工作。5. Python环境配置解释器、虚拟环境与linting5.1 从Python解释器到PylancePython是Ubuntu上最省心的开发语言之一因为系统自带Python3但版本和包管理工具的配置还是值得花时间做对。先确认系统Python版本python3 --version pip3 --version如果pip没装先执行sudo apt install python3-pip。然后回到VS Code在扩展面板搜索“Python”并安装微软官方扩展。这个扩展会自带Pylance语言服务器提供补全、类型检查和跳转功能比默认的语法高亮强很多。装好插件后打开任意.py文件VS Code右下角会显示当前选中的解释器。如果没自动识别按CtrlShiftP唤起命令面板输入“Python: Select Interpreter”选择系统Python3或你已经装好的venv解释器。这一步非常关键——选错解释器会导致后面安装的包在编辑器里“看不见”。5.2 用venv隔离项目依赖写Python不建虚拟环境等于在积木塔上玩俄罗斯方块——早晚要出事。Ubuntu系统Python环境默认由apt管理如果直接pip install全局装包轻则版本冲突重则影响系统工具运行。所以每个项目建一个venv才是最稳妥的做法。在项目目录下执行python3 -m venv .venv source .venv/bin/activate看到终端提示符前缀出现(.venv)说明虚拟环境已激活。此时安装的包只会进入当前项目的.venv目录pip install requests numpy pandas回到VS Code再执行一次“Python: Select Interpreter”选择.venv/bin/python。以后无论是运行、调试还是补全都基于这个独立的Python环境非常干净。5.3 配置调试与代码规范在VS Code里调试Python需要准备launch.json。点击左侧运行和调试图标选择“Python Debugger”模板VS Code会生成类似这样的配置{ version: 0.2.0, configurations: [ { name: Python 调试当前文件, type: debugpy, request: launch, program: ${file}, console: integratedTerminal } ] }program字段用${file}表示调试当前打开的文件适合快速测试单个脚本。console设为integratedTerminal能让输入输出显示在VS Code内置终端里同时支持input()这类交互式函数。代码规范方面装一个“Ruff”插件或“Flake8”插件。Ruff是现在比较流行的选择速度快、配置简单装完后VS Code会在保存时自动检查代码风格问题。设置里的python.linting.enabled: true确保linting开启。对团队协作来说统一的代码规范比个人习惯重要得多这一步最好不要省。6. 常见问题与排查技巧实录6.1 VS Code完全打不开的排查装完VS Code后点击图标没反应终端里敲code也没输出这种情况最常见的原因是硬件加速问题——部分Linux桌面环境或显卡驱动对Electron应用的GPU渲染支持不好。先用命令行方式启动能直接看到报错code --verbose如果报错信息里提到GPU、swiftshader等词说明跟图形渲染相关。临时方案是禁用GPU加速启动code --disable-gpu--disable-gpu能启动后可以把它固化到启动参数里。修改/usr/share/applications/code.desktop中的Exec行加上--disable-gpu参数以后从应用列表里点击也能正常打开。另一种常见情况是权限问题比如用root用户安装的deb包普通用户执行code时没有对应缓存目录的写权限。解决办法是先清理用户级缓存再启动rm -rf ~/.config/Code ~/.vscode code6.2 中文输入法打不出中文这是在Ubuntu上安装VS Code后吐槽最多的问题之一。现象很明确系统其他地方浏览器、终端能正常打中文唯独在VS Code里切换输入法没反应。根本原因通常在于输入法框架和Electron应用的连接方式。当前Ubuntu主流输入法框架有Ibus和Fcitx两种。搜狗输入法的Linux版、百度输入法的Linux版基本都基于Fcitx系统自带的中文拼音输入法基于Ibus。VS Code在启动时需要知道自己该连接哪个输入法框架这个信息通过环境变量传递。如果是Fcitx框架在启动前先设置两个环境变量export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx code如果是Ibus框架相应的改成ibus。这组命令会告诉VS Code使用哪个输入法模块。如果环境变量配好了还是不行可以试试在VS Code设置里搜索editor.imeSupport确认它处于开启状态。新版VS Code对Ibus有额外支持通过editor.imeSupport: true可以修复部分中文输入失效问题。6.3 Remote-SSH连接不上远程服务器用VS Code的Remote-SSH插件连远程服务器时最常见的问题是“反复输入密码但进不去”或“连接超时”。先说超时这类问题大概率是网络原因。如果服务器在国内建议先ping一下确认基础连通性如果服务器在国外网络波动本身就常见可以换一个网络环境再试。反复要求输入密码通常是SSH密钥的权限设置不正确。VS Code远程插件默认使用~/.ssh/id_rsa私钥如果私钥文件权限太宽松比如644OpenSSH会直接拒绝使用这个密钥。修复方法chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub还有另一个经典问题远程服务器上首次连接时会提示“Host key verification failed”。这是因为目标主机的指纹没有进入本地的known_hosts文件。可以把目标主机从known_hosts里清掉再重连ssh-keygen -R 服务器IP然后重新执行Remote-SSH连接它会再次询问是否信任该主机选择“yes”即可。6.4 环境变量配置错误导致命令全丢这个场景在热词里也出现了——“ubuntu环境变量配置错误”。很多人改~/.bashrc或~/.profile时手滑把PATH覆盖了导致连ls、sudo这些基础命令都找不到。如果你是在编辑配置文件之后、关掉终端之前发现了这个问题当前会话的修复方法是直接用绝对路径调用命令/usr/bin/sudo /usr/bin/nano ~/.bashrc把export PATH那行改回正常值然后执行source ~/.bashrc恢复。如果更糟——直接改坏了/etc/environment这类系统级文件重启后连图形界面都进不去那就需要在登录界面按CtrlAltF3进入终端用同样方式修复。这类问题之所以让不少人慌是因为VS Code打开时也会继承受损的PATH导致它找不到编译器、找不到Python解释器。所以修好PATH之后最好完全退出VS Code再重新打开让它重新加载环境变量。资料里还可能遇到“明明装好了gcc但创建任务时找不到编译器”的情况十有八九也是PATH问题。6.5 插件的配置同步最后分享一个容易被忽略的点换机器或重装系统后手动一个个装插件太痛苦了。VS Code本身就带设置同步功能登录微软账号或GitHub账号后选择“设置同步”插件列表、快捷键、用户级配置都能自动恢复。同步后到新机器上只要装好VS Code并登录插件自动就位省下来的是实实在在的大把时间。最后再分享几个小习惯UBuntu下用VS Code这几年我最后养成了几个习惯写在这里当结尾吧。第一装软件优先走官网deb包或官方apt源少用各种来路不明的PPA——编辑器这种东西出问题排查成本太高不值得为省两步命令冒险。第二每个项目都用独立配置目录.vscode文件夹尽量提交到Git仓库里课题组、团队里不同人的编辑器配置能保持一致。第三遇到问题时先看code --verbose输出——它比任何社区提问都更直接地告诉你程序卡在哪里。第四C/C和Python环境配置完成后一定要用一个小测试项目完整跑一遍编译、运行、调试确认整条链路走通再开始写正式代码。说实话VS Code的安装和配置本身并不难难的是把整条开发链路打磨顺。希望这篇内容能让你在Ubuntu上的一次性配置变得顺畅一点把宝贵的时间留给你真正想写的东西。