Можно ли сопоставить домашний и конечный ключи при использовании терминала?

Клавиши Homeи Endна MacBook Pro можно эмулировать с помощью Fn+ или f Fn+ . Или при изменении определенных настроек с помощью ⌘ Commandключа вместо Fn.

Ни один из них не работает в Терминале.

Поскольку мне часто нужно перейти к началу или концу строки, а также я хотел бы перейти вперед или назад по слову.

Как я могу прыгать по строке в Терминале?

Ответы (11)

Используйте control+ aдля HOME и control+ eдля END в Терминале.

Также используйте esc+ fдля перехода к началу следующего слова и esc+ bдля перехода к началу текущего слова. (Вы должны быть осторожны с текущим и следующим)

Отлично! а как насчет прыгать по словам? (ctrl-влево и ctrl-вправо в окнах)
@ at01 at01 Я обновил свой ответ.
Еще один очень удобный — Ctrl+l для очистки экрана.
Кто разработал ключи для Терминала?!?!
Я предпочитаю использовать опции + стрелка влево и опция + стрелка вправо для перехода к началу слов.
У меня работали Ctrl+a и Ctrl+e, но, не прибегая к переназначению нажатий клавиш, как это предлагается многими здесь, я предпочитаю альтернативу @AlphaFighter Shift+Home и Shift+End (Shift+Fn+стрелка влево и Shift+Fn +стрелка вправо на клавиатуре MacBook Pro) для начала и конца строки.
Это НЕ отвечает на вопрос. Правильный ответ пришел от @rogerdpack.
@JohnRix Мне тоже нравятся повторяющиеся травмы от перенапряжения.
Это был последний день, когда я использовал Mac. Спасибо всем.

Это можно установить в настройках Terminal.app.

Контекст

Чтобы ответить на вопрос о том, как получить начало или конец строки, оказывается, что Терминал по умолчанию сопоставляет с ней эти ключи:

  • shift+home → начало строки, что эквивалентно клавише «домой» в обычных терминалах
  • shift+end → конец строки, эквивалент клавиши «конец» в обычных терминалах

инструкции

Если вы хотите, чтобы дом и конец работали «нормально» (и не требовали смены), перейдите на вкладку «Клавиатура» в настройках профиля терминала:

[Меню терминала] → Настройки → вкладка Профили (или настройки в некоторых версиях OS X) → дополнительная вкладка Клавиатура

Затем измените/добавьте эти ключи, чтобы они были следующей «отправить строку в оболочку» . Используйте код для вашей оболочки, Bash или Zsh.

macOS изменила оболочку по умолчанию с Bash на Zsh в MacOS Catalina (v10.15) и более поздних версиях (BigSur и Monterey). Инструкции для Bash и Zsh различаются.

Зш

  • дом:\001
  • конец:\005

Вы можете ввести эти коды в диалоговом окне редактирования, нажимая ctrl-Aдля /001и ctrl-Eдля /005. Спасибо @JW за информацию о Zsh.

Другой, несвязанный вариант сопоставления ключей home/end для MacOS Catalina (v10.15) и более поздних версий (BigSur и Monterey) — использовать виджеты bindkey :

sudo echo 'bindkey "\033[H" beginning-of-line; bindkey "\033[F" end-of-line' >> ~/.zshrc

Баш

  • дом:\033[H
  • конец:\033[F

Вы можете получить \033часть, нажав клавишу escape в диалоговом окне редактирования, если вам нужно ее добавить.

В более поздних версиях Mac OS X, если экран терминала смещается вверх или вниз при нажатии клавиши домой/конец, может потребоваться установить клавишу «Домой» \033[1~и клавишу «Конец », \033[4~чтобы получить желаемые результаты (сдвиг не требуется). .

Заключение

Затем home и end снова будут работать как обычно (тьфу).

Также обратите внимание, что «alt + ←» и «alt + →» по умолчанию в терминале сопоставляются со словом слева и словом справа, еще одна удобная комбинация, которую нужно запомнить.

Не стесняйтесь изменять этот ответ, чтобы добавить более полезные привязки клавиш, так как это вики сообщества.

\033[H и \033[F для дома и конца не работали для меня; однако \001 и \005 сделали. Вы можете ввести эти коды в диалоговом окне редактирования, нажав ctrl-A и ctrl-E. Я использую zsh, я не уверен, что это имеет значение.
смена + домой / конец сделал работу
Я пытался понять это некоторое время, это спасло меня!
Это отлично работает, когда вы находитесь в фактическом терминальном приложении локально. Однако, когда вы подключаетесь по ssh к машине с macOS, они больше не работают. Как это обойти?!
@AhiTuna SSH — это просто подключение к сеансу терминала, а не подключение к эмулятору терминала. Параметры ввода всегда определяются используемым вами эмулятором терминала.
Добавьте их в свой .zshrc:bindkey "\033[H" beginning-of-line; bindkey "\033[F" end-of-line
У меня сработало, но обратите внимание, что «Отправить текст:» появляется в раскрывающемся списке «Действие» вместо «Отправить строку в оболочку» - я использую Catalina.. (Также это должен быть принятый ответ, молодец)
Это определенно должен быть принятый ответ! Спасибо.
Это правильный ответ. Позор яблоку еще раз.
Это сработало для меня в Монтерее
Также убедитесь, что для параметра «Модификатор» установлено значение «Нет» при добавлении этих привязок клавиш. По умолчанию установлено значение «^ Control».

Похоже, вы ищете помощи, используя readline и bash, вот безумный список клавиатур, измененных из: http://www.math.utah.edu/docs/info/features_7.html#SEC45

CtrlaПерейти к началу строки.
CtrleПереход к концу строки.
EscfПереместиться вперед на слово.
EscbПереместиться назад на слово.
CtrllОчистите экран, перепечатав текущую строку вверху.

CtrlkУничтожить текст от текущей позиции курсора до конца строки.
EscdKill от курсора до конца текущего слова или, если между словами, до конца следующего слова.
EscDelKill от курсора до начала предыдущего слова или, если между словами, до начала предыдущего слова.
CtrlwKill от курсора до предыдущего пробела. Это отличается от EscDelCtrla того, что границы слов различаются.

CtrldУдалить символ под курсором.
Ctrl_Отмените последнее, что вы сделали. Вы можете отменить все обратно на пустую строку.

И вот как вставить текст обратно в строку. Поддерживание означает копирование самого последнего уничтоженного текста из буфера уничтожения.

CtrlyВставить последний уничтоженный текст обратно в буфер в месте курсора.
EscyПоверните стопорное кольцо и дерните новую крышку. Вы можете сделать это, только если предыдущая команда Ctrlyили Escy.

это бесценно - спасибо - я бы хотел, чтобы это было доступно где-нибудь в виде файла для печати!
Я понимаю, что это не совсем "оптимизировано", но; Файл -> Печать?
Вау, это очень неудобно по сравнению с термином в Linux ... можно ли переназначить эту ерунду?
Да, попробуйте справочную страницу Bash. (Я не знаю, как это сделать сам.)

Отображение homeи endклавиши с нужным вам функционалом легко решат проблему.

Было опубликовано много ответов, но если вы используете zsh, вы можете установить home:

\001

и установите end:

\005

нажав предпочтения-профиль-клавиатура.

Я тоже пробовал это, но затем он ломает Home и End в vim :( Вы можете сопоставить их с тем, что предложил Альфредо Кардильяно: Клавиша: ↖ Действие: \033OH Клавиша: ↗ Действие: \033OF
Это отлично сработало для меня! Я использую только Nano, так что тут проблем нет.
Да, это работает, но не решает проблему в целом. Я перешел с bash на zsh и использовал FN-SHIFT-LEFT/RIGHT. Это решило мою проблему: stackoverflow.com/questions/8638012/…

Вы можете перемещать по одному слову с помощью option+ leftи option+ right.

Что касается использования homeи end, привязки Терминала по умолчанию следующие:

  • shift+ home→ перейти к началу строки
  • shift+ end→ перейти в конец строки
  • home→ прокрутить вверх буфера обратной прокрутки
  • end→ прокрутить до конца буфера прокрутки назад

Во многих других терминальных приложениях (на нескольких платформах) эти модифицированные и немодифицированные пары меняются местами (т. е. обнажены homeи endиспользуются для перехода по текущей строке, а модифицированные версии (будь то с помощью shiftили как-то еще) используются для навигации по буферу прокрутки) ). Вы можете изменить привязки терминала, чтобы они работали таким образом, если хотите, выполнив следующие действия:

Перейдите в меню «Терминал» → «Настройки» → вкладка «Настройки/Профиль» → дополнительная вкладка «Клавиатура».

Затем измените пары «ключ-действие» следующим образом:

  • ↖︎: Отправить текст: \033[H
  • ⇧↖︎: прокрутить вверх
  • ↘︎: Отправить текст: \033[F
  • ⇧↘︎: прокрутить вниз

Примечание. \033 вводится в поле текста для отправки в диалоговом окне «Правка» нажатием клавиши выхода.

Находясь там, вы можете аналогичным образом поменять местами привязки модифицированных и немодифицированных page upи page down, чтобы все было согласовано: нажатие клавиши навигации с shiftпредставляет команду для самого терминала (для навигации по буферу прокрутки назад, как документ), а нажатие без отправляет нажатие клавиши всему, что работает внутри него (например bash, less, nano, screen, и т. д.). Пары ключ-действие для этого:

  • ⇞: Отправить текст: \033[5~
  • ⇧⇞: прокрутить страницу вверх
  • ⇟: Отправить текст: \033[6~
  • ⇧⇟: прокрутить страницу вниз

Для тех, кто предпочитает использовать клавиши со стрелками, нажатие fnShift+ Left Arrowвернет вас домой в командной строке. Точно так же fnShift+ Right Arrowдоведет вас до конца.

Это самый эффективный способ заставить его работать и с vim. Перейдите в Терминал -> Настройки -> Профили -> Клавиатура и добавьте:

Клавиша: ↖ Действие: \033OH

Ключ: ↗ Действие: \033OF

Другие ответы великолепны и более портативны, но вот «способ OS X» для обычной клавиатуры (что противоположно многим другим терминалам). Попробуйте следующее:

ShiftHome- Начало строки
ShiftEnd- Конец строки

Из http://www.greenend.org.uk/rjk/tech/macbits.html

Я хотел бы предложить альтернативное решение этой проблемы. Это прекрасно работает, если вы являетесь пользователем vi. Связывание клавиш Vim в терминале позволяет использовать ваш терминал в стиле vim. Вы можете сделать это, набрав set -o viтерминал и не стесняясь вставлять его .bash_profile, если хотите. После этого ваш терминал фактически станет редактором vim. Вы можете использовать escключ, чтобы перейти в командный режим и прогуляться в vim. Например, 0доводит вас до начала и $доводит вас до конца. Вы также можете использовать Iи Aдля перехода к началу и концу и сразу же перейти в режим редактирования. wи bпозвольте вам двигаться вперед и назад одним словом. А если попытаться перейти в визуальный режим, нажавv, вам будет предоставлен редактор vim, и текст, который у вас будет, когда вы покинете этот редактор, будет выполнен в терминале.

Имейте в виду, что эта привязка клавиш vim аннулирует все горячие клавиши, которые вы узнали из других ответов.

вот список в печатном виде, по желанию :)

http://pastebin.com/uCqwn7qs

Я также исправил "ошибку" в описании. Вот что вы могли изначально прочитать в инструкции:

ESC-d Удалить от курсора до начала предыдущего слова или, если между словами, до начала предыдущего слова.

Это плохо пахнет ошибкой вырезания и вставки, поскольку оба неполных предложения говорят об одном и том же. Исходя из простой логики, первая половина должна фактически читаться «от курсора до начала текущего слова».

... как насчет того, чтобы прыгать по словам? (ctrl-влево и ctrl-вправо в окнах)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word