Этот список, доступный через Системные настройки/Клавиатура/Текст, исчез, когда я обновился до 10.9.2 (он пережил первоначальное обновление до Mavericks). Я много пишу для науки, и я потратил годы на составление этого списка. (последний MacBook Pro, 10.9.2).
Некоторые сайты говорят, что я должен получить файл /Users/username/Library/Preferences/.GlobalPreferences.plist из резервной копии, но я искал HD моего другого компьютера (те же характеристики, но с 10.9.1, заменить/со списком нетронутым ), и я не могу найти такой файл.
Другие сайты говорят, что он находится в «массиве NSUserDictionaryReplacementItems» в 10.9, но, к сожалению, я не знаю, что это значит. (Я пользователь, а не программист.)
Я слышал, что это может быть связано с новой возможностью Mavericks синхронизировать этот список с устройствами iOS, но это все равно не объясняет, почему я не могу найти его на своем компьютере с 10.9.1, который синхронизировался с моим телефоном. (iPhone 4, iOS 5.x) годами.
В версии 10.9 замены текста также хранятся в файлах ~/Library/Dictionaries/CoreDataUbiquitySupport/$USER~*/UserDictionary/local/store/UserDictionary.db
. UserDictionary.db
используется, даже если iCloud отключен и имеет приоритет над .GlobalPreferences.plist
.
Если вы, например, запускаете defaults write -g NSUserDictionaryReplacementItems '({on=1;replace=aa;with=bb;})'
, выходите и снова открываете TextEdit, aa
он заменяется на bb
в TextEdit, но изменения отменяются, если вы открываете вкладку «Текст» на панели настроек клавиатуры.
Вы можете изменить оба UserDictionary.db
и .GlobalPreferences.plist
с помощью скрипта, подобного этому:
date=$(date +%s)
while read -r replace with; do
plist+="{on=1;replace=\"$replace\";with=\"$with\";},"
sql+="INSERT INTO 'ZUSERDICTIONARYENTRY' VALUES($((++i)),1,1,0,0,0,0,$date,NULL,NULL,NULL,NULL,NULL,\"$with\",\"$replace\",NULL);"
done < <(sed 's/\\/\\\\/g;s/"/\\"/g' ~/replacements.txt)
sqlite3 ~/Library/Dictionaries/CoreDataUbiquitySupport/$USER~*/UserDictionary/local/store/UserDictionary.db "delete from ZUSERDICTIONARYENTRY;$sql"
defaults write -g NSUserDictionaryReplacementItems "(${plist%?})"
В 10.8 и более ранних версиях OS X замены текста хранятся в NSUserReplacementItems
массиве (не NSUserDictionaryReplacementItems
) в файлах ~/Library/Preferences/.GlobalPreferences.plist
.
Я нашел более простой способ сделать это.
Используйте эти шаги для экспорта существующих текстовых замен:
Откройте «Системные настройки» > «Клавиатура» > «Текст».
Выберите ярлыки, которые вы хотите экспортировать. Если вы хотите экспортировать все замены текста, выберите одну из них, затем выберите «Выбрать все» в меню «Правка».
Перетащите выбранные ярлыки на рабочий стол. Это создает файл с именем Text Substitutions.plist, который содержит выбранные вами замены.
Закройте окно «Системные настройки».
Используйте эти шаги, чтобы импортировать файл plist, который вы создали в другой учетной записи пользователя:
Скопируйте ранее созданный файл plist в папку /Users/Shared/ или на внешний диск.
Войдите в систему как учетная запись пользователя, в которой вы хотите использовать эти замены текста.
Откройте «Системные настройки» > «Клавиатура» > «Текст».
Перетащите файл Text Substitutions.plist в область окна «Системные настройки», где отображаются замены текста (в разделе «Заменить» или «С»).
Закройте окно «Системные настройки».
источник: https://support.apple.com/en-in/guide/mac-help/mchl2a7bd795/mac
Настройки хранятся в NSUserDictionaryReplacementItems в ~/Library/Preferences/.GlobalPreferences.plist.
Вы можете прочитать содержимое, открыв файл и просмотрев его, или выполнив:
defaults read -g NSUserDictionaryReplacementItems
Чтобы скопировать свои настройки на другой компьютер, возьмите вывод предыдущей команды и выполните следующую команду, чтобы записать свои настройки:
defaults write -g NSUserDictionaryReplacementItems -array-add '{on=1;replace=foo;with=bar;}'
Замените содержимое массива в конце команды нужными заменами.
-array-add
добавляется в конец массива. Используйте -array
для замены всего массива.
defaults write com.apple.finder AppleShowAllFiles -bool true && osascript -e 'quit app "Finder"'
) или открыть их через Терминал. NSUserDictionaryReplacementItems — это массив в файле вместе с другими данными. Вот почему может быть нежелательно копировать весь файл, отсюда и мои команды терминала в ответе.Я написал скрипт для резервного копирования и восстановления базы данных. Нет необходимости что-либо извлекать из .GlobalPreferences.plist, просто скопируйте базу данных и откройте системные настройки, чтобы перезагрузить настройки.
############
#!/bin/bash
ME=$USER
DB_BACKUP_DIR=$HOME/Desktop
DB_BACKUP_FILE=$DB_BACKUP_DIR/UserDictionary.db
# Find the path where the replacement DB is:
PLIST=$HOME/Library/Preferences/com.apple.configurationprofiles.user.plist
UUID=$(defaults read "$PLIST" APNSTokens_Production|grep -E '^\s*"[0-9A-F-]*"'|cut -d\" -f2)
DB_RESTORE_DIR=$HOME/Library/Dictionaries/CoreDataUbiquitySupport/$ME~$UUID/UserDictionary/local/store
DB_RESTORE_FILE=$DB_RESTORE_DIR/UserDictionary.db
function Backup(){
echo "Backup"
[ \! -d "$DB_BACKUP_DIR" ] && echo "Backup directory does not exist" && echo "$DB_BACKUP_DIR" && exit 1
echo "Copying database file"
cp -fv "$DB_RESTORE_FILE" "$DB_BACKUP_FILE"
}
function Restore(){
echo "Restore"
[ \! -r "$DB_BACKUP_FILE" ] && echo "Cannot read the backup file" && echo "$DB_BACKUP_FILE" && exit 1
[ \! -d "$DB_RESTORE_DIR" ] && echo "Creating Restore Directory" && echo "$DB_RESTORE_DIR"
echo "Copying database file"
cp -fv "$DB_BACKUP_FILE" "$DB_RESTORE_FILE"
# The database has been copied, but OS X ignores it
# until the tab System Preferences \ Keyboard \ Text is opened at least once
# Use osascript to open and close System Preferences \ Keyboard \ Text
osascript - <<EOC
tell application "System Preferences"
activate
set the current pane to pane id "com.apple.preference.keyboard"
reveal anchor "Text" of pane id "com.apple.preference.keyboard"
quit
end tell
EOC
}
# Main
case "$1" in
-b) Backup
;;
-r) Restore
;;
*) echo "Usage: $0 -b|-r"
echo "\t\t-b: backup"
echo "\t\t-r: restore"
exit 0
;;
esac
Коди Грей
Мистер Тао
what_to_replace replace_with
разделенных пробелом.Гервиц