VS Code高效工作流必看:字体、主题、图标配置全攻略

导读:想要提升开发效率和视觉体验?本文为你整理了 VS Code 最值得配置的几个关键设置: 资源管理器缩进与引导线设置,提升文件结构可读性 推荐使用 Fira Code 字体并启用连字符,让代码更清晰美观 精选三大主流主题:One Dark Pro、Dracula、GitHub 主题对比及安装方式 安装 Material Icon Theme 图标主题,增强文件类型识别度 通过这些简单但效果显著的设置,让你的 VS Code 更加个性化、高效化。 开始 VS Code是一个功能强大的编辑器,我们可以通过自定义设置,让它使用更加方便。 设置 提高“资源管理器”的可读性 让“资源管理器”中文件树更加清晰、有条理,可以通过下面的方法配置: 打开VS Code。 按Ctrl + Shift + P或者 Cmd + Shift + P打开命令面板。 输入Preferences: Open Settings (JSON),然后选择首选项: 打开设置(JSON)。 在打开的settings.json文件中,添加下面的代码: { "workbench.tree.indent": 15, "workbench.tree.renderIndentGuides": "always", "workbench.colorCustomizations": { "tree.indentGuidesStroke": "#05ef3c" } } 设置字体 推荐使用Fira Code字体,这款字体因其编程连字符而改变了开发者的游戏规则,它能让你的代码更易读、更美观。请按照以下步骤安装: 下载Fira Code字体:Fira Code GitHub page 安装字体,打开下载的.ttf文件,点击“安装字体”。 设置字体,在打开的settings.json文件中,添加下面的代码: { "editor.fontFamily": "Fira Code", "editor.fontLigatures": true } ...

2025年04月06日 · 1 分钟 · 93 字 · Silas

我又换回kitty终端了(kitty终端美化配置)

导读:在尝试了 macOS 原生 Terminal 后,我最终还是选择换回 Kitty 终端。本文不仅记录了换回 Kitty 的原因,还详细整理了一套完整的终端美化与配置流程,包括: Kitty 安装与基础配置 主题切换与字体设置 分屏快捷键配置 oh-my-zsh 命令行美化 实用扩展功能介绍(如 icat, diff, ssh) 如果你也希望拥有一个高性能、高颜值、高效率的终端环境,这篇文章值得收藏! 起因 先前我一直打算使用系统自带的终端 Terminal,觉得自己对终端的使用需求不多,所以勉强能用,并且还写了一篇关于 美化macos终端原生命令行terminal的文章。然而,最严重的问题是:在黑暗模式下命令行看不清楚。我尝试将以前的美化效果去掉,但显示问题依然存在,令我非常困扰。尽管可以退回使用那个丑陋的原始命令行,但我不愿向这种困境妥协。于是,我又找回了我的 Kitty 终端。 Kitty终端 Kitty 是一个跨平台、特性丰富的基于 GPU 的终端模拟器。使用线程渲染将输入延迟最小化,以及 GPU 渲染技术,使得肉眼可见的速度提升,以及降低系统负载和平滑的滚动效果。它是一个轻量级的模拟器,可以通过脚本、shell 提示符和 SSH 进行控制。 特点:GPU加速,支持分屏、远程控制等高级功能。 美观:支持多种配色方案和字体设置,界面简洁。 小巧:性能优越,启动速度快。 网址:Kitty 安装 我的是Mac电脑,所以安装方法和配置都是基于苹果电脑的。如果windows,请参考:Kitty官网,有详细的说明(英文的)。 使用二进制安装 curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin Homebrew brew install kitty 基础配置 修改配置的方法 安装完成后,kitty的默认配置路径是:~/.config/kitty/kitty.conf,如果没有则新建配置文件。 [!WARN] 注意 修改配置后,需要重新启动 Kitty 才会生效! 这个的唯一的缺点就是所有配置都需要在配置文件中自己写。 比如这样: 当然在官方文档中写的非常详细,能给实现控制的内容也非常多,有兴趣的可以看:kitty.conf - kitty 选择主题 使用命令: kitty +kitten themes ...

2025年04月06日 · 1 分钟 · 193 字 · Silas

6款超实用的UI设计工具推荐,快速提升前端页面开发效率

前言 在前端开发中,设计出一个好看的UI往往是最让人头疼的事。作为一个不擅长设计的开发者,我总是希望找到一些便捷又高效的工具来帮助完成这些工作。于是,我花时间找到了几款超好用的UI设计工具,它们不仅能帮助你轻松搞定配色、排版、特效,还能让你事半功倍,省下大量时间!希望这些工具对你也有帮助! 工具 Realtime Colors 这是一款非常强大的颜色工具,可以让你生成带有深色或浅色背景的随机配色方案,并同时在工具上测试这些配色方案,同时可以测试字体、颜色和深/浅色模式。 地址:https://www.realtimecolors.com fffuel fffuel是一个工具集合,它拥有三十多个工具,包括颜色工具、字体工具、图像工具等,可以帮助你快速生成设计资源。 你可以生成 SVG Blob、SVG 线条、动画 3D 图形、重复 SVG 图形、SVG 旋转器、水彩背景、等距设计、SVG 箭头等。 地址:https://fffuel.co Aceternity UI Aceternity UI是一个UI组件库,你可以直接复制使用当中的代码,能够实现很多非常漂亮的效果,比如:3D画廊、轮播图、极光背景、流星背景、打字机效果、无限滚动卡片等。 地址:https://ui.aceternity.com/ Stack Sorted Stack Sorted是一个创意效果库,里面有很多非常酷炫的效果,其中包含了按钮、卡片、标题、布局等各种效果,你可以直接复制使用当中的代码,来实现这些效果,不过使用还需需要一些访问网站的技巧。 地址:https://stacksorted.com/ Tints and Shade Generator 色调生成器,输入一个十六进制颜色,就可以得到当前颜色的所有色调和色泽。 地址:https://maketintsandshades.com/ Glassmorphism CSS Generator 玻璃效果生成器,可以生成玻璃效果的CSS代码,支持自定义颜色、阴影、模糊等效果。 地址:https://hype4.academy/tools/glassmorphism-generator 总结 总的来说,这些工具简直是设计小白的福音!从配色、特效到各种创意设计元素,它们大大提升了我的工作效率。如果你也有一些好用的设计工具或者建议,欢迎在评论区和我分享!让我们一起探索更多让UI设计变得简单有趣的工具吧!

2025年04月06日 · 1 分钟 · 43 字 · Silas

使用Go语言实现插件化开发:构建可扩展的高内聚低耦合系统架构

原因 近期,我正在筹备一个开源项目,该项目是一个能快速生成后台代码的工具,采用了Hertz+Gorm+Gen+Vben Admin技术栈。在开发过程中,我始终在思考如何实现框架与后续业务的分离,以使快速生成的业务代码更加清晰,且业务的修改不会对框架产生影响。这样也能更好地迭代这个开源项目,并在使用过程中不断完善。 在凝视着vscode,陷入沉思时,我突然灵光一闪,想到了插件化。目前许多工具都正在转变为插件化,它们在提供最基础的功能的同时,也允许用户以自己的方式增强这个工具。 开始 Go语言在插件化方面非常的方便,只需要将插件路由注册到主路由上就可以使用了。接下来我将实现过程记录一下: 一、在框架中加入插件功能 1、先创建一个Plugin 插件模式接口化文件 package plugin import "github.com/cloudwego/hertz/pkg/route" const ( OnlyFuncName = "Plugin" ) // Plugin 插件模式接口化 type Plugin interface { // Register 注册路由 Register(group *route.RouterGroup) // RouterPath 用户返回注册路由 RouterPath() string } 2、然后批量初始化插件路由 package initialize import ( "fmt" …… ) //插件初始化,注册上面创建的接口文件 func PluginInit(group *route.RouterGroup, Plugin ...plugin.Plugin) { for i := range Plugin { PluginGroup := group.Group(Plugin[i].RouterPath()) Plugin[i].Register(PluginGroup) } } // 安装插件 func InstallPlugin(Router *server.Hertz) { PublicGroup := Router.Group("") fmt.Println("无鉴权插件安装==》", PublicGroup) PrivateGroup := Router.Group("",middleware.JwtMiddleware.MiddlewareFunc()) fmt.Println("鉴权插件安装==》", PrivateGroup) …… } 3、在主路由上调用上面的函数 package initialize import ( "context" "github.com/cloudwego/hertz/pkg/app" "github.com/cloudwego/hertz/pkg/app/server" ) func Routers() *server.Hertz { Router := server.Default() InstallPlugin(Router) // 安装插件 //下面继续写主框架中的路由地址 …… return Router } 4、在man中调用路由 ...

2025年04月06日 · 2 分钟 · 311 字 · Silas

在H5和UniApp项目中实现微信扫码登录的完整解决方案

前言 在一个项目中需要增加“微信扫码登录”,以前没有弄过这个功能,然后网上的各种资源都非常的乱,导致走了很多的弯路,现在将可行方案记录一下。 相关的文档地址:微信登录功能 / 网站应用微信登录开发指南 环境 前端: 使用uniapp-vue框架,是做的H5和小程序多端开发,这里只是说的H5部分。 后端: go 开始 先明白流程是什么样的: 微信扫码相关设置 申请“微信开发者平台”的AppID和AppSecret 在“微信开发者平台”–>“管理中心”–>“网站应用”中配置回调地址,回调地址只需要配置域名就可以,不需要http或者https开头!!,例如:www.abc.com。 获取扫码二维码 在需要显示二维码的页面直接执行下面代码: function setWxerwma() { const s = document.createElement('script') s.type = 'text/javascript' s.src = 'https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js' const wxElement = document.body.appendChild(s) wxElement.onload = function () { const obj = new WxLogin({ self_redirect: false, id: 'weixinLogin', // 需要显示的容器id appid: 'xxxxxx', // 微信开放平台appid wx******* scope: 'snsapi_login', // 网页默认即可 redirect_uri: encodeURIComponent('xxxxxxxxxxxxxx'), // 授权成功后回调的url state: Math.ceil(Math.random() * 1000), // 可设置为简单的随机数加session用来校验 style: 'black', // 提供"black"、"white"可选。二维码的样式 href: 'data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7bWFyZ2luLXRvcDowO30KLmltcG93ZXJCb3ggLnRpdGxlIHtkaXNwbGF5OiBub25lO30=', // 外部css文件url,需要https }) } } href:样式的设置,如果是外部css,则需要https,直接写样式就需要转换成base64,Base64编码转换工具,Base64加密解密,追加在“data:text/css;base64,”后面。 样式例如: .impowerBox .qrcode {width: 200px;} .impowerBox .title {display: none;} .impowerBox .info {width: 200px;} .status_icon {display: none} .impowerBox .status {text-align: center;} redirect_uri:回调地址,如果与当前网站域名不同就会在扫码后出现跨域错误,所以最好是给一个当前网站的单独页面触发回调接口。例如:https://a.abc.com/login 回调页面 直接代码。因为是中间页面,所以不用设计,只是闪跳一下。 <template> <div>处理登录中……</div> </template> <script> import { wxLoginCallback, getUserInfo } from '@/api/user.ts'; export default { onLoad () { // 解析 URL 中的 code 参数 const query = this.$route.query; const code = query.code; if (code) { this.handleWXLoginCallback(code); // 处理回调 } }, methods: { handleWXLoginCallback (code) { wxLoginCallback(code).then(async (res) => { if (res.code === 0) { uni.setStorageSync('token', res.data.token); uni.redirectTo({ url: '/pages/index/index' }); } else { uni.redirectTo({ url: '/pages/index/index?openSign=1' }); uni.setStorageSync('unionId', res.msg); } }); }, } } </script> 我当前实现的逻辑为: ...

2025年04月05日 · 2 分钟 · 315 字 · Silas