Mac系统常用设置(针对windows用户打造)
前言
最近购入了一台mac设备, 正好做个配置, 并记录一些小众且个性的刚需配置(过于大众或简单的没有记录的必要)。
Mac如何为cli工具或特定命令设置开机自启动
使用 Automator
如果想图形化设置脚本启动,可以用 Automator 创建开机任务。
1. 创建 Automator 应用
打开
应用程序
>Automator
,选择应用程序
。在左侧选择
实用工具
>运行 Shell 脚本
。输入命令,例如:
1
shell命令, 就是写你需要的bash脚本。
保存为
名称-start.app
(如保存到~/Applications
)。
2. 添加到登录项
- 系统设置 > 通用 > 登录项,点击
+
,添加刚创建的名称-start.app
。
3. 测试
- 重启 Mac,确认效果。
Mac中如何安装未签名的程序
用来解决第三方未签名软件安装后出现的"应用名"已损坏,无法打开。你应该将它移到废纸篓。
现象。
在终端中输入
xattr -cr
,(这里要注意后面有个空格)。将提示已损坏,无法打开的程序图标拖到命令栏中。
最终命令格式示例:
xattr -cr /Applications/XXX.app
执行此命令后, 重新前往应用程序目录中打开对应的应用即可。
Mac中如何让键盘的反应更灵敏(主要是让vim操作体验更丝滑)
为 VS Code 禁用“按住键重复”
在终端中运行以下命令,针对 VS Code 禁用该功能:1
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false
说明:这只会影响 VS Code,不影响系统中其他应用的按键行为。
生效:运行命令后,关闭并重新打开 VS Code。
为 VS Code Insiders 禁用
如果你使用的是 VS Code Insiders 版本(不涉及可跳过, 不清楚的话就也执行了–不要跳过–执行它不会产生副作用),运行以下命令:
1
defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false
全局禁用“按住键重复”(可选, 不推荐)
如果你希望在整个系统范围内禁用该功能(影响所有应用),运行:
1
defaults write -g ApplePressAndHoldEnabled -bool false
注意:这会影响所有应用的按键行为,可能不适合需要输入特殊字符的场景。
生效:需要注销并重新登录(或重启系统)。
调整键盘重复速度(可选, 推荐, 重要)
禁用“按住键重复”后,你可能还想调整键重复速度和延迟,以优化 Vim 移动的体验:
通过系统设置提供的ui界面调整:
- 打开 系统设置 > 键盘:
- 将“按键重复”(Key Repeat)调到最快。
- 将“重复前延迟”(Delay Until Repeat)调到最短。
生效:必须重启mac后才能看到实际的效果
如果系统设置的ui界面调整到极限后仍无法满足你的需求, 则可通过命令行设置(能突破ui界面的调整限度):
1
2defaults write -g KeyRepeat -int 2 # 键重复速度(越小越快,ui界面默认的最小为 2, 这里可以调整到更小, 比如1, 但我仍是推荐使用2, 因为过快会造成视觉体验的跳跃感)
defaults write -g InitialKeyRepeat -int 12 # 重复前延迟(越小越短,ui界面默认最小为 15, 我推荐12, 而且这里可以调整到更小, 比如10或更小的数字, 但我仍是推荐使用12, 因为过短会增加误触发生的概率)当然, 我的键音值是基于我的硬件外设推荐的(普通的正常键程的机械键盘), 如果您是短键程或长键程的键盘, 则此建议可能不适合您(因手里只有一把键盘故未作验证, 也有可能我推荐的值就是最终值), 不论如何, 您最好自行摸索出适合您自身习惯的值。
生效:必须重启mac后才能看到实际的效果
重启mac后, 通过中文打字体验下误触率是否可接受, 然后通过vim体验键盘速度是否跟手, 是否符合预期。
当然, 也可通过命令查看当前对应的重复速度和延迟的值:1
2defaults read -g KeyRepeat
defaults read -g InitialKeyRepeat返回结果是单独的数值(数字)。
Mac中使用Ctrl+XCV快捷键进行剪切复制粘贴

其它快捷键的配置提示:
- 我的键盘是常用的win布局的键盘, 键位按照mac专用键盘的键位做了调整, 也就是说
ctrl
、win
、alt
键对应mac标准键盘中除fn
键外的同位置按键。(这里要提一嘴, 以mac的键位位置为准,alt
键的位置(也就是command键)大多数情况下对应win下ctrl
键的作用, 比如最常见的剪切复制粘贴都是默认command+x/c/v
, 我不切换他们位置的原因有很多, 包括但不限于:- mac中, vscode无法绑定**command+`**这个快捷键, 虽然在大多数软件中这都没问题, 但vscode中这个bug已经持续很久了, 似乎不会被修复。
- mac中,
command+tab
是唯一的在多个应用间切换焦点的快捷键, 不能被自定义(除非借助其它需要底层系统权限的按键映射和绑定工具–我不想用), 而这也符合我在win下使用alt+tab
来切换应用焦点的习惯, 因此其必须保留在alt键的位置。 - mac中, 可以通过配置
cortrol+x/c/v
的方式来模拟win键位的剪切复制粘贴。(不过这种方式的小缺点是, 在某些软件中, 可能存在不可用的现象, 比如edge浏览器中, 就偶尔会遇到无法正常使用的问题)(而且需要注意的时, 在safire浏览器中, 以及mac系统中的其它软件内, 复制的实际功能 和 win中的复制 是不同的, 而拷贝才是与之等价的功能, 因此需要在图中介绍的命令外, 再配置一个拷贝的命令, 否则是达不到效果的)
- 对于win键盘特有的del键(一般在ins下方), 不支持设置快捷键(比如想将其设置成”移到废纸篓”的快捷键以与win保持一致)。对应”移到废纸篓”之类的功能, Mac中有自带的快捷键
alt+backspace
(以win按键位置和对应的按键名称为准)。 - 由于mac系统下各个软件的自由快捷键与全局快捷键时长存在分歧, 会造成常用的全局快捷键偶尔无法使用的bug, 这是正常现象(很难解决), 遇到了学会自适应就好。(比如使用rime输入法中配置的
ctrl+空格
上屏的逻辑, 在vscode中正常使用, 而在chrome浏览器中无法正常使用)
Mac中配置输入法的幂等切换快捷键
在Mac中, 输入法切换的快捷键只能为”切换下一个/上一个输入法”做设置, 无法实现为特定输入法配置。
由于无法直接通过系统设置定义, 为此我专门开了一个仓库用于解决此问题:switch-input-method
还因此发现了mac系统底层的bug, 顺带给解决了一下->见ims-mac项目。
安装xcode
直接在应用商店中安装即可。mac方便的一点就是xcode安装时会将常用的开发套件给预制, 这就省的用户一个一个手动搜索安装了。比如git, curl…等。
mac终端的配置
入手mac后, 发现其默认的终端是zsh终端, 与我日常用的bash终端不同, 他的字体颜色和众多linux的默认终端不同。 特别是ls命令时, 我习惯了可执行文件是绿色, 但mac中的不同, 因此这一点需要设置。已经很多命令是没有预先安装完善的(比如xcode中自带的git)。
颜色配置为符合Linux的习惯
我们需要打开vim ~/.zshrc
, 然后配置终端颜色可见, 并将颜色配置成与Linux终端中的常用颜色。
1 | export CLICOLOR=1 |
需要注意的是
- 似乎在vscode的默认终端中, 不存在颜色被禁用以及显示的颜色不是Linux中常用颜色的情况。(不确定哈, 下次换新mac时注意下是否是这样的)
- 似乎配置.zshrc后, 使用bash终端也会默认延用相关配置(但这仅限于颜色相关的配置, 其它的配置还是要在.zshrc与.bashrc中分别配置的)。
git的命令补全
如果git是通过xcode下载过程中附带安装的, 则需要手动配置补全功能。
对于 Bash 用户
- 检查 Git 补全脚本:
- macOS 自带的 Git 通常将补全脚本放在
/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
- 如果使用 Homebrew 安装的 Git,脚本可能在
/usr/local/etc/bash_completion.d/git-completion.bash
对于zsh用户的相关补全脚本存放路径, 可参考以上。
接下来, 就是在相关配置文件中引用脚本路径就好了。
zshrc ->
vim ~/.zshrc
1
2
3# 加载 Git 补全
autoload -Uz compinit && compinit
fpath=(/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.zsh $fpath)bashrc ->
vim ~/.bash_profile
1
2
3if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then
. /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
fi