Почему fn- ⇧- →(или другие) делают дом / конец в терминале , но ⌘- →работает везде?
Так что, для ясности, вопрос в том, как заставить Терминал взять Command+ ←и →для дома, и для конца?
Как бы удобно это ни было, Терминал не может легко обеспечить запрашиваемую вами функциональность.
Причина в том, что программы, которые запускаются внутри Терминала, имеют разные правила для перемещения курсора в начало / конец строки, например:
bash
(и другие оболочки) использовать CtrlAиCtrlEvi
использует 0и $/Shift4Другие программы могут использовать другие ключи. Не существует универсальной комбинации клавиш для позиционирования курсора в начале / конце строки.
Конечно, Терминал может вести список сочетаний клавиш для ряда общих программ, проверять, что работает, и отправлять правильные ключи для вас, или он может предоставить пункт меню, такой как Переместить курсор в начало строки внутри оболочки ⌘ ←, а затем отправить CtrlAза кулисами. Но я думаю, что инженеры Apple подумали, что если вы рискуете на территории CLI, вы знаете его особенности.
В качестве примечания, Терминал предоставляет Option←и Option→ведет себя так, bash
как вы ожидаете, и перемещает курсор в начало предыдущего / следующего слова. Это потому, что эти комбинации клавиш отображаются на Escbи Escb(см. man bash
Раздел «Команды для перемещения» для получения дополнительной информации). В vi
, например, только последний (вид) работ (в конце этого ответа я покажу , как настроить vi
для работы с Option←и Option→).
Но благодаря Automator, AppleScript и псевдонимам bash вы можете получить ⌘←и ⌘→работать с ними bash
(и, возможно, с другими оболочками) и vi
.
Первым шагом является отображение ⌘←и ⌘→на CtrlAи CtrlE. На втором этапе, я покажу вам , как настроить vi
в честь CtrlAи CtrlE(что, в результате, будет делать vi
совместимы с ⌘←и ⌘→).
Карта ⌘←и ⌘→к CtrlAиCtrlE
В терминале перейдите в «Настройки»> «Настройки»> [ваш активный профиль]> «Клавиатура»:
Нажмите +, выберите «Курсор влево», «Control-Shift» в качестве модификатора и действие «Отправить текст:». Затем нажмите CtrlA( \001
появится в текстовом поле) и подтвердите, нажав OK:
(В предыдущей версии этого ответа я использовал «Shift» в качестве модификатора. Я заметил, что этот параметр конфликтует с тем ⌘shift←, что показывает предыдущую вкладку «Терминал», если вы не отпустите ⌘сразу. Использование «Control-Shift») исправляет это.)
Теперь добавьте комбинацию клавиш для «Курсор вправо», но нажмите CtrlE( \005
появится в текстовом поле). Подтвердите с помощью OK.
Откройте Automator (например, нажмите, ⌘spaceчтобы вызвать Spotlight и введите Automator ), выберите «Файл»> «Создать» и выберите Service
:
Перетащите Run AppleScript
на правую панель:
Введите следующий скрипт:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 123 using {shift down, control down}
end tell
end tell
end run
и сохранить как Move Cursor to Beginning of Line
:
Повторите шаги 4.-6 для этого сценария:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 124 using {shift down, control down}
end tell
end tell
end run
и сохранить как Move Cursor to End of Line
:
Вот как Terminal> Services выглядит сейчас:
Настроить vi
в честь CtrlAиCtrlE
Откройте .bashrc
с вашим любимым редактором и добавьте эту строку:
alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'
Первые две map
команды сообщают vim
интерпретировать ControlEи ControlAas $и 0, которые перемещают курсор в начало или конец строки соответственно.
Последние две map
команды говорят vim
перемещать курсор по одному слову за раз, как и следовало ожидать при нажатии option←и Option→.
Предостережения
Вы заметите, что между моментом нажатия ⌘←или ⌘→моментом, когда курсор фактически перемещается , существует небольшая задержка .
Имейте в виду, что он будет работать только для программ, которые соблюдают CtrlA/ CtrlE, поэтому вы все равно можете узнать конкретные комбинации клавиш каждой программы, которую вы используете в Терминале.
(Проверено на macOS Sierra 10.12.4)
⌘
vi
которой совсем другое приложение, нежели терминал.Конечно, это возможно.
Прежде всего, вы можете использовать бесплатный инструмент «DoubleCommand», если у вас есть клавиатура Windows с клавишами HOME / END, чтобы заставить их вести себя так, как они должны (начало / конец строки).
Во-вторых, конкретно для терминала, перейдите в настройки, Клавиатура, отредактируйте значок / клавишу, которая выглядит как стрелка, указывающая вверх-влево, выберите «Отправить текст» и введите ctrl + a. Выполнено!
То же самое для кнопки окончания ..
Если у вас нет клавиатуры ПК, вы можете сделать то же самое с другими комбинациями клавиш.
источник