NSUserDictionaryReplacementItemsへのデフォルトでの書き込み


1

次のコマンドは、NSUserDictionaryReplacementItemsを読み取ります。キーは、OS Xではテキストショートカットと呼ばれます。

defaults read NSGlobalDomain NSUserDictionaryReplacementItems

このdefaultsコマンドを使用して新しいショートカットを作成したいと思います。これは、Mavericksのリストがキャッシュされているためです(その他のさまざまな理由により)。上記のコマンドの出力からわかるように、他のキーと値がリストされています。メインNSUserDictionaryReplacementItemsキー内のキーと値にアクセスするにはどうすればよいですか?のmanページにdefaultsは、それをどのように(または行うことができるか)記載されていません。


これをありがとう!私は何年もの間これを行う方法を疑問に思っていました。私はdefaults多くのものに快適に使用してきましたが、配列や辞書への書き込みは常に避けてきました。
ゼリン

(必要に応じdefaults read -globalDomain <key>て、の代わりに使用することもできNSGlobalDomainます。覚えやすいと思います。)
Zearin

回答:


2

置換を追加するさまざまな方法:

defaults write -g NSUserDictionaryReplacementItems -array-add '{on=1;replace=a;with=b;}'

defaults write -g NSUserDictionaryReplacementItems -array-add '<dict><key>on</key><integer>1</integer><key>replace</key><string>a</string><key>with</key><string>b</string></dict>'

リスト全体を置き換えるさまざまな方法:

defaults write -g NSUserDictionaryReplacementItems -array '{on=1;replace=a;with="b \"\\b";}' '{on=1;replace=c;with=d;}'

defaults write -g NSUserDictionaryReplacementItems '({on=1;replace=a;with="b \"\\b";},{on=1;replace=c;with=d;})'

defaults write -g NSUserDictionaryReplacementItems '<array><dict><key>on</key><integer>1</integer><key>replace</key><string>a</string><key>with</key><string>b "\b</string></dict><dict><key>on</key><integer>1</integer><key>replace</key><string>c</string><key>with</key><string>d</string></dict></array>'

アプリケーションを終了して再度開き、変更を適用します。

編集:defaults[キーボード]設定ペインの[テキスト]タブを開くと、変更は失われます。それを防ぐには、次のようなスクリプトを使用します。

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%?})"

~/Library/Dictionaries/CoreDataUbiquitySupport/$USER~*/UserDictionary/local/store/UserDictionary.dbiCloudが無効になっていても、置換は保存されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.