Чи можна відобразити домашні та кінцеві ключі під час використання терміналу?


76

homeІ endключі на MacBook Pro можна емулювати за Fn + стрілка вліво або Fn + стрілка вправо. Або коли змінюються певні налаштування, клавіша Command (Apple) замість fn.

Жоден із цих робіт у Терміналі.

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

Як можна стрибати на лінії в Терміналі?

Відповіді:


64

Використовуйте control+ aдля HOME і control+ eдля END в терміналі.

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


2
ідеально! як щодо стрибків за словом? (ctrl-зліва та ctrl-right у windows)
01

@ at01 Я оновив свою відповідь.
Am1rr3zA

40
Хто сконструював ключі для Терміналу?!?!
01

4
Я вважаю за краще використовувати варіант + стрілка ліворуч та опція + стрілка праворуч для переходу до початку слів
Аллан Джикаму

2
Ctrl + a і Ctrl + e працювали для мене, але, не вдаючись до повторного відображення натискань клавіш, як пропонують тут багато, я віддаю перевагу @ AlphaFighter альтернативу Shift + Home та Shift + End (Shift + Fn + ліва стрілка та Shift + Fn + стрілка праворуч на клавіатурі MacBook Pro) для початку та кінця рядка.
Джон Рікс

70

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

  • shift + home → початок рядка, що відповідає клавіші "home" у звичайних терміналах
  • shift + end → кінець рядка, що еквівалентно клавіші "end" у звичайних терміналах

Якщо ви хочете, щоб додому і в кінці працювали "звичайним" способом (і не потрібен зсув), перейдіть до [Меню терміналів] → Налаштування → вкладка "Профілі" (або налаштування в деяких версіях ОС X) → Підкладка Клавіатура.

Потім змініть / додайте ці клавіші, щоб це було наступне "надіслати рядок до оболонки"

  • домашній: \033[H
  • кінець: \033[F

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

Тоді дім і кінець знову працюватимуть як нормально (феу).

Також зауважте, що "alt + ←" і "alt + →" за замовчуванням у термінальній карті до слова ліворуч і слова праворуч, ще одне зручне комбо для запам'ятовування.

У пізніших версіях Mac OS X, якщо екран терміналу зміщується вгору або вниз, коли ви натискаєте клавішу home / end, домашню клавішу, можливо, потрібно буде встановити, \033[1~а клавішу завершити, \033[4~щоб отримати потрібні результати (не потрібен зсув) .

Не соромтесь змінювати цю відповідь, щоб додати більше корисних прив'язок ключів, оскільки це вікі спільноти.


5
\ 033 [H і \ 033 [F для дому та кінця не працював для мене; проте \ 001 і \ 005 так і зробили. Ви можете ввести ці коди в діалоговому вікні редагування, натиснувши ctrl-A і ctrl-E. Я використовую zsh, я не впевнений, чи це має значення.
JW.

shift + home / end зробив роботу
isaias-b

1
Намагаючись розібратися в цьому на деякий час, це врятувало мене!
Пол Грей

Це чудово підходить, коли ви знаходитесь у фактичній термінальній програмі локально. Однак, коли ви ssh'd в машину macOS, вони, здається, більше не працюють. Як обійти це ?!
Ахі Туна

2
@AhiTuna SSH - це просто з'єднання з термінальним сеансом, а не з'єднання з емулятором терміналу. Параметри введення завжди визначаються будь-яким емулятором терміналу, який ви використовуєте.
Бахсау

39

Це здається, що ви шукаєте певної допомоги з використанням рядка читання та перенесення тексту, ось божевільний список матеріалів клавіатури, змінених з: http://www.math.utah.edu/docs/info/features_7.html#SEC45

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

Ctrlk Убити текст з поточного положення курсору до кінця рядка.
Escd Убийте від курсору до кінця поточного слова або, якщо між словами, до кінця наступного слова.
EscDel Убийте від курсору початок попереднього слова або, якщо між словами, до початку попереднього слова.
Ctrlw Убити з курсору на попередній пробіл. Це інакше, ніж EscDelCtrla через те, що межі слів різняться.

Ctrld Видаліть символ під курсором.
Ctrl_ Скасуйте останнє, що ви зробили. Ви можете скасувати весь шлях до порожнього рядка.

І ось, як повернути текст назад у рядок. Янки - це означає скопіювати останній раз убитий текст з буфера вбивства.

Ctrly Поверніть останній вбитий текст назад у буфер за курсором.
Escy Оберніть кільце і вставте новий верх. Ви можете це зробити лише в тому випадку, якщо попередньою командою є Ctrlyабо Escy.


це неоціненно - дякую - я б хотів, щоб він був доступний як файл для друку десь!
matt b

Я усвідомлюю, що це не зовсім "оптимізовано", але; Файл -> Друк?
Джейсон Салаз

Нічого собі, це супер незручно в порівнянні з терміном на Linux ... будь-який спосіб переробити цю дурницю?
btk

Так, спробуйте сторінку Bash man. (Я сам не знаю, як це зробити.)
SilverWolf

6

Для тих, хто вважає за краще використовувати клавіші зі стрілками, натискання fnShift+ Left Arrowвідведе вас додому в командному рядку. Так само fnShift+ Right Arrowдоведе вас до кінця.


6

Ви можете переміщати по одному слову одночасно з 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 ~
  • ⇧⇟: Прокрутіть сторінку вниз


4

Зображення homeта endклавіші з потрібною функціональністю легко вирішать проблему.

Було розміщено багато відповідей, але якщо ви користуєтесь zsh, ви можете встановити home:

\001

і встановити end:

\005

натиснувши налаштування - профіль - клавіатура.


Я також спробував це, але тоді він виходить з дому та кінця в vim :( Ви можете нанести на карту те, що запропонував Альфредо Кардільяно: Ключ: ↖ Дія: \ 033OH Ключ: ↗ Дія: \ 033OF
curlingdude

Це прекрасно працювало для мене! Я використовую тільки Nano, тому тут жодних проблем.
Стерлінг Борн

Так, це працює, але загалом не вирішити проблему. Я переїхав з Баша в ЗШ і я використав FN-SHIFT-LEFT / RIGHT .. це вирішити мою проблему: stackoverflow.com/questions/8638012 / ...
VLK

1

Це найефективніший спосіб змусити його працювати також з vim. Перейдіть до терміналу -> Налаштування -> Профілі -> Клавіатура та додайте:

Ключ: ↖ Дія: \ 033OH

Ключ: ↗ Дія: \ 033OF


1

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

Зауважте, що ця прив'язка ключа vim анулює всі гарячі клавіші, які ви дізналися з інших відповідей.


0

ось список у друкованому вигляді за бажанням :)

http://pastebin.com/uCqwn7qs

Я також виправив "помилку" в описі. Це те, що ви могли спочатку прочитати в інструкції:

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

Це погано пахне помилкою вирізання та вставки, оскільки обидва часткові речення говорять про одне і те ж. Якщо говорити з простої логіки, перша половина фактично повинна читати "від курсору до початку поточного слова".


0

... а як же стрибати по слову? (ctrl-ліворуч і ctrl-право у вікнах)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.