Відповіді:
Як би зручно це було, Термінал не може легко надати потрібну функціональність.
Причина полягає в тому, що програми, що працюють у Terminal, мають різні правила переміщення курсору на початок / кінець рядка, наприклад:
bash
(та інші оболонки) використовують CtrlAіCtrlEvi
використання 0та $/Shift4Інші програми можуть використовувати інші клавіші. Не існує універсальної комбінації клавіш для позиціонування курсору на початку / кінці рядка.
Звичайно, Terminal може підтримувати список комбінацій клавіш для ряду поширених програм, перевіряти, що працює, і надсилати правильні для вас клавіші, або він може надати пункт меню, наприклад, Перемістити курсор до початку рядка всередині оболонки ⌘ ← і потім надіслати 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
У Терміналі перейдіть до Налаштування ...> Налаштування> [ваш активний профіль]> Клавіатура:
Натисніть +, виберіть "Курсор вліво", "Контроль-Зсув" як модифікатор та дію "Надіслати текст:". Потім натисніть CtrlA( \001
з'явиться в текстовому полі) і підтвердьте OK:
(У попередній версії цієї відповіді я використовував "Shift" як модифікатор. Я помітив, що це налаштування суперечить ⌘shift←, що показує попередню вкладку "Термінал", якщо ви не відпустите ⌘негайно. Використовуючи "Control-Shift" виправляє це.)
Тепер додайте комбінацію клавіш для "Курсор вправо", але натисніть CtrlE( \005
з'явиться в текстовому полі). Підтвердити за допомогою OK.
Відкрийте Автоматизатор (наприклад, натисніть, ⌘spaceщоб відкрити прожектор, і введіть Автоматизатор ), виберіть Файл> Створити і виберіть 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
:
Ось як виглядає зараз Термінал> Послуги:
Налаштувати 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і ControlAяк $і 0, які переміщують курсор відповідно до початку чи кінця рядка.
Останні дві map
команди вказують vim
на переміщення курсору одним словом за один раз, як ви очікували при натисканні option←та Option→.
Коваджі
Ви помітите, що між моментом натискання ⌘←або ⌘→тим часом, коли курсор насправді рухається , існує невелика затримка .
Майте на увазі, що це працюватиме лише для програм, які шанують CtrlA/ CtrlE, тому ви, можливо, все ж захочете дізнатися конкретні комбінації клавіш кожної програми, яку ви використовуєте в Терміналі.
(Тестовано на macOS Sierra 10.12.4)
⌘
vi
які є абсолютно іншим додатком, ніж термінал.
Звичайно, це можливо.
Перш за все, ви можете скористатись безкоштовним інструментом "DoubleCommand", якщо у вас є клавіатура Windows з клавішами ДОМАШНІЙ / КОНЧІ, щоб змусити себе вести себе так, як слід (початок / кінець рядка).
По-друге, конкретно для терміналу, перейдіть до налаштувань, Клавіатура, відредагуйте піктограму / клавішу, яка виглядає як стрілка, спрямована вліво, виберіть «надіслати текст» і введіть ctrl + a. Готово!
Те саме для кнопки завершення ..
Якщо у вас немає клавіатури ПК, ви можете зробити те ж саме з іншими комбінаціями клавіш.