Перестали работать привязки клавиш TextEdit, измененные в DefaultKeyBinding.dict

5

Я настроил привязки редактирования текста в ~ / Library / KeyBindings / DefaultKeyBinding.dict, но они перестали работать в TextEdit.app, когда я обновился до Lion. Они по-прежнему отлично работают в других приложениях Какао, таких как Safari.

Системные привязки по умолчанию нравятся ^Fдля moveForward:работы как обычно.

Кто-нибудь еще, кто использует DefaultKeyBinding.dict, заметил это? Есть ли способ исправить это или любой другой способ настройки привязки клавиш в TextEdit?

mckeed
источник
2
Пользовательские сочетания клавиш работают нормально для меня в TextEdit. Вы пытались заменить свой DefaultKeyBinding.dict чем-то вроде {"a"=(insertText:,"test");}?
Лри
@LauriRanta спасибо; зная, что я был единственным, у кого возникла проблема, я наконец-то все выяснил.
Маккин

Ответы:

8

Проблема заключалась в том, что я переместил файл DefaultKeyBinding.dict куда-то еще в целях контроля версий и сделал ссылку на него.

Большинство приложений загружали файл по символической ссылке, но TextEdit (и, оказывается, пара других приложений, которые, как мне показалось, просто не поддерживали привязки клавиш), должны сделать что-то другое и не увидели этого.

Итак, ой, урок усвоен. Не используйте ссылки на файлы конфигурации вашей системы.

mckeed
источник
Спасибо fcuk за ваш ответ. Я полностью переустанавливал свою учетную запись пользователя, потому что думал, что у Pages / Keynote есть скрытые пользовательские настройки, которые держат их заблокированными в более старой версии моего DefaultKeyBinding.dict . Как и у вас, после этого изменения у меня была версия. Мне по-прежнему необходимо контролировать настройки моей учетной записи пользователя, которые распределены по каталогам и файлам по всему моему ~/ home. Казалось, что символические ссылки на файлы в проекте usersettings были ответом. Вместо этого я буду контролировать версию всего своего дома, по умолчанию .gitignore все файлы и помещать в белый список нужные файлы.
Риаз Ризви,
1

У меня была та же проблема с символической ссылкой на этот файл, но я не хотел уступать этому ограничению, поэтому я создал git pre-commithook для обновления ~ / Library / KeyBindings / DefaultKeyBinding.dict всякий раз, когда моя версия была зафиксирована.

Вот код (для Git):

#!/bin/bash


if [[ $(git diff --cached --name-only | grep '.configurations/DefaultKeyBinding.dict' | wc -l) -eq 1 ]]; 

then
   FILE_PATH_IN_LIBRARY=~/Library/KeyBindings/DefaultKeyBinding.dict
   BASE_DIR=$(git rev-parse --show-toplevel)
   FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dict

   NORMAL=$(tput sgr0)
   BRIGHT=$(tput bold)
   GREEN=$(tput setaf 2)

   printf "${BRIGHT}${GREEN}The file <%s> was modified, updating %s${NORMAL}\n" $FILE_PATH_IN_SCM $FILE_PATH_IN_LIBRARY

   cp $FILE_PATH_IN_SCM $FILE_PATH_IN_LIBRARY
fi

Чтобы использовать это все, что вам нужно сделать, это заменить FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dictместоположение файла в вашем Git Repository.

Если вы никогда не создавали Git Hook раньше (это был мой первый) - вам нужно поместить этот код в:

<your-git-repo>/.git/hooks/pre-commit

Не забудьте запустить, chmod +x <your-git-repo>/.git/hooks/pre-commitчтобы сделать его исполняемым.

После этого каждый коммит, включающий этот файл, будет отображать что-то вроде:

The file </Users/myuser/.scripts/.configurations/DefaultKeyBinding.dict> was modified, updating /Users/myuser/Library/KeyBindings/DefaultKeyBinding.dict
Ronk
источник