Цільове використання ctrl + T у bash?


47

Я помітив, що у bash є скорочене скорочення для ctrl+, Tяке замінює останні два символи перед курсором.

Мені цікаво, чому інженери вирішили включити це.

  • Це було успадковано від попередньої конвенції?
  • Або є практична мета, для якої це зазвичай використовується?

13
Не відповідь, але це не bashяк таке, а readline(що bash використовує для введення в запиті). Ваш баш використовує emacsприв'язку ключів; ви можете перейти на vi-прив'язку ключів, якщо ваш редактор "Війни редактора";) sanctum.geek.nz/arabesque/vi-mode-in-bash Тут є кілька "шпаргалок" readline: readline.kablamo.org/emacs .html і readline.kablamo.org/vi.html .
Джон N

13
Історично функції редагування командного рядка в стилі Emacs спочатку були розроблені в Bash, а потім перетворилися на окрему бібліотеку - але це сталося до першого випуску в 1989 році. Найперший запис у цьомуreadline ChangeLog підказках. Таким чином, спочатку ярлик оброблявся в самому Bash, хоч і ненадовго, перш ніж його витягнути, readline- але ярлик прийшов до Bash від Emacs (я не знаю, чи він був винайдений в Emacs чи прийшов з іншого місця).
Стівен Кітт

Відповіді:


27

Це успадковане (за допомогою рядка читання) від GNU Emacs, яке використовує control- Tдля переміщення символів:

https://www.gnu.org/software/emacs/manual/html_node/emacs/Transpose.html

Зауважте, що редактор рядків bash за замовчуванням переходить у режим Emacs, але ви також можете переключити його на режим vi, якщо вам зручніше.


63

Дуже корисно швидко виправити помилки:

sl

стає

ls

з єдиним CtrlT.

Ви також можете використовувати AltTдля заміни слів ( наприклад, при переключенні між serviceі systemctl...).

Історично кажучи, ця CtrlTфункція прийшла до Баша з Emacs, швидше за все. Це, ймовірно, було скопійовано в Emacs з якогось іншого редактора; він був присутній в редакторі електронних книг Стенфорда (див. Основні сторінки E 13) до 1980 року, і Е сильно вплинув на Річарда Сталмана (як описано у Free, як у Freedom ). Він був реалізований у дуже ранніх версіях Bash, до його першого виходу в 1989 році, коли його витягли до readlineбібліотеки, де він живе сьогодні (найперший запис у цьому readline ChangeLogпідказках).


2
Обмін словами був чимось новим та дуже корисним
Mongrel

Надання числового аргументу Alt + T переносить слово за курсором (або раніше) з n -м словом перед цим словом. наприклад: Alt + 2 Alt + T буде модифікувати , word1 word2 word3щоб , word3 word2 word1якщо виконується в word3.
цвіт

@crw, це було б добре, але alt + T не міняється словами на моєму терміналі. Я просто відкриває пункт меню «встановити заголовок».
Філіп Кіркбрід

@PhilipKirkbride це шкода, ваш емулятор термінала позбавляє вас дуже корисного ярлика ...
Стівен Кітт

@PhilipKirkbride має бути опція емулятора терміналу відключити клавіші доступу до меню
Joril

15

Ця комбінація клавіш, прив’язка, успадкована від emacsредактора, призводить до того, що останні два введені символи будуть замінені в кінці рядка, які використовуються в середині рядка, і підміняє символ ліворуч від курсору, і той, що знаходиться під курсор.

Може здатися, що для такої рідко використовуваної функції є прив'язка, яку легко досягти ще кількома ключовими ударами. Старі таймери, такі як я, використовую його досить часто, і це економило час передачі в 300-х модельних бодах, наприкінці 70-х, особливо в середині довгих рядків.

Подібна і більш корисна команда, прив’язана до Alt+ T, переміщує слова ліворуч і праворуч від курсору.

Tбуло обрано тому, що це початковий лист транспозиції . Інші палітурки з подібним походженням включають:

  • Ctrl+ B, щоб повернути назад курсор ліворуч на одну позицію,
    • Alt+ Bпереміщує курсор ліворуч на одне слово,
  • Ctrl+ F, вперед переміщує курсор вправо на одну позицію,
    • Alt+ Fпереміщує курсор праворуч на одне слово,
  • Ctrl+ Aдля Anfang або ante переміщує курсор на початок рядка,
  • Ctrl+ Eдля кінця переміщує курсор до кінця рядка,
  • Ctrl+ N, для наступного , отримує наступний рядок,
  • Ctrl+ Pдля попереднього отримує наступний рядок,
  • Ctrl+ D, для видалення видаляє символ під курсором,
    • Alt+ Dвидаляє слово під курсором,
  • Ctrl+ K, для вбивства , обрізає кінець рядка,
  • Ctrl+ Y, для yank , вставляє вміст буфера обміну,

Ці прив'язки, реалізовані в пакеті для читання GNU, тому доступні у всіх програмах, які використовують його для введення користувачем, наприклад, bash , але також gdb , bc , ...

Деякі з них також доступні в інших середовищах: рядок введення URL-адреси Firefox, поля введення тексту у графічному інтерфейсі OS / X та багато менеджерів вікон на базі X.

Користувачі vim можуть вибрати відповідні прив'язки через змінну середовища.


Так, це чудово для таких, як ми, які іноді забувають, що ми вводимо термінал, а не Emacs; Я все ще потрапляю під час використання текстових віджетів Firefox (як зараз цей), у яких відсутні ці важливі прив’язки. :-(
Toby Speight

Чи є спосіб, як ви могли б поєднати символьні та слово версії відповідних команд у своєму описі? Це дійсно допомагає пам'яті, коли ви визнаєте, що Altі Ctrlверсії цих натискань клавіш пов'язані послідовно.
Toby Speight

@TobySpeight GTK + підтримує альтернативну тему прив'язки клавіш у стилі Emacs, щоб ви могли використовувати деякі з цих палітур у Firefox. C-tоднак, здається, нічого не робить. wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
Candy

@TobySpeight Ви коли-небудь пробували Це все текст! ? Це дозволяє редагувати вміст текстових областей у вибраному вами редакторі.
Стівен Кітт

Дякую @Stephen - я чув про це, але не пробував (поки). Я дотримуюся цього…
Toby Speight

10

Це справжній useufl для викривлення посмішки tpyos wehre yuo haev випадково перенесених піар літер.

(Маючи сильний RSI на обох зап’ястях, я в кінцевому підсумку багато використовую, особисто ...)


2
Мої очі кровоточать
Основні

4

Дуже швидко виправляти друкарські помилки. впливає на негайний 2 коректорний блок перед люксом.

Якщо ви ввели ls-і хочете пробіл між ls& дефісом, ви можете використовувати Ctrl+T

Це працює, якщо у вас є пробіл після дефісу & потім зробіть Ctrl+T

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