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

Клавиши home и end на MacBook Pro можно эмулировать с помощью клавиши fn + left или fn + right. Или при изменении некоторых настроек с помощью клавиши Command (Apple) вместо fn.

Ничего из них не работает в терминале.

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

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

61 голос | спросил at01 28 AMpThu, 28 Apr 2011 01:30:25 +040030Thursday 2011, 01:30:25

11 ответов


55

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

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

ответил Am1rr3zA 28 AMpThu, 28 Apr 2011 01:33:22 +040033Thursday 2011, 01:33:22
52

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

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

Если вы хотите, чтобы дома и в конце работал «нормальный» способ (и не требовал сдвига), перейдите в меню [Terminal menu] â † «Preferences â †» Profiles (или настройки в некоторых версиях OS X) â † «Подкладка« Клавиатура ».

Затем измените /добавьте эти ключи в следующую строку «send string to shell»

  • home: \033[H
  • end: \033[F

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

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

Также обратите внимание, что «alt + â †» и «alt + â † '» по умолчанию в терминальной карте относятся к слову left and word right, еще одна удобная комбо для запоминания.

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

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

ответил Am1rr3zA 28 AMpThu, 28 Apr 2011 01:33:22 +040033Thursday 2011, 01:33:22
39

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

Ctrl a Переместить в начало строки.
Ctrl e Переместить в конец строки.
Esc f Переместить вперед слово.
Esc b Переместить назад a word.
Ctrl l Очистить экран, перепечатывая текущую строку вверху.

Ctrl k Убейте текст от текущей позиции курсора до конца строки.
Esc d Убейте от курсора до конца текущего слова , или между словами, до конца следующего слова.
Esc Del Убейте от курсора начало предыдущего слова, или между словами, до начала предыдущего слова.
Ctrl w Убейте от курсора до предыдущего пробела. Это отличается от Esc Del Ctrl a , потому что границы слов отличаются.

Ctrl d Удалите символ под курсором.
Ctrl _ Отмените последнее, что вы сделали. Вы можете отменить все пути назад к пустой строке.

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

Ctrl y Янки последнего убитого текста обратно в буфер на курсор.
Esc y Поверните кольцо убийства и вытащите новый верх. Вы можете сделать это только в том случае, если предыдущая команда Ctrl y или Esc y .

ответил ConstantineK 28 AMpThu, 28 Apr 2011 01:48:35 +040048Thursday 2011, 01:48:35
6

Для тех, кто предпочитает использовать клавиши со стрелками, нажатие fn Shift + Стрелка влево приведет вас домой в командной строке. Аналогично, fn Shift + Стрелка вправо приведет вас к концу.

ответил pauln 11 Jpm1000000pmFri, 11 Jan 2013 20:17:44 +040013 2013, 20:17:44
5

Вы можете перемещать одно слово за раз с опцией + left и + right . . р>

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

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

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

Перейдите в меню терминала â † 'Настройки â †' Настройки /вкладка Профиль â † 'Подкладка на клавиатуре.

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

  • â † -︎: Отправить текст: \ 033 [H
  • â ‡ §â † -︎: прокрутите страницу вверх
  • â † ~︎: Отправить текст: \ 033 [F
  • â ‡ §â † ~︎: прокрутить вниз

Примечание: \ 033 вводится в поле «текст для отправки» в диалоговом окне «Редактирование», нажимая клавишу эвакуации.

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

  • â ‡ ž: Отправить текст: \ 033 [5 ~
  • â ‡ §â ‡ ž: прокрутка страницы вверх
  • â ‡ Ÿ: Отправить текст: \ 033 [6 ~
  • â ‡ §â ‡ Ÿ: прокрутка страницы вниз
ответил Terry N 19 MaramWed, 19 Mar 2014 05:20:14 +04002014-03-19T05:20:14+04:0005 2014, 05:20:14
3

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

Сдвиг Главная - Начало строки
Shift Конец - Конец строки

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

ответил Alpha Fighter 13 J0000006Europe/Moscow 2013, 02:24:14
2

Сопоставление ключей home и end с требуемой функциональностью легко решает проблему.

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

\001

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

\005

, нажав preference - profile - keyboard.

ответил Dean Seo 4 FebruaryEurope/MoscowbSat, 04 Feb 2017 13:10:20 +0300000000pmSat, 04 Feb 2017 13:10:20 +030017 2017, 13:10:20
1

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

Ключ: â † - Действие: \ 033OH

Ключ: â † - Действие: \ 033OF

ответил Alfredo Cardigliano 28 WedEurope/Moscow2016-12-28T14:40:02+03:00Europe/Moscow12bEurope/MoscowWed, 28 Dec 2016 14:40:02 +0300 2016, 14:40:02
1

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

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

ответил Fxyang 6 Jpm1000000pmFri, 06 Jan 2017 18:55:03 +030017 2017, 18:55:03
0

вот список в печатной форме, если хотите:)

http://pastebin.com/uCqwn7qs

Я также исправил «ошибку» в описании. Это то, что вы могли первоначально прочитать в инструкциях:

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

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

ответил the_helping_hand 3 J000000Thursday14 2014, 17:29:56
0
  

... как насчет прыжка по слову? (ctrl-left и ctrl-right в окнах)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
ответил calu 7 52014vEurope/Moscow11bEurope/MoscowFri, 07 Nov 2014 19:11:31 +0300 2014, 19:11:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132