Большую часть своего вычислительного времени я провожу в Linux (иногда в Windows). На этих платформах клавиши Homeи Endвсегда переходят к началу или концу текущей строки.
Я постепенно привыкаю к использованию единственного компьютера Apple в своей жизни, но меня все равно расстраивает то, что эти клавиши как будто привязаны к началу и концу документа, а для строки вообще нет никакой клавиши основанные действия.
Мой вопрос:
Также две оговорки:
Ярлыки по умолчанию для перехода к началу или концу (перенесенных) строк: ⌘←и ⌘→. ⌥↑и ⌥↓или ⌃Aи ⌃Eперейти к началу или концу развернутых строк (или абзацев). ⌥←и ⌥→двигаться вперед/назад по словам, и все это совместимо с удерживанием Shiftдля выбора во время соответствующих ходов.
Вы можете переназначить дом и закончить, создав ~/Library/KeyBindings/
и сохранив список свойств, подобный этому, как DefaultKeyBinding.dict
:
{
"\UF729" = moveToBeginningOfLine:; // home
"\UF72B" = moveToEndOfLine:; // end
"$\UF729" = moveToBeginningOfLineAndModifySelection:; // shift-home
"$\UF72B" = moveToEndOfLineAndModifySelection:; // shift-end
}
Большинство сочетаний клавиш для редактирования текста в OS X определены в файлах /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict
.
Применение изменений требует повторного открытия приложений. DefaultKeyBinding.dict игнорируется некоторыми старыми версиями Xcode (работает с последней версией 6.3.1), терминалом и многими кроссплатформенными приложениями.
См. Cocoa Text System и мой веб-сайт для получения дополнительной информации о настраиваемых сочетаниях клавиш.
Привязки клавиш терминала можно настроить в разделе «Настройки» > «Профили» > «Настройки» > «Клавиатура». \033OH
перемещается в начало строки и \033OF
в конец строки.
В Eclipse привязки клавиш следует изменить в разделе «Настройки» > «Основные» > «Ключи». Вам необходимо изменить привязки по умолчанию для команд « Начало строки» и « Конец строки» (замените ⌘ ← на ↖ и ⌘→ на ↘). Чтобы выделение работало, также измените Select Line Start и Select Line End .
PS: Возможно, вам придется выйти из системы и войти снова , чтобы ~/Library/KeyBindings/DefaultKeyBinding.dict
изменения вступили в силу.
/StandardKeyBinding.dict
является бинарным. Вы не можете это прочитатьctrl-shift-home
и ctrl-shift-end
, но я никогда не видел, чтобы они работали, независимо от приложения.В настоящее время я использую Lion 10.7.4, и по какой-то странной причине редактирование ~/Library/KeyBindings/DefaultKeyBinding.dict
не помогло мне.
Я обнаружил, что аддон KeyRemap4MacBook System Preferences (который теперь называется Karabiner-Elements ) работает очень хорошо, и с его помощью вы также можете переназначать различные клавиши без необходимости редактировать какие-либо текстовые файлы. Например, изменение клавиш страницы вверх/вниз, чтобы курсор также перемещался по странице вверх/вниз.
Просто загрузите дополнение и на панели «Системные настройки» перейдите к For PC Users
разделу и отметьте Use PC Style Home /End
.
Обратите внимание, что я выбрал (Change Home to Command+Left)
вместо (Change Home to Control+A)
, как если бы я выбрал первую строку, и если строка была перенесена, home перенесет меня к началу перенесенной строки, несколькими строками выше, а не к началу текущей строки.
Just download the addon, and in the System Preferences panel,
В Системных настройках не нашел. Я нашел его в LaunchPad. Версия для Mac: Эль-Капитан 10.11.3Personal PC-Style Shortcuts(@Bave Lee)
и импортирую Home key to the beginning of the line (Control + a)
иEnd key to the end of the line (Control + e)
Ctrl+a
но Ctrl-e
вместо этого это приведет к различным несовместимостям.Благодаря этой статье я понял, как повторно привязать клавиши Homeи Endк действиям на основе строк для каждого пользователя, которые работают на разных раскладках клавиатуры.
Вам нужно создать файл словаря с кодами клавиш и новыми командами для сопоставления, но сначала убедитесь, что папка, в которую он будет помещен, существует, открыв Терминал и выполнив:
$ mkdir -p ~/Library/KeyBindings
Затем создайте или отредактируйте файл в ~/Library/KeyBindings/DefaultKeyBinding.dict
. Если его раньше не было, добавьте весь раздел ниже. Если он существует, просто добавьте четыре новые строки внутрь блока.
{
"\UF729" = "moveToBeginningOfLine:";
"\UF72B" = "moveToEndOfLine:";
"$\UF729" = "moveToBeginningOfLineAndModifySelection:";
"$\UF72B" = "moveToEndOfLineAndModifySelection:";
}
Чтобы активировать настройки, вам необходимо выйти из системы и снова войти в систему.
Обратите внимание, что это относится как к обычному действию по перемещению курсора, так и к комбинации Shift+ Home/ Endдля выбора во время движения курсора.
Я использую OS X Sierra, и ~/Library/KeyBindings/DefaultKeyBinding.dict
решение, предложенное другими пользователями, частично сработало: некоторые приложения, такие как TextEdit, теперь имеют желаемое поведение, а другие приложения — нет. Google Chrome и Slack, похоже, не уважают DefaultKeyBinding.dict
файл.
Чтобы исправить оставшиеся приложения, я использовал BetterTouchTool (устаревший) / BetterTouchTool (текущий) для создания привязки сочетаний клавиш для конкретных приложений, Home
а End
также для собственных сочетаний клавиш OS X и Ctrl+A
файлов Ctrl+E
. BetterTouchTool не бесплатен, но есть 45-дневный пробный период.
Сделать это:
+
и выберите приложение, которое хотите исправить.Home
клавишу в поле «Ярлык записи» и установите «Активировать другое сочетание клавиш» на Ctrl+A. Повторите для End
и Ctrl+E.Примечание: не закрывайте приложение BetterTouchTool, иначе оно перестанет перехватывать нажатия клавиш. Просто закройте его окно, и он должен продолжить работу в фоновом режиме.
Я сделал это с помощью Karabiner Elements .
Вам необходимо обновить раздел правил ~/.config/karabiner/karabiner.json
с помощью массива JSON из кода ниже. Это переназначит клавиши Home и End, чтобы они работали так же, как на ПК / Windows.
{
"rules": [
{
"description": "change home key to command + left_arrow",
"manipulators": [
{
"from": {
"key_code": "home"
},
"to": [
{
"key_code": "left_arrow",
"modifiers": [
"left_command"
]
}
],
"type": "basic"
}
]
},
{
"description": "change home key to command + left_arrow while presing shift (selection)",
"manipulators": [
{
"from": {
"key_code": "home",
"modifiers": {
"mandatory": [
"left_shift"
]
}
},
"to": [
{
"key_code": "left_arrow",
"modifiers": [
"left_command",
"left_shift"
]
}
],
"type": "basic"
}
]
},
{
"description": "change end key to command + right_arrow",
"manipulators": [
{
"from": {
"key_code": "end"
},
"to": [
{
"key_code": "right_arrow",
"modifiers": [
"left_command"
]
}
],
"type": "basic"
}
]
},
{
"description": "change end key to command + right_arrow while presing shift (selection)",
"manipulators": [
{
"from": {
"key_code": "end",
"modifiers": {
"mandatory": [
"left_shift"
]
}
},
"to": [
{
"key_code": "right_arrow",
"modifiers": [
"left_command",
"left_shift"
]
}
],
"type": "basic"
}
]
}
]
}
см. также: суть github
"modifiers": { "optional": [ "any"] }
чтобы избежать дублирования правила для выбора (это форматирование в комментарии ужасно, скопируйте и вставьте в редактор, чтобы прочитать правильно, я полагаю){ "description": "Home is Beginning of line", "type": "basic", "from": { "key_code": "home", "modifiers": { "optional": [ "any"] } }, "to": [{ "key_code": "left_arrow", "modifiers": [ "left_command" ] }] }
Complex modifications
раздел и нажав Import more rules from the internet
, чтобы открыть браузер по адресу ke-complex-modifications.pqrs.org , выполнить поиск Home
и получить Home and End
результаты. Проверено на Биг Суре.Я использую потрясающий KeyRemap4MacBook с пользовательскими настройками, указанными ниже.
Он исправляет Home/End в большинстве приложений и не портит iTerm2.
Из https://gist.github.com/lhotari/6134223181439b9ed0a1
<?xml version="1.0"?>
<!-- ~/Library/Application Support/KeyRemap4MacBook/private.xml -->
<!-- Custom keyboard mappings for MBP using https://pqrs.org/macosx/keyremap4macbook/ -->
<root>
<item>
<name>Lari's PC Style Home/End</name>
<appendix>(Change Home to Command+Left)</appendix>
<appendix>(Change End to Command+Right)</appendix>
<appendix></appendix>
<appendix>{{ PC_STYLE_BINDINGS_IGNORE_APPS_DESCRIPTION }}</appendix>
<identifier>lari.remap.pclikehomeend</identifier>
<block>
<only>DREAMWEAVER</only>
<autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME, ModifierFlag::SHIFT_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_END, KeyCode::END, ModifierFlag::SHIFT_L</autogen>
</block>
<block>
<only>BLUEFISH,WORD,EXCEL,POWERPOINT</only>
<autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::HOME</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_END, KeyCode::END</autogen>
</block>
<!--
<block>
<only>EMACS, TERMINAL, X11, ECLIPSE</only>
<autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::A, ModifierFlag::CONTROL_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_END, KeyCode::E, ModifierFlag::CONTROL_L</autogen>
</block>
-->
<block>
<not>{{ PC_STYLE_BINDINGS_IGNORE_APPS }}</not>
<autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_UP, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_HOME, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_UP, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_END, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_COMMAND, KeyCode::CURSOR_DOWN, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_END, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_CONTROL, KeyCode::CURSOR_DOWN, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_HOME, KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__ FROMKEYCODE_END, KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L</autogen>
</block>
</item>
</root>
Ответ @Lri потрясающий ( большое спасибо, это сводило меня с ума ), но в итоге я немного изменил его.
(В этом ответе я использую имена ключей, отличные от Apple, поэтому Command= Superи Option= Alt)
SuperLeftи SuperRightраньше фактически сопоставлялись с moveToLeftEndOfLine
и moveToRightEndOfLine
. Использование moveToBeginningOfLine
and moveToEndOfLine
, как это делает @Lri, может привести к непоследовательному поведению.
Есть целая куча других различий между ярлыками Apple и буквально всеми остальными ярлыками, которые я добавил. Например, ControlLeftи ControlRightдолжны перемещаться между словами; не AltLeftи AltLeft. Я не думаю, что это исчерпывающе, но сейчас это работает очень хорошо для меня. Я предположил, что пользователь уже поменял местами клавиши Controlи Super, чтобы исправить вырезание, копирование и вставку.
~/Library/KeyBindings/DefaultKeyBinding.dict:
{
"\UF729" = moveToLeftEndOfLine:; // home
"\UF72B" = moveToRightEndOfLine:; // end
"$\UF729" = moveToBeginningOfLineAndModifySelection:; // shift-home
"$\UF72B" = moveToEndOfLineAndModifySelection:; // shift-end
"@\UF700" = moveUp:; //super-up
"@\UF701" = moveDown:; //super-down
"@\UF702" = moveWordLeft:; //super-left
"@\UF703" = moveWordRight:; //super-right
"@$\UF700" = moveUpAndModifySelection:; // super-shift-up
"@$\UF701" = moveDownAndModifySelection:; // super-shift-down
"@$\UF702" = moveWordLeftAndModifySelection:; // super-shift-left
"@$\UF703" = moveWordRightAndModifySelection:; // super-shift-right
"@\UF728" = deleteWordForward:; // super-delete
"@\U7F" = deleteWordBackward:; // super-backspace
}
Я нашел следующее полезным для iterm2
и zsh
с цитатами отсюда :
Открыть
iTerm > Preference
. Перейти кprofiles tab > Keys
. Затем нажмите+
кнопку в нижней части списка клавиш, нажмитеHome
(илиFn+left arrow
на беспроводной клавиатуре Apple) подAction
выберитеSend Escape Sequence
и введите[1~
Повторите для End
клавиши с [~4
последовательностью escape-клавиш.
Если вы используете zsh, также сделайте это:
1) Поместите следующее в свой
~/.zshrc
файлbindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line
2) Запускаем
source ~/.zshrc
в любых открытых терминалах.
bindkey "^[[~4" end-of-line
. Обратите внимание на положение 4.^[[4~
эхо выводится, 4
а ^[[~4
курсор перемещается в конец строки.^[[4~
. Какую клавиатуру и кодировку символов вы используете, может быть, это имеет значение?Имхо, лучший инструмент для изменения клавиатуры - это действительно Karabiner (старое название KeyRemap4MacBook). Открытый исходный код ( https://github.com/tekezo/Karabiner ), но также доступен в виде приложения ( https://pqrs.org/osx/karabiner/index.html.en ). Долго искал и ничего лучше не нашел.
/Library/KeyBindings/DefaultKeyBinding.dict (apply to all users)
или же
~/Library/KeyBindings/DefaultKeyBinding.dict (apply to yourself)
{
"\UF729" = moveToBeginningOfParagraph:; // home
"\UF72B" = moveToEndOfParagraph:; // end
"$\UF729" = moveToBeginningOfParagraphAndModifySelection:; // shift-home
"$\UF72B" = moveToEndOfParagraphAndModifySelection:; // shift-end
"^\UF729" = moveToBeginningOfDocument:; // ctrl-home
"^\UF72B" = moveToEndOfDocument:; // ctrl-end
"^$\UF729" = moveToBeginningOfDocumentAndModifySelection:; // ctrl-shift-home
"^$\UF72B" = moveToEndOfDocumentAndModifySelection:; // ctrl-shift-end
}
На исходный вопрос уже дан ответ, но я собрал эквивалентность отсутствующих клавиш стандартной раскладки клавиатуры (Home, Backspace, Page и т. д.) на Mac здесь .
Это от iExplain работает для Big Sur.
{
/* Remap Home / End keys */
/* Home Button*/
"\UF729" = "moveToBeginningOfLine:";
/* End Button */
"\UF72B" = "moveToEndOfLine:";
/* Shift + Home Button */
"$\UF729" = "moveToBeginningOfLineAndModifySelection:";
/* Shift + End Button */
"$\UF72B" = "moveToEndOfLineAndModifySelection:";
/* Ctrl + Home Button */
"^\UF729" = "moveToBeginningOfDocument:";
/* Ctrl + End Button */
"^\UF72B" = "moveToEndOfDocument:";
/* Shift + Ctrl + Home Button */
"$^\UF729" = "moveToBeginningOfDocumentAndModifySelection:";
/* Shift + Ctrl + End Button*/
"$^\UF72B" = "moveToEndOfDocumentAndModifySelection:";
}
Вы также можете переназначить клавиши клавиатуры, а также настроить мышь и трекпад самыми разными способами с помощью бесплатного BetterTouchTool, доступного по адресу http://blog.boastr.net/ . Отличное решение для настройки работы ваших устройств ввода!
Калеб
сборщик барри
Эман