Insights·2026-08-15

defaults write — 让 Mac 不再抢按键、不再拖慢程序坞

Mac 的隐藏设置不在“系统设置”里,而在终端的 defaults write。用 Command+Space 打开聚焦,输入 terminal 即可。按键重复和自动纠正需要重新登录;程序坞延迟、窗口动画、截图和访达路径在 killall 之后立刻生效。只有长期挂着智能体的 Mac 才应执行 sudo pmset -a disablesleep 1。

터미널에 키 반복·Dock 지연·Finder 경로·killall·pmset 명령을 적고, 로그아웃 후 적용과 killall 즉시를 나란히 비교한 요약 도식

如何在终端里输入 defaults write

这些命令来自 YouTube 频道「코드깎는노인」的视频《macOS 隐藏作弊码 15 则》。视频面向刚为氛围编程买下 Mac 的人,把出厂默认里碍事的地方一条条改掉。下文按入门读者拆开同一批命令,只把截图路径改成你自己的主目录。

终端不是开发者专用软件。它是一个窗口:你输入一行,按下回车,Mac 就执行那一行。打开方式有两种。点屏幕右上角的放大镜,或同时按 Command 和空格。这个搜索窗叫聚焦。输入 terminal,打开黑色图标。

defaults 是每个 App 保存的设置。write 表示写入其中一个值。-g 作用于整台 Mac,而不是某一个 App。写成 com.apple.dock 就只改程序坞。-bool false 是关,-bool true 是开,-int 1 是整数 1,-float 0 是小数 0。

整行复制,贴进终端,按回车。成功时常常没有任何提示。隐藏设置本来就不爱回话。出现红字说明这一行失败了,重打即可。

按键重复和自动文本纠正

在 Windows 上长按 A 会连续打出 a。Mac 默认不是这样。它会弹出特殊字符选择窗。需要带口音的字母时很方便,但在编辑器里长按方向键或删除键时,重复输入就被打断。

第一行关掉选择窗,恢复按键重复。第二行把重复速度调到最快,比系统设置里键盘滑杆的尽头还快。这两行不会立刻生效。需要注销后再登录。

按键重复 — 注销后重新登录
defaults write -g ApplePressAndHoldEnabled -bool false
defaults write -g KeyRepeat -int 1

关掉拼写、大写、引号和破折号的自动转换

Mac 会以方便为由改写你输入的字。它改拼写、把句首变成大写,并把句号、引号、破折号换成印刷体。聊天里几乎看不出来,但在代码和命令里,那些好看的字符就是错误。直引号(")变成弯引号后,人眼仍觉得是引号,程序却当成另一个字符。

下面五行分别关掉拼写纠正、自动大写、句号转换、智能引号和破折号转换。和按键重复一样,常常需要注销。一次贴完,进出登录一次即可。

关闭自动文本替换
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false
defaults write -g NSAutomaticCapitalizationEnabled -bool false
defaults write -g NSAutomaticPeriodSubstitutionEnabled -bool false
defaults write -g NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write -g NSAutomaticDashSubstitutionEnabled -bool false

隐藏程序坞,去掉延迟和动画

屏幕下方一排图标就是程序坞。它显示正在运行的 App,也占掉那一块屏幕。Option+Command+D 可以收起,再按一次会回来。收起后把指针移到屏幕下沿,程序坞会再出现,但默认会稍等一下。

第一行去掉这段等待。第二行去掉滑上来的动画。&& 表示前一条结束后再执行后一条。killall Dock 会关掉再打开程序坞,让它读新值。条子会闪一下再回来。它不会删掉未保存的文档。

程序坞延迟和动画设为 0
defaults write com.apple.dock autohide-delay -float 0 && killall Dock
defaults write com.apple.dock autohide-time-modifier -float 0 && killall Dock

一并减少窗口、滚动和访达动画

延迟不只出在程序坞。窗口开合、滚动、全屏切换、调度中心都带着很短的动画。用一两天无所谓,天天用就会累加。下面是视频里一次性贴上的那一组。

把 NSWindowResizeTime 设为 0.001,窗口缩放几乎立刻结束。访达的 DisableAllAnimations,以及程序坞启动动画和调度中心时间,也一并关掉。最后分别重启访达和程序坞。有些值会随 macOS 版本或 App 变得不明显。视频里实际执行的就是这一组。

尽量关掉 macOS、访达、程序坞动画
defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
defaults write -g NSScrollAnimationEnabled -bool false
defaults write -g NSWindowResizeTime -float 0.001
defaults write -g NSDocumentRevisionsWindowTransformAnimation -bool false
defaults write -g NSToolbarFullScreenAnimationDuration -float 0
defaults write -g NSBrowserColumnAnimationSpeedMultiplier -float 0
defaults write -g NSScrollViewRubberbanding -bool false

defaults write com.apple.finder DisableAllAnimations -bool true

defaults write com.apple.dock launchanim -bool false
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
defaults write com.apple.dock expose-animation-duration -float 0

killall Finder
killall Dock

截图的阴影、预览和保存位置

Mac 自带截图。Shift+Command+4 可以拖选区域。同时按住 Control,图像会进剪贴板而不是生成文件。在这个状态下按空格,可以改成按窗口截取。

按窗口截取时,默认会带上周围的阴影。把 disable-shadow 设为 true,就只留下窗口本身。截完后右下角闪一下的预览,把 show-thumbnail 设为 false 即可关掉。

默认保存位置是桌面。截多了图标会堆起来。先建一个文件夹,按住 Option 右键,会出现“拷贝路径名称”。把路径写到 location 后面。下面的例子是主目录下的 Desktop/screenshots。视频原文用了另一位用户的路径,必须改成你自己的。文件夹不存在就先执行 mkdir 那一行。

截图
defaults write com.apple.screencapture disable-shadow -bool true
defaults write com.apple.screencapture show-thumbnail -bool false
mkdir -p "$HOME/Desktop/screenshots"
defaults write com.apple.screencapture location -string "$HOME/Desktop/screenshots" && killall SystemUIServer

让访达更像资源管理器

访达相当于 Windows 的资源管理器。默认只在标题里显示当前文件夹名。按住 Option 时,底部会闪出路径,但每次都要按键很麻烦。打开标题中的完整路径,再打开底部的路径栏和状态栏,就能一直看到自己在哪、有多少个文件。

右上角搜索框的默认范围奇怪地是整台 Mac。若只想搜当前打开的文件夹,把 FXDefaultSearchScope 设为 SCcf。_FXSortFoldersFirst 会让文件夹排在文件前面。关掉 FXEnableExtensionChangeWarning,更改扩展名时就不再弹出警告。扩展名是文件名里最后一个点后面的部分,用来说明这是哪类文件。

访达显示、搜索、排序、扩展名警告
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
defaults write com.apple.finder ShowPathbar -bool true
defaults write com.apple.finder ShowStatusBar -bool true
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
defaults write com.apple.finder _FXSortFoldersFirst -bool true
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
killall Finder

退出访达,以及隐藏桌面图标

别的 App 都有退出菜单。访达默认没有。打开 QuitMenuItem 后,菜单里会出现“退出访达”。如果只剩一个访达窗口,退出时桌面也会一起消失,因为桌面本身就是访达的一部分。把最后一个 App 也关掉,访达会再活过来。视频里也说,这与其说是必备功能,不如说是用来看清各部分如何连在一起。

共享屏幕前如果桌面很乱,可以只把图标暂时藏起来。CreateDesktop 设为 false 会藏图标,改回 true 会再显示。文件本身不会被删除。

退出访达 · 桌面图标
defaults write com.apple.finder QuitMenuItem -bool true && killall Finder

# 隐藏图标
defaults write com.apple.finder CreateDesktop -bool false && killall Finder
# 再显示
defaults write com.apple.finder CreateDesktop -bool true && killall Finder

给智能体待命的 Mac 不要睡觉

视频最后一行是写给把 Mac 当小型服务器一直开着的人。智能体在等请求时如果电脑睡着,答复就会断掉。sudo pmset -a disablesleep 1 会关掉系统睡眠。sudo 表示需要管理员密码。输入时看不到字符是正常的。按回车即可。

靠电池工作的笔记本最好不要加这一行。合盖后它也会尽量保持清醒。要恢复,把同一行的 1 改成 0。

睡眠 — 仅限一直开着的 Mac
sudo pmset -a disablesleep 1
# 恢复
sudo pmset -a disablesleep 0

一次粘贴的整包,以及各自何时生效

下面是除睡眠以外的全部命令。截图路径按你的主目录来写。按键那一组贴完后需要注销;其余在最下面三行 killall 之后生效。睡眠命令请单独执行,而且只用于一直插电的 Mac。

组别改什么何时生效
按键重复和自动纠正长按、拼写、引号、破折号注销后重新登录
程序坞隐藏后的延迟和滑入killall Dock
窗口和滚动动画窗口、滚动、调度中心、访达killall Finder 和 Dock
截图阴影、预览、保存文件夹killall SystemUIServer
访达路径、搜索范围、文件夹优先、扩展名警告、退出killall Finder
桌面图标只隐藏或恢复图标killall Finder
睡眠关闭系统睡眠sudo 之后立即生效。不建议用于电池 Mac
defaults-bundle.sh
defaults write -g ApplePressAndHoldEnabled -bool false
defaults write -g KeyRepeat -int 1
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false
defaults write -g NSAutomaticCapitalizationEnabled -bool false
defaults write -g NSAutomaticPeriodSubstitutionEnabled -bool false
defaults write -g NSAutomaticQuoteSubstitutionEnabled -bool false
defaults write -g NSAutomaticDashSubstitutionEnabled -bool false

defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock autohide-time-modifier -float 0
defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
defaults write -g NSScrollAnimationEnabled -bool false
defaults write -g NSWindowResizeTime -float 0.001
defaults write -g NSDocumentRevisionsWindowTransformAnimation -bool false
defaults write -g NSToolbarFullScreenAnimationDuration -float 0
defaults write -g NSBrowserColumnAnimationSpeedMultiplier -float 0
defaults write -g NSScrollViewRubberbanding -bool false
defaults write com.apple.finder DisableAllAnimations -bool true
defaults write com.apple.dock launchanim -bool false
defaults write com.apple.dock expose-animation-duration -float 0

defaults write com.apple.screencapture disable-shadow -bool true
defaults write com.apple.screencapture show-thumbnail -bool false
mkdir -p "$HOME/Desktop/screenshots"
defaults write com.apple.screencapture location -string "$HOME/Desktop/screenshots"

defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
defaults write com.apple.finder ShowPathbar -bool true
defaults write com.apple.finder ShowStatusBar -bool true
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
defaults write com.apple.finder _FXSortFoldersFirst -bool true
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
defaults write com.apple.finder QuitMenuItem -bool true

killall Finder
killall Dock
killall SystemUIServer

如何还原

隐藏设置大多写成相反的值就能回去。用 true 打开的改回 false,用 false 关掉的改回 true。把数字写成 0 的,用 defaults delete 删掉这个键,交给出厂默认。改完后对该 App 执行 killall;按键那一组则要注销。

最常还原的三行是:桌面图标、截图位置回到桌面、以及睡眠。

常用还原
defaults write com.apple.finder CreateDesktop -bool true && killall Finder
defaults delete com.apple.screencapture location && killall SystemUIServer
sudo pmset -a disablesleep 0