
1. 为什么你不需要更多工具而是需要一套“顺手”的组合做技术这行十几年我发现自己身边大多数人的电脑里都塞满了几百个工具真正每天都在用的往往不超过十个。工具不是越多越好关键是在每个场景里找到那个“顺手”的然后把它用到极致。今天这篇东西不聊那些花里胡哨的、看起来高大上的软件就说我自己在长期实战里真正离不开的、每天都在用的那些工具以及我是怎么把它们搭配起来用的。先说说我自己的使用场景。我平时的工作既包含代码开发、服务器维护也包含大量文档编写和资料整理。早年间我也走过弯路什么工具火就试什么结果时间都浪费在“适应工具”而不是“用工具解决问题”上了。后来我沉淀出一套组合拳终端为核心、编辑器为辅、调试工具查漏、效率工具兜底。这套东西无论是放在Windows、macOS还是Linux上换电脑之后都能快速恢复配置迁移基本无痛。这篇文章适合谁看如果你是刚入行的开发者想找到一套值得长期投入的学习路线或者你是个效率控厌倦了不停换软件却总觉得缺了点什么那这篇文章应该能给你一些参考。我会按照“为什么选它、怎么配置、实际用起来什么样、有哪些坑”的顺序来聊尽量做到学了就能用。2. 终端与Shell工具链效率的主战场2.1 终端模拟器iTerm2与Windows Terminal怎么选很多人忽略了一个事实你每天打交道最多的不是某个编辑器而是终端。终端决定了你敲命令的舒适度也决定了你同时管理多台服务器时的效率。在macOS上我用的是iTerm2配一个深色主题加上自带的Hotkey Window功能——一键呼出终端窗口不用在应用间来回切换。这个习惯我坚持了六七年已经成为肌肉记忆。在Windows上我推荐Windows Terminal它从微软商店就能装原生支持多标签页、GPU加速渲染配合PowerShell 7使用体验已经很接近Linux了。这里重点说下终端的两个核心配置一是字体我建议使用等宽字体比如JetBrains Mono或者Sarasa Term SC中文环境下的显示效果很好而且能区分容易被混淆的字符比如数字0和字母o1和l二是配色不要用纯黑纯白那种刺眼方案选一个对比度适中的主题能显著减轻长时间盯屏幕的疲劳感。此外开启自动换行、开启无限滚动缓冲都是提升日常工作效率的小细节。终端一旦选对后面所有的命令行操作都会顺起来。2.2 tmux复用会话断了重连也不用慌我在服务器上跑任务时最怕的就是SSH会话一断跑了一半的程序就没了。这个问题用tmux能彻底解决。tmux是一个终端复用器可以让你的终端窗口里开出多个会话这些会话在后台运行。哪怕本地网络断开、SSH退出服务器上的任务还会继续执行。重新连上后只需要执行tmux attach就能回到之前的界面里面的历史输出都还在。tmux的常用操作其实不复杂prefix键默认Ctrlb配合其他键完成分区、切换、滚动等动作。我最常用的几个命令是tmux new -s work创建一个名为work的新会话tmux detachCtrlb d暂时离开会话但任务继续跑tmux attach -t work重新回到会话Ctrlb % 左右分屏Ctrlb 上下分屏方便在一个窗口里同时看日志和敲命令刚上手的人会觉得prefix键很别扭但坚持用两周就能形成肌肉记忆。我个人的建议是把prefix改成Ctrla因为Ctrlb在Bash里本身有“左移光标”的功能改掉可以避免冲突。2.3 检索与定位rg、fzf与跳转的配合我们写代码、看日志最常做的事情其实是“找东西”。在代码库里找一个关键字在命令行历史里找回之前敲过的一条命令在目录结构里快速跳到某个深层文件夹——这些事如果靠肉眼找效率极低。我给自己搭了一套“检索三件套”ripgreprg一个极快的搜索工具用来替代grep做递归搜索。它默认忽略.gitignore中声明的文件搜索代码时不会一搜出一堆node_modules或者target目录。配合正则表达式基本可以做到全项目秒级定位。fzf一个模糊查找器可以和很多命令配合。最常用的是按CtrlR调出历史命令直接输入几个关键字模糊匹配再回车执行还可以配合CtrlT把当前目录下的文件名插入到命令行中省去手动输入长路径的麻烦。z或zoxide一个目录跳转工具它会记录你经常访问的目录然后根据访问频率快速跳转。比如我经常访问~/project/blog以后敲z blog就能直接飞过去不用再一层一层cd。这三个工具配合起来日常“找文件—找内容—跑命令”的全流程都变得顺滑了。尤其推荐fzf它属于那种“用过就回不去”的工具安装也很简单多数平台一条命令搞定。2.4 Shell配置管理用dotfiles做一次配置处处同步Shell环境的威力其实藏在配置文件里。.bashrc、.zshrc、git配置、tmux配置、编辑器配置这些统称为dotfiles。我强烈建议给dotfiles建一个Git仓库这样换电脑、重装系统后只需要clone一份再执行一个初始化脚本整个环境就能恢复成你熟悉的样子。我使用的Shell是zsh配合Oh My Zsh做主题管理和插件加载。实际生产环境中引用的常用插件有zsh-autosuggestions根据历史命令自动补全提示、zsh-syntax-highlighting命令合法与否实时高亮这两个简直是效率双雄谁用谁知道。需要留个心眼的地方是存放dotfiles的Git仓库尽量不要包含敏感信息比如私钥、密码之类的这些内容单独管理和加密存储。我的做法是使用一个脚本把敏感文件从仓库中排除只在初始化时从密码管理器里手动恢复。3. 编辑器与开发环境少即是多稳才是快3.1 VS Code为什么成了主力编辑器以及哪些配置值得调编辑器是开发者工具链里最容易被吵翻天的话题。我个人的选择是VS Code不是因为它在每个维度都碾压其他编辑器而是因为在“开发体验、插件生态、跨平台一致性”这三个维度上它取得了最均衡的表现。VS Code真正厉害的地方在于它比传统IDE更轻但通过插件可以获得贴近IDE的能力。我日常必装的插件有这样几个Remote SSH远程开发必备、GitLens查看代码提交历史和作者、Prettier代码格式化、ESLint前端静态检查以及Python、Go、Java等语言服务插件。它的settings.json是我花时间调过最多的一个文件。举几个关键配置{ editor.fontSize: 15, editor.minimap.enabled: false, editor.renderWhitespace: none, files.eol: \n, terminal.integrated.defaultProfile.windows: PowerShell, workbench.colorTheme: One Dark Pro, editor.formatOnSave: true }几个值得注意的点自动保存时格式化这个功能表面上提升了代码整洁度但如果团队没有统一的格式化配置容易造成莫名其妙的diff。我的做法是只在个人项目里开启formatOnSave团队协作项目里关掉改用统一的EditorConfig和Prettier配置。3.2 Git工具链不只是commit和pushGit是最常用的版本管理工具。但很多人对Git的印象停留在git add、git commit、git push这三板斧。真正用到熟练还要理解几个关键机制。分支管理上我长期使用Git Flow的简化版主干分支始终保持可发布状态开发用feature分支修复直接开fix分支合并时使用--no-ff保留分支历史。这样的好处是线上出了问题能快速找到对应的一次合并回滚也容易。命令技巧方面git rebase -i是一个强力工具它可以把多次杂乱的提交整理成干净的提交序列这在提交PR给团队评审时非常有用。但要注意rebase只适用于尚未推送到远程的本地提交如果已经多人共享了某个分支再用rebase就会重写历史给协作带来麻烦。另外我还建议每个人都掌握git stash与git cherry-pick。前者是临时保存当前未提交的改动让自己能快速切到另一个分支处理问题后者是把某一个单独的提交精确移植到当前分支。配合git log --oneline --graph查看提交图形你会对整个仓库的脉络有一个更清楚的认识。3.3 容器化开发环境让“在我电脑上是好的”成为过去如果说编辑器是剑那Docker就是剑鞘。它解决了开发中最大的痛点之一环境不一致。我现在的做法是项目里一定放一个docker-compose.yml把依赖的数据库、缓存、中间件全部容器化。新同事加入项目只需要docker compose up -d本地环境就完整了再也不用经历“装MySQL、配用户名密码、初始化表结构”的漫长过程。这里有一个很重要的资料Docker镜像尽量使用固定tag避免使用latest。因为latest会漂移今天拉的是这个版本三个月后可能就不一样了总有一天会环境对不上。如果你所在的项目还依赖一些本地的动态库或者特殊版本解释器可以考虑使用Dev Container。VS Code的Remote-Container插件可以帮你把编辑器直接“塞进”容器里代码在容器里跑编辑器插件的语言服务也运行在容器内做到真正一致的开发环境。这一套下来开发机的洁净程度、项目的可维护性都会明显提升。4. 网络与调试工具定位问题比解决更重要4.1 HTTP调试curl的技巧与API客户端的选择做开发、尤其是对接接口时调试HTTP请求是每天的家常便饭。curl是命令行下最底层的HTTP调试工具几乎所有系统都自带。但很多人只会用curl http://xxx然后看个返回值就完了其实curl的能力远不止于此。常用参数值得都记住-X指定请求方法、-H传请求头、-d传请求体、-i显示响应头、-v输出详细交互过程。有一次排查线上接口超时问题就是靠curl -v看到“Connection timed out”的字样立刻判断是网络连通性问题而不是应用代码的问题省去了大半天的瞎折腾。在API客户端方面我常用Postman但最近几年转向了Apifox。理由很简单Postman更偏工具性质而Apifox把接口管理、Mock、文档和测试都整合到了一起。团队联调时接口文档同步更新后端改完接口前端立刻能看到新的示例。不过说实话工具选哪个有主观偏好。我更建议把时间花在理解HTTP协议本身状态码的含义、请求头与响应头的结构、GET和POST语义的区别。底层逻辑清晰了用什么工具都只是顺手而已。4.2 主机与端口排查telnet、nc与常用网络命令网络问题千奇百怪最常见的就三类端口不通、DNS解析异常、带宽或延迟过高。这几类问题我排查时有一套固定套路。首先检查目标主机是否可达用ping看丢包率与延迟其次检查端口是否开放Windows用Test-NetConnection、Linux用nc -zv target porttelnet也可以但有些新系统默认不装再次确认DNS解析是否正确用nslookup查一下域名指向的IP是否符合预期。很多新手碰到“网页打不开”第一反应是重启电脑、清缓存。其实按照这个顺序排查几分钟就能定位到问题出在哪个环节。比如有一次用户反馈“某个接口偶发超时”我先检查了端口连通性又看了DNS最后通过连续curl记录了响应时间分布定位到是某个公网链路间歇性抖动和代码逻辑一点关系都没有。4.3 浏览器开发者工具的几处高效用法浏览器开发者工具是前端调试的标配但很多资深后端也依赖它来排查问题。Network面板可以看到每个请求的耗时、请求头、响应体还能筛选特定类型的请求Console面板除了看报错还能直接执行一些调试脚本。我最常组合用两个功能一是Network面板里的“Preserve log”开启后刷新页面时日志不会被清空适合排查页面跳转过程中的接口调用顺序二是“Copy as fetch”右键一条请求就能直接生成对应的JavaScript脚本方便在Node环境里快速复现这个请求。如果怀疑是渲染性能问题Performance面板可以录制一段操作过程查看主线程的耗时分布或者分析是否存在明显的内存泄漏。虽然这些功能要花时间去熟悉但用熟了之后排查问题会非常准。这里要额外提醒一句调试时如果涉及到用户数据尤其是生产环境的敏感内容要格外慎重不要日志打得太随意更不要把抓到的请求包随意贴到公开的地方。5. 文档、笔记与知识管理被低估的效率放大器5.1 Markdown与笔记工具的选择写文档这件事长期被低估。一个项目的可维护性很大程度取决于文档质量。而文档工具的选择会直接影响你愿不愿意写文档。我用的是Markdown原因很朴素纯文本、跨平台、能进Git版本管理、渲染简单。任何平台打开一个md文件都能看到原始内容不存在“打不开”“排版错乱”的问题。笔记工具方面我选的是Obsidian。它基于本地文件存储所有笔记都是md文件不依赖任何云服务同时支持双向链接和关系图谱适合做知识积累。我构建了一套“原子化笔记”的方法每条笔记只记录一个知识点然后用双链把它与相关笔记关联起来。这样累积几年之后笔记之间会自然长出知识网络查阅时的联想效率极高。如果你更习惯线上同步语雀和Notion也是不错的选择。关键是要选一个并坚持维护最忌讳的是隔几个月换一个笔记软件数据迁移折腾不说笔记习惯也被打断了。5.2 文档协作中的流程约定团队文档协作如果要顺畅光靠工具还不够需要一些规范。我通常会在团队的文档仓库根目录放一个README.md把文档目录结构、命名规范、更新流程写清楚。比如接口文档统一放docs/api会议记录统一放docs/meetings命名规则是YYYY-MM-DD-主题.md。这套规范的好处是很明显的当文档数量到几百个的时候搜索和浏览的体验完全取决于当时的分类是否清晰。还有一个好习惯是“写文档和写代码一起完成”改完一个功能顺手把文档更新掉不要让文档滞后。至于中心化的知识库可以用Wiki.js或者BookStack等自建方案但除非团队已有基础设施否则我更推荐先从Git仓库Markdown起步。最重型的方案是Confluence适合大型组织但对小团队来说管理成本和授权费用都偏高。5.3 图片压缩与格式转换的小工具日常写文档、做分享经常需要对图片做压缩和格式转换。这个场景我分享几个轻量级工具处理截图的压缩和尺寸调整我用的是macOS自带的预览配合Automator做批量操作Windows上推荐PowerToys自带图片缩放功能右键就能直接改尺寸。如果对质量和体积有更高的要求可以试试在线版的SquooshGoogle出品直接在浏览器里比较压缩前后的效果还能调整编码参数。这类工具还有一个业余的好处学习图片压缩原理比如有损压缩和无损压缩的区别、WebP与AVIF格式的适用场景懂了这些遇到“图片太大传不上去”之类的问题就知道该怎么处理了。6. 效率工具与自动化把重复劳动交给脚本6.1 三步搭起自己的快捷命令库会不会用自动化是区分“熟练工”和“小白”的一个分水岭。在我看来自动化不是非得写一个复杂的脚本框架先从“把每天重复敲的命令变成一条短命令”开始就够了。我自己建了一个~/bin目录把常用的脚本都放在这里然后在Shell的配置里把它加入PATH。每增加一条快捷命令只需要写一个几行的小脚本命名清晰、赋可执行权限就能开始用。积累到现在已经有两百多行自定义命令在里面了。举一个实际例子我经常需要查看某个服务是否在监听某个端口传统做法是分两步先用ps查进程再用ss或者netstat查端口。我把这个逻辑写进一个脚本名叫port执行port 8080就能同时看到进程和端口信息输出还带颜色高亮。这样的小工具单看省不了几分钟但每天省十几次几秒钟的切换积累一年下来非常可观。自动化脚本要“相信并复用”。写完之后如果偶尔出错修但不要因为一两次出错就放弃继续使用那相当于前期的投入全部浪费了。6.2 密码管理器的必要性与选择口令管理是工作里最容易被忽略但又非常关键的环节。很多人为了方便所有站点共用一个弱口令这是非常危险的习惯。我自己的做法是使用密码管理器保存每一个站点的独立强口令。目前主流的密码管理器有1Password和Bitwarden。1Password体验顺滑但收费Bitwarden有开源版本、功能完整且可以自托管。我的挑选逻辑是先看它是否支持多设备同步再看是否支持浏览器扩展与命令行调用。这两点满足之后剩下的额外功能意义不大。一个好用的密码管理器能让你的日常工作习惯产生很大变化不再“记住密码”而是“查询密码”不再为忘记密码焦虑只需信任一个主口令。主口令一定要设得足够强壮同时要确保自己能记住因为这把钥匙丢了谁也帮不了你。6.3 剪贴板工具与输入历史搜索这个比较冷门但实际使用频率很高。默认的剪贴板只会保留最后一次复制的内容当一个上午要来回复制十几个不同片段时就很痛苦。macOS上我使用PasteWindows上使用Ditto两者的核心功能都是剪贴板历史记录可以随时搜索、回贴之前复制过的内容。配合快捷键调用效率和体验都很流畅。手机端也可以配合输入法的剪贴板功能我用过微信输入法的剪贴板同步在电脑和手机之间共享复制内容处理多端协同的时候还是很方便的。7. 我的经验总结选工具的几个原则工具这个话题永远聊不完但我想分享自己沉淀下来的几条经验这些经验来自无数次试错和踩坑。第一少即是多。不要一次性安装几十个工具再慢慢挑而是从一两个核心场景出发找到最核心的那一两个工具用熟、用透。等遇到明确瓶颈再考虑引入新工具。第二重视“可迁移性”。选择工具时优先考虑跨平台、有开放格式的比如文本类工具强于私有格式工具。因为你不知道三年后你用什么操作系统但你的纯文本文件永远不会背叛你。第三配置要沉淀、要可复制。所以每配好一个环境就把配置放到dotfiles仓库里做一次记录。这相当于给自己的环境做了“版本管理”以后无论是换电脑、还是重装系统有了历史配置随时都能恢复。最后一个小技巧定期清理自己工具列表里的“僵尸工具”。一个工具如果连续一个月都没被打开过大概率说明它对你的工作没有实际价值卸载掉或者标记为“待评估”避免工具列表越来越臃肿。工具的核心是解决问题而不是用来收藏和焦虑。