Клавиши Homeи Endна MacBook Pro можно эмулировать с помощью Fn+ ←или f Fn+ →. Или при изменении определенных настроек с помощью ⌘ Commandключа вместо Fn.
Ни один из них не работает в Терминале.
Поскольку мне часто нужно перейти к началу или концу строки, а также я хотел бы перейти вперед или назад по слову.
Как я могу прыгать по строке в Терминале?
Используйте control+ aдля HOME и control+ eдля END в Терминале.
Также используйте esc+ fдля перехода к началу следующего слова и esc+ bдля перехода к началу текущего слова. (Вы должны быть осторожны с текущим и следующим)
Чтобы ответить на вопрос о том, как получить начало или конец строки, оказывается, что Терминал по умолчанию сопоставляет с ней эти ключи:
Если вы хотите, чтобы дом и конец работали «нормально» (и не требовали смены), перейдите на вкладку «Клавиатура» в настройках профиля терминала:
[Меню терминала] → Настройки → вкладка Профили (или настройки в некоторых версиях 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 + →» по умолчанию в терминале сопоставляются со словом слева и словом справа, еще одна удобная комбинация, которую нужно запомнить.
Не стесняйтесь изменять этот ответ, чтобы добавить более полезные привязки клавиш, так как это вики сообщества.
bindkey "\033[H" beginning-of-line; bindkey "\033[F" end-of-line
Похоже, вы ищете помощи, используя 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.
Отображение homeи endклавиши с нужным вам функционалом легко решат проблему.
Было опубликовано много ответов, но если вы используете zsh
, вы можете установить home:
\001
и установите end:
\005
нажав предпочтения-профиль-клавиатура.
Вы можете перемещать по одному слову с помощью option+ leftи option+ right.
Что касается использования homeи end, привязки Терминала по умолчанию следующие:
Во многих других терминальных приложениях (на нескольких платформах) эти модифицированные и немодифицированные пары меняются местами (т. е. обнажены homeи endиспользуются для перехода по текущей строке, а модифицированные версии (будь то с помощью shiftили как-то еще) используются для навигации по буферу прокрутки) ). Вы можете изменить привязки терминала, чтобы они работали таким образом, если хотите, выполнив следующие действия:
Перейдите в меню «Терминал» → «Настройки» → вкладка «Настройки/Профиль» → дополнительная вкладка «Клавиатура».
Затем измените пары «ключ-действие» следующим образом:
Примечание. \033 вводится в поле текста для отправки в диалоговом окне «Правка» нажатием клавиши выхода.
Находясь там, вы можете аналогичным образом поменять местами привязки модифицированных и немодифицированных page upи page down, чтобы все было согласовано: нажатие клавиши навигации с shiftпредставляет команду для самого терминала (для навигации по буферу прокрутки назад, как документ), а нажатие без отправляет нажатие клавиши всему, что работает внутри него (например bash
, less
, nano
, screen
, и т. д.). Пары ключ-действие для этого:
Для тех, кто предпочитает использовать клавиши со стрелками, нажатие fnShift+ Left Arrowвернет вас домой в командной строке. Точно так же fnShift+ Right Arrowдоведет вас до конца.
Это самый эффективный способ заставить его работать и с vim. Перейдите в Терминал -> Настройки -> Профили -> Клавиатура и добавьте:
Клавиша: ↖ Действие: \033OH
Ключ: ↗ Действие: \033OF
Другие ответы великолепны и более портативны, но вот «способ OS X» для обычной клавиатуры (что противоположно многим другим терминалам). Попробуйте следующее:
ShiftHome- Начало строки
ShiftEnd- Конец строки
Я хотел бы предложить альтернативное решение этой проблемы. Это прекрасно работает, если вы являетесь пользователем vi. Связывание клавиш Vim в терминале позволяет использовать ваш терминал в стиле vim. Вы можете сделать это, набрав set -o vi
терминал и не стесняясь вставлять его .bash_profile
, если хотите. После этого ваш терминал фактически станет редактором vim. Вы можете использовать esc
ключ, чтобы перейти в командный режим и прогуляться в vim. Например, 0
доводит вас до начала и $
доводит вас до конца. Вы также можете использовать I
и A
для перехода к началу и концу и сразу же перейти в режим редактирования. w
и b
позвольте вам двигаться вперед и назад одним словом. А если попытаться перейти в визуальный режим, нажавv
, вам будет предоставлен редактор vim, и текст, который у вас будет, когда вы покинете этот редактор, будет выполнен в терминале.
Имейте в виду, что эта привязка клавиш vim аннулирует все горячие клавиши, которые вы узнали из других ответов.
вот список в печатном виде, по желанию :)
Я также исправил "ошибку" в описании. Вот что вы могли изначально прочитать в инструкции:
ESC-d Удалить от курсора до начала предыдущего слова или, если между словами, до начала предыдущего слова.
Это плохо пахнет ошибкой вырезания и вставки, поскольку оба неполных предложения говорят об одном и том же. Исходя из простой логики, первая половина должна фактически читаться «от курсора до начала текущего слова».
... как насчет того, чтобы прыгать по словам? (ctrl-влево и ctrl-вправо в окнах)
# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
at01
Am1rr3zA
boehj
at01
Аллан Джикаму
Джон Рикс
Баксау
веберк2
Денис Колодин