如何恢复Terminal中被禁用的Command-Q快捷键默认功能
如何恢复Terminal中被禁用的Command-Q快捷键默认功能
嗨,我来帮你搞定这个恢复Terminal默认Cmd+Q快捷键的问题!首先得明确:当你用defaults write把Terminal的Quit快捷键设为nil后,要恢复默认状态,得区分两种情况——你之前有没有自定义过这个快捷键,或者原本就是系统默认的Cmd+Q。
第一步:先备份当前的快捷键设置(程序启动时做)
在你临时禁用Cmd+Q之前,先把原来的设置读出来存好,这样后续才能准确恢复。执行这条命令:
original_quit_key=$(defaults read com.apple.Terminal NSUserKeyEquivalents 2>/dev/null | grep -A 1 '"Quit Terminal"' | tail -n 1 | tr -d ' ;"')
这条命令的作用是:
2>/dev/null:如果系统原本没有自定义过这个快捷键,防止命令报错grep -A 1:找到"Quit Terminal"那一行,并取出下一行的快捷键值tr -d:去掉多余的引号、分号和空格,得到干净的快捷键字符串(默认的话会得到@q,@代表Command键)
第二步:临时禁用Cmd+Q(你的程序运行期间)
这一步你应该已经知道了,执行:
defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Quit Terminal" nil
执行完后需要重启Terminal才能生效,你可以用AppleScript自动重启:
osascript -e 'quit app "Terminal"' && open -a Terminal
(注意:重启会关闭所有Terminal窗口,最好提前提示用户保存内容)
第三步:恢复默认快捷键(程序结束后)
根据之前备份的original_quit_key值,分两种情况处理:
如果之前有自定义快捷键(
original_quit_key不为空):
把原来的快捷键写回去:defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Quit Terminal" "$original_quit_key"如果原本是系统默认状态(
original_quit_key为空):
直接删除这个自定义的键,让Terminal回到默认设置:# 先删除"Quit Terminal"这个键 defaults delete com.apple.Terminal NSUserKeyEquivalents "Quit Terminal" 2>/dev/null # 如果NSUserKeyEquivalents字典里已经没有其他自定义键了,也可以直接删除整个字典 defaults delete com.apple.Terminal NSUserKeyEquivalents 2>/dev/null
不管哪种情况,恢复后都要再次重启Terminal才能生效,同样用AppleScript命令:
osascript -e 'quit app "Terminal"' && open -a Terminal
额外提醒
- 这些命令需要Terminal有足够的权限,如果你遇到权限问题,可以在命令前加
sudo(不过一般不需要,因为是用户级别的设置) - 如果你手动测试恢复,也可以直接打开Terminal的偏好设置→键盘,找到"Quit Terminal",把快捷键改回Cmd+Q,这样更直观
备注:内容来源于stack exchange,提问作者Lor
相关产品推荐
相关产品推荐

