macOS 移除 ABC 输入法(仅保留第三方输入法)
背景说明
在 macOS 中,即使用户只使用第三方输入法(如鼠须管/Squirrel、搜狗拼音、微信键盘等),系统在切换输入法时仍然会保留 ABC(美国)输入法,在以下场景可能造成困扰:
- 按错切换快捷键时不小心切到 ABC,需要再切回来
- 某些游戏或应用会强制切换到 ABC 输入法
- 希望完全屏蔽系统自带输入法,保持输入体验的一致性
注意:macOS 10.15+ 系统对输入法管理更加严格,完全删除 ABC 输入法可能导致某些场景下的输入问题。建议根据个人需求谨慎操作。
方法一:修改 plist 文件(推荐)
macOS 的输入法配置存储在 com.apple.HIToolbox.plist 文件中,通过编辑该文件可以移除 ABC 输入法。
步骤
1. 打开配置文件
shell
# 使用 Xcode 打开(如果已安装)
sudo open ~/Library/Preferences/com.apple.HIToolbox.plist
# 或使用 PlistBuddy 命令行工具(无需 Xcode)
/usr/libexec/PlistBuddy -c "Print" ~/Library/Preferences/com.apple.HIToolbox.plist2. 删除 ABC 输入法条目
使用 Xcode 打开时:
- 依次展开 Root → AppleEnabledInputSources
- 找到包含
KeyboardLayout Name = ABC的item - 选中该
item后按 Delete 键删除
使用命令行(PlistBuddy)时:
shell
# 先查看当前启用的输入法列表,找到 ABC 对应的索引
/usr/libexec/PlistBuddy -c "Print :AppleEnabledInputSources" ~/Library/Preferences/com.apple.HIToolbox.plist
# 删除指定索引的条目(假设 ABC 在索引 0)
/usr/libexec/PlistBuddy -c "Delete :AppleEnabledInputSources:0" ~/Library/Preferences/com.apple.HIToolbox.plist3. 重启或注销登录
修改完成后,需要注销当前用户并重新登录或重启电脑才能使更改生效。
方法二:使用命令行脚本一键移除
如果你熟悉命令行,可以使用以下脚本自动移除 ABC 输入法:
shell
#!/bin/bash
PLIST="$HOME/Library/Preferences/com.apple.HIToolbox.plist"
# 备份原文件
cp "$PLIST" "$PLIST.backup.$(date +%Y%m%d%H%M%S)"
# 获取 AppleEnabledInputSources 的条目数
COUNT=$(/usr/libexec/PlistBuddy -c "Print :AppleEnabledInputSources" "$PLIST" 2>/dev/null | grep -c "Dict")
# 遍历并删除 ABC
for ((i=COUNT-1; i>=0; i--)); do
NAME=$(/usr/libexec/PlistBuddy -c "Print :AppleEnabledInputSources:$i:KeyboardLayout Name" "$PLIST" 2>/dev/null)
if [ "$NAME" = "ABC" ]; then
echo "正在删除索引 $i 的 ABC 输入法..."
/usr/libexec/PlistBuddy -c "Delete :AppleEnabledInputSources:$i" "$PLIST"
fi
done
echo "完成!请注销并重新登录以生效。"将上述内容保存为 remove_abc.sh,然后执行:
shell
chmod +x remove_abc.sh
./remove_abc.sh方法三:使用第三方工具(HammerSpoon / Karabiner)
如果你不想修改系统文件,也可以通过键盘重映射工具实现类似效果:
Hammerspoon 方案
lua
-- 在 ~/.hammerspoon/init.lua 中添加
local function forceSwitchInputMethod()
-- 强制切换到指定输入法(如鼠须管)
hs.keycodes.currentSourceID("com.googlecode.rimeinputmethod.Squirrel.Rime")
end
-- 监听输入法切换,如果切换到 ABC 则自动切回
hs.keycodes.inputSourceChanged(function()
if hs.keycodes.currentSourceID() == "com.apple.keylayout.ABC" then
forceSwitchInputMethod()
end
end)鼠须管的
SourceID可能因版本不同而变化,可以通过hs.keycodes.currentSourceID()查看当前输入法的 ID。
如何恢复 ABC 输入法
如果删除后遇到问题,或者需要恢复 ABC 输入法,可以:
方法一:从备份恢复
shell
# 找到之前的备份并恢复
cp ~/Library/Preferences/com.apple.HIToolbox.plist.backup.xxxxxxx ~/Library/Preferences/com.apple.HIToolbox.plist方法二:通过系统设置重新添加
- 打开 系统设置 → 键盘 → 输入法
- 点击 编辑 → 添加输入法
- 选择 英语 → 美国(ABC) 添加即可
方法三:重置输入法配置
shell
# 删除配置文件让系统重新生成(会重置所有输入法设置)
rm ~/Library/Preferences/com.apple.HIToolbox.plist
# 然后重启电脑
sudo reboot常见问题
1. 修改后输入法列表没有变化
确保修改后注销并重新登录或重启电脑,仅重启输入法进程可能不生效。
2. 某些应用强制切换到 ABC
部分应用(尤其是游戏、Adobe 系列软件)会强制使用 ABC 输入法以确保快捷键正常工作。这是应用层面的行为,无法通过删除系统输入法解决。
3. 登录界面或密码输入框无法输入
如果删除了 ABC 输入法,在某些安全输入框(如系统密码框)可能会遇到输入问题。建议至少保留一个拉丁字母输入法。
4. 文件修改后权限问题
shell
# 修复文件权限
chmod 644 ~/Library/Preferences/com.apple.HIToolbox.plist
chown $(whoami) ~/Library/Preferences/com.apple.HIToolbox.plist各输入法 SourceID 参考
| 输入法 | SourceID |
|---|---|
| ABC | com.apple.keylayout.ABC |
| 鼠须管(Rime) | com.googlecode.rimeinputmethod.Squirrel.Rime |
| 搜狗拼音 | com.sogou.inputmethod.sogou.pinyin |
| 微信键盘 | com.tencent.inputmethod.wetype.pinyin |
| 百度输入法 | com.baidu.inputmethod.BaiduIM.pinyin |
可以通过以下命令查看当前所有可用的输入法 ID:
shell
/usr/libexec/PlistBuddy -c "Print :AppleEnabledInputSources" ~/Library/Preferences/com.apple.HIToolbox.plist