Win 转 MacBook Pro 踩坑指南

前言

Window 和 macOS 系统的差异还是很大的,我从 Thinkpad 转用 M1 的 Macbook pro 已经一年了,几乎没有任何不适应,整体感受那是真的牛👃,速度和续航惊艳到我了,同时开启 6个 vscode 加几十个浏览器标签、postman、mysql、以及各种办公软件的情况下还是非常流畅,这还是16g 内存版本,若是32g 内存估计会更强;

不过也有一些小问题如电池耗损有点快,刚满一年电池健康掉到 82 了,还好买了 appleCare+, 3年内掉到 80 可以去换电池和键盘,倒也不算啥问题了;

还有就是 硬盘 swap 写入过多的问题,我的这篇文章有详细提到,昨晚,我体会了没有 pnpm 的痛。

在这里插入图片描述

正文

这一年的使用期间我记录了遇到的困惑和最后的解决方案,顺便整理分享给大家,若你是一名刚切换到 macOS 阵营的程序员,那么这篇文章肯定会对你有帮助。

关于 /usr/local 目录

macOS 和 Linux 系统比较接近,其软件安装目录是也是有讲究的,理解这一点,对系统管理是很有帮助的:

  1. /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。
  2. /usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
  3. /opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接 rm -rf 掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。

打开 /usr/local 所在目录的方法

  1. macOS 系统的 /usr/local 目录默认在 Finder 下是隐藏的,如果需要到 /usr/local,可以打开 Finder,然后使用 command + shift + G,在弹出的目录中填写 /usr/local就可以了,也可以在 Finder 上右键点击前往文件夹(相当于 command + shift + G)。

在这里插入图片描述

  1. 还有一种查看方式就是在命令行(终端)中:cd /usr/local
    然后再使用 ls 就可以查看下面安装的东西了。

在这里插入图片描述

通过手动安装的软件一般默认都会放在 /usr/local 里面,可以通过全局访问。

在这里插入图片描述
在这里插入图片描述

macOS 下配置环境变量

macOS 的环境变量一般配置在 .bash_profile 或者 .zshrc 文件里,所以只要将下载的安装包路径写入 .bash_profile 或者 .zshrc 并完成保存就好了。

macOS 下 .bash_profile 和 .zshrc 两者之间的区别

.bash_profile 中修改环境变量只对当前窗口有效,当关闭窗口后再使用可能会报 zsh: command not found: XXX; 而且需要 source ~/.bash_profile 才能使用;

.zshrc 则相当于 windows 的开机启动的环境变量, 永久有效。

所以建议尽量只使用 .zshrc,然后加一行 source .bash_profile 以兼容不小心加入 .bash_profile 文件的变量。

编辑 .bash_profile 文件

  1. 打开终端
  2. vi ~/.bash_profile 或者 open ~/.bash_profile 打开文件
  3. 修改后 通过 :wq 保存
  4. source ~/.bash_profile 生效

在这里插入图片描述

编辑 .zshrc 文件

只有当在 Mac OS 上使用 zsh shell 时,才会获得 ~/.zshrc 文件,如果你不确定自己使用的是哪个 shell,请打开终端并发出以下命令:

echo $SHELL

若结果显示为 /bin/zsh, 说明你在 macOS 上使用的是 zsh shell

  1. open ~/.zshrc 或者 vim ~/.zshrc
  2. 在打开的 .zshrc 文件窗口中进行更改
  3. 通过 :wq 保存
  4. source ~/.zshrc

Homebrew 环境的安装

Homebrew 是一个包管理器,用来在 macOS 安装 Linux 工具包,终端里执行下面指令,按照提示一步步安装就好了

安装指令:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"卸载指令(如果需要):
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"brew update // 升级版本
brew -v //查看版本

在这里插入图片描述
在这里插入图片描述

homebrew 和 npm 的区别?

  1. homebrew,可以理解成 macOS 的软件管理工具,粗俗点说就是 mac 界的 qq 软件助手之类的东西。所以通过 brew,安装什么 chrome浏览器啊、atom 编辑器之类的可视化工具也是可以的。

  2. npm,是 node.js 界的程序/模块管理工具,也就是说 npm 只管理那些服务于 JavaScript 社区的程序。而且跨平台,windows 和 macOS,以及其他类 unix 操作系统都可以用。

  3. npm是用于 NodeJS 语言的包管理器,NodeJS 是跨平台的;而 homebrew 是用于OS X系统的包管理器,类似Windows的各种软件管理工具(所谓XX软件市场之类)和Linux的apt-get/yum/pacman等。

  4. npm 是 node.js 的包管理工具,只要有 node 环境,不管是 windows, macOS, 还是 linux 都可以使用 npm 下载模块,brew 是 mac 的包管理工具,只有 macOS 上才有。

引用链接:https://www.jianshu.com/p/131dda5e51fe

npm部分命令如下:

npm -l    用于查看各个命令的简单用法(所以下面的可以用这个命令来查看)
npm init    用来初始化生成一个新的 package.json文件。
它会向用户提问一系列问题,如果你觉得不用修改默认配置,一路回车就可以了。
npm -h 或 npm help    查看npm命令的帮助信息
npm ls 或 npm list    查看npm已安装的包信息
npm -v 或 npm --version    查看npm版本信息
npm install npm -g   npm更新自身
npm info <pkg> version    查看某个模块最新发布版本信息,如npm info underscore version
npm search <keyword>    查找与keyword匹配的模块信息
npm view <pkg> version    查看一个包的最新发布版本
npm i 或 npm install    npm安装当前目录package.json里面的所有包,
下面的i同样可以用install代替,当卸载时,i用uninstall代替
npm update <pkg> [-g]  更新指定模块,有-g表示全局
npm i <pkg> [-g]    安装指定模块,有-g表示全局
npm i <pkg>@version [-g]   安装指定版本的模块,有-g表示全局
npm i <pkg> --save    安装包的同时自动更新package.json的依赖
npm i <pkg> --save-dev    安装包的同时自动更新package.json的开发依赖
npm i <pkg> --save-optional    安装包的同时自动更新package.json的可选版本依赖
npm i <pkg> --save-exact   安装包并写入确切版本依赖,而不是一个可选的版本范围.

homebrew部分命令如下:

brew install <pkg>    安装软件包
brew uninstall <pkg>    卸载软件包
brew search <keyword>    查询软件包
brew list 或brew ls    列出已安装的软件包
brew update    更新brew
brew home    用浏览器打开brew的官方网站
brew info    显示软件信息
brew deps    显示包依赖

Node 多版本环境的安装

建议通过 n 来控制安装多个 node 环境以应对可能不同的项目使用场景

先安装 n:

brew install nn -V // 若看到具体打版本号,则说明安装成功

基本使用:在终端直接输入 n, 就可以管理各个版本的node了

n
  1. 使用上下箭头选择对应的版本
  2. 选择好版本之后,按回车键切换当前node版本
  3. 选择好版本之后,敲[d]键删除对应版本的node
  4. 输入[q]退出管理界面

Git 环境的安装

写代码肯定是需要 Git 环境的,mac 下安装 Git 用 brew 就好了,不过有可能你的 mac 在安装 xcode 等工具的时候就已经安装好了 Git,所以先验证下

git -v // 若显示版本号则已经安装过了 Gitbrew install git // 安装 gitbrew upgrade git // 更新 gitbrew uninstall git // 卸载 git

安装完成后给 Git 配置全局环境变量,以方便使用, 如果是通过鼠标点击安装包/UI界面方式 安装,则它会自动配置环境变量。

whereis git // 可用来查看安装位置

git 的详细操作指南可查看这篇一份工作 6 年前端的 Git 备忘录

nrm 的安装与使用

nrm 是一个用来管理和快速切换私人 npm 配置的工具,可用来随意的切换 npm 镜像源,比如公司内网镜像,淘宝镜像等,建议全局安装;

nrm 是 node模块,所以通过 npm 来安装,它是一个命令行模块,需要使用–global参数进行全局安装,命令如下:

npm install nrm -g --save 全局安装nrm ls 查看默认配置,这里会列出所有的镜像nrm current 查看当前使用的是哪个源nrm use <源名> 切换到其它源,如 nrm use cnpmnrm add 命令可添加公司私有 npm 源,如 http://baozun.com(随便写的),起个别名叫 baobao,nrm add baobao http://baozun.com
此时再执行 nrm ls,发现 baobao 已添加成功nrm test npm 测速nrm del baobao 删除源配置

同步 vscode 环境的配置

以前在多个设备上同步自己的 vscode 环境如插件什么的是比较麻烦的,需要用到 settings sync 这样的插件,不过随着 vscode 官方的更新,现在vscode 已经直接支持了,仅仅需要简单到配置。

  1. 点击VSCode左下方的齿轮,开启Settings Sync功能
  2. 会有弹窗让你选择下面 5 个你想同步的内容,Settings(配置)、Keyboard Shortcuts(快捷键)、Extensions(插件)、User Snippets(用户代码片段)、UI State(界面状态),建议全部钩上就好。
  3. 点击 Sign in & Turn on 按钮,选择微软或者 github 账号进行登录,登陆成功之后,Settings Sync就是开启状态了,VSCode会在后台自动同步你刚才所选的内容。

推荐几个 vscode 常用的插件

  1. Webstorm IntelliJ Darcula Theme (主题插件,提供和 Webstorm一样的字体和主题)
  2. 小霸王(通过类似 webview 形式嵌套提供各种小游戏,如魂斗罗、坦克大战等)
  3. 韭菜盒子(VSCode 里也可以看股票 & 基金 & 期货实时数据,做最好用的投资插件。)
  4. Live Host (快速编辑 host 文件、每日获取最佳 github ip 解决 DNS 污染问题。)
  5. Live Server(快速启动一个端口服务)
  6. git blame(可以快速的查看某一行最近的一次修改是谁、什么时候、哪次提交修改的)
  7. git graph(可以进行版本管理,比如pull、push、修改比较、log、merge)
  8. gitlens (在vscode中使用git必备插件,功能非常强大)
  9. filesize(在底部显示当前文件到大小)

mac 修改 host 文件的方法

第一种方案:

修改 host 文件一般用于开发调试跨域问题,或者因为域名污染导致网站无法访问;
finder 中 command + shift + G 打开跳转弹窗,输入 /etc/hosts 就会跳转到 hosts 文件的位置了;

不过建议还是在终端中操作;

vim /etc/hosts

编辑后 :wq 保存生效。

在这里插入图片描述

在这里插入图片描述

第二种方案:

使用我写的 vscode 插件, LiveHost 可快速的编辑 hosts 文件,并且可更方便到维护和管理。

macOS 必备的几个软件

  1. postman (开发者必备的接口调试工具)
  2. charles mac (平台必备️的抓包工具)
  3. gif brewery3 (gif 动图制作)
  4. clashX (科学上网必备)
  5. iStat Menus (监控设备运行状况)

Mac 免费应用下载站点

  1. https://macwk.com 我认为最好用的免费应用下载站点(可惜最近关站了)
  2. https://xclient.info 跟 macwk 类似
  3. https://appstorrent.ru 毛子的

总结

也许是天意,刚换 Mac 没俩月,我的 Thinkpad T450s 就开不了机了,键盘灯亮3秒就关闭了,屏幕一直黑屏,有相关经验的朋友请不吝赐教;

这回想偶尔玩个红警也做不到了,也罢,那就把时间用来学习吧

以上就是一个使用 Macbook Pro 不久的新用户这一年的使用经验,愿对你有所帮助吧。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32550.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp uniCloud引发的血案(switchTab: Missing required args: “url“)!!!!!!!!!!

此文章懒得排版了&#xff0c;为了找出这个bug, 星期六的晚上我从9点查到0点多&#xff0c;此时我心中一万个草泥马在崩腾&#xff0c;超级想骂人&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; uniCloud 不想…

数据结构和算法--仅仅用于理解里面的术语,入门级别

数据结构和算法 预先知识&#xff1a;java 黑马前29节 cmd命令&#xff1a; 文件夹路径不区分大小写 E: dir:查看所有文件 cd 目录 :进入 cd… 返回上一级 cd 目录1\目录2 cd\ 回到根目录 cls 清屏 exit 退出 打开文件夹必须用cd 查找&#xff0c;但是文件不用&am…

【设计模式】通过访问者模式实现分离算法与对象结构

概述 定义&#xff1a;封装一些作用于某种数据结构中的各元素的操作(将数据结构于元素进行分离)&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者&#xff08;Visitor&#xff09;角色&#xff…

低版本 Linux 系统通过二进制方式升级部署高版本 Docker

​ 一、背景&#xff1a; 在一些 Linux 系统中&#xff0c;由于系统自带的软件源版本较低&#xff0c;或者因网络、权限等限制无法直接通过源文件来升级到最新版本的 Docker。这种情况下&#xff0c;采用二进制方式升级部署高版本 Docker 就成为一种有效的解决方案。下面将详…

SpringAI+Ollama+DeepSeek本地大模型调用

前言 大型语言模型&#xff08;LLM&#xff09;在自然语言处理领域取得了突破性进展&#xff0c;但其庞大的计算资源需求和高昂的调用成本&#xff0c;使得许多开发者望而却步。如何高效、便捷地调用大模型&#xff0c;并将其应用于实际场景&#xff0c;成为了亟待解决的问题。…

【大模型科普】AIGC技术发展与应用实践(一文读懂AIGC)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

数据结构与算法:归并排序

目录 归并排序的基本思想 归并排序的特性总结 代码 归并排序的非递归版 归并排序的基本思想 归并排序是建立在归并操作上的一种有效的排序算法。改算法是采用分治法的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列…

阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台

阿里云操作系统控制台评测&#xff1a;国产AI运维 一站式运维管理平台 引言 随着云计算技术的飞速发展&#xff0c;企业在云端的运维管理面临更高的要求。阿里云操作系统控制台作为一款集运维管理、智能助手和系统诊断等多功能于一体的工具&#xff0c;正逐步成为企业高效管理…

爬虫案例十三js逆向模拟登录中大网校

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、网站分析二、代码 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; js 逆向模拟登录中大网校 提示&#xff1a;以下是本篇文章正文内…

sql靶场--布尔盲注(第八关)保姆级教程

目录 布尔盲注&#xff08;第八关&#xff09; 1.判断 2.确认布尔盲注 3.手工尝试布尔盲注 表名字符 表数 表名长度 表字符 字段数 字段名长度 字段字符 4.脚本布尔盲注注入 布尔盲注&#xff08;第八关&#xff09; 1.判断 布尔盲注了&#xff0c;这种页面只会有…

【C++入门】变量和基本类型

目录 一、 基本内置类型 1.1. 整型&#xff08;Integer Types&#xff09; 1.2. 浮点型&#xff08;Floating-point Types&#xff09; 1.3. 字符型&#xff08;Character Type&#xff09; 1.4. 布尔型&#xff08;Boolean Type&#xff09; 1.5. 示例代码 二、变量声明…

JVM内存结构笔记03-方法区

文章目录 方法区1.定义2.组成方法区与永久代和元空间的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 3.方法区常用参数4.运行时常量池常量池运行时常量池定义查看class文件 方法区 1.定义 方法区属于是 JVM 运行时数据区域的一块逻辑区域&#xff0c;是各个…

数据库语句

环境变量path下的目录是系统目录。 #include <iostream> #include <mysql.h> #pragma comment(lib,"libmysql.lib")//链接libmysql.dll动态库的中间桥 // MYSQL* conn;//数据库句柄。后面还有网络句柄&#xff08;用来网络收发数据&#xff09; bool co…

Word 小黑第15套

对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 &#xff08;脚注默认位于底部 &#xff09;在脚注插入文档属性&#xff1a; -插入 -文档部件 -域 类别选择文档信息&#xff0c;域…

【从零开始学习计算机科学】编译原理(七)运行时刻环境

【从零开始学习计算机科学】编译原理(七)运行时刻环境 运行时刻环境存储组织空间的栈式分配活动树活动记录和控制栈简单栈式存贮分配C语言的过程调用和过程返回时的存贮管理堆式存储分配堆式存储分配的功能垃圾回收基于跟踪的垃圾回收短停顿垃圾回收运行时刻环境 存储组织 …

一维下料之 *贪心算法* —— CAD c#二次开发

一维下料之贪心算法&#xff0c;需求如下 已知条件 我们有一批长度为 380 米 的原材料&#xff08;例如钢管、木材等&#xff09;。 切割需求 需要从这些原材料中切割出以下长度的小段&#xff1a;42 米&#xff1a;需要 13 段 140米&#xff1a;需要 23 段 130 米&#xff1a…

刷leetcode hot100--动态规划3.12

第一题乘积max子数组[1h] emmmm感觉看不懂题解 线性dp【计划学一下acwing&#xff0c;挨个做一下】 线性动态规划 相似题解析 最长上升子序列 最大上升子序列和 最大连续子段和 乘积最大子数组_哔哩哔哩_bilibili 比较奇怪的就是有正负数和0&#xff0c;如何处理&#xff1f…

Linux安装升级docker

Linux 安装升级docker Linux 安装升级docker背景升级停止docker服务备份原docker数据目录移除旧版本docker安装docker ce恢复数据目录启动docker参考 安装找到docker官网找到docker文档删除旧版本docker配置docker yum源参考官网继续安装docker设置开机自启配置加速测试 Linux …

pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现

目录 背景pycharm安装配置代码实现创建本地视频配置 和 推流配置视频帧的处理和检测框绘制主要流程遇到的一些问题 背景 首先这个基于完整安装配置了anaconda和yolo11的环境&#xff0c;如果需要配置开始的话&#xff0c;先看下专栏里另一个文章。 这次的目的是实现拉取视频流…

LLM:了解大语言模型

大型语言模型&#xff08;Large language models&#xff0c;LLMs&#xff09;&#xff0c;如 OpenAI 的 ChatGPT &#xff0c;或者 DeepSeek 等&#xff0c;是过去几年中开发出来的深度神经网络模型。它们为自然语言处理&#xff08;natural language processing&#xff0c;N…