Як зробити так, щоб ⌘ ← і ⌘ → працював для домашнього та кінцевого комбінацій для терміналу?


21

Чому fn- - (або інші) роблять будинок / кінець у Терміналі, а - працює скрізь?

Тож для того, щоб було зрозуміло, питання полягає в тому, як змусити Термінал взяти Command+ і додому, і в кінці?

Відповіді:


21

Як би зручно це було, Термінал не може легко надати потрібну функціональність.

Причина полягає в тому, що програми, що працюють у Terminal, мають різні правила переміщення курсору на початок / кінець рядка, наприклад:

  • bash(та інші оболонки) використовують CtrlAіCtrlE
  • viвикористання 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

  1. У Терміналі перейдіть до Налаштування ...> Налаштування> [ваш активний профіль]> Клавіатура: введіть тут опис зображення

  2. Натисніть +, виберіть "Курсор вліво", "Контроль-Зсув" як модифікатор та дію "Надіслати текст:". Потім натисніть CtrlA( \001з'явиться в текстовому полі) і підтвердьте OK: введіть тут опис зображення

    (У попередній версії цієї відповіді я використовував "Shift" як модифікатор. Я помітив, що це налаштування суперечить shift, що показує попередню вкладку "Термінал", якщо ви не відпустите негайно. Використовуючи "Control-Shift" виправляє це.)

  3. Тепер додайте комбінацію клавіш для "Курсор вправо", але натисніть CtrlE( \005з'явиться в текстовому полі). Підтвердити за допомогою OK.

  4. Відкрийте Автоматизатор (наприклад, натисніть, spaceщоб відкрити прожектор, і введіть Автоматизатор ), виберіть Файл> Створити і виберіть Service:

    введіть тут опис зображення

  5. Перетягніть Run AppleScriptна праву панель: введіть тут опис зображення

  6. Введіть такий сценарій:

    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:

    введіть тут опис зображення

  7. Повторіть кроки 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:

    введіть тут опис зображення

  8. Ось як виглядає зараз Термінал> Послуги:

    введіть тут опис зображення

Налаштувати viна честь CtrlAіCtrlE

  1. Відкрийте .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)


3
Дякую за детальну відповідь, чи є клопотання про те, щоб у наступний редизайн Apple включила кнопку додому / кінця :-)
Джекі

Я радий, що можу допомогти.
1212

Вау .. все це, щоб отримати
вигадливий

Це хороша відповідь, але її можна було б покращити, виключивши всю сторонніх відомостей, про viякі є абсолютно іншим додатком, ніж термінал.
аксіопісти

1
Це чудова хитрість. Мені також вдалося запустити AppleScript, надіславши коди клавіш для "Головна" та "Кінець": "код ключа 115" та "код ключа 119" "
Кеймон

2

Звичайно, це можливо.

Перш за все, ви можете скористатись безкоштовним інструментом "DoubleCommand", якщо у вас є клавіатура Windows з клавішами ДОМАШНІЙ / КОНЧІ, щоб змусити себе вести себе так, як слід (початок / кінець рядка).

По-друге, конкретно для терміналу, перейдіть до налаштувань, Клавіатура, відредагуйте піктограму / клавішу, яка виглядає як стрілка, спрямована вліво, виберіть «надіслати текст» і введіть ctrl + a. Готово!

Те саме для кнопки завершення ..

Якщо у вас немає клавіатури ПК, ви можете зробити те ж саме з іншими комбінаціями клавіш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.