Zamierzone użycie Ctrl + T w bashu?

47

Zauważyłem, że bash ma skrót do ctrl+, Tktóry zamienia ostatnie dwa znaki przed kursorem.

Zastanawiam się, dlaczego inżynierowie postanowili to uwzględnić.

  • Czy został odziedziczony z poprzedniej konwencji?
  • Czy jest jakiś praktyczny cel, do którego jest to powszechnie używane?
Philip Kirkbride
źródło
13
Nie jest to odpowiedź, ale nie jest to bashjako taka, ale readline(której bash używa do wprowadzania danych w monicie). Twój bash używa emacspowiązań klawiszy; możesz zmienić powiązania klawiszy vi, jeśli jesteś stronnikiem edytora Wars;) sanctum.geek.nz/arabesque/vi-mode-in-bash Istnieje tutaj kilka „ ściągówreadline: readline.kablamo.org/emacs .html i readline.kablamo.org/vi.html .
John N,
13
Historycznie rzecz biorąc, Emacs stylu wiersza polecenia edycji funkcje zostały pierwotnie opracowane w bash, a następnie przekształcony w oddzielnej bibliotece - ale to się stało przed pierwszym wydaniu w roku 1989. Pierwszy wpis w tychreadline ChangeLog wskazówek na to. Więc pierwotnie skrót był obsługiwany w samym Bashu, choć krótko, zanim został wyciągnięty do readline- ale skrót przyszedł do Basha od Emacsa (nie wiem, czy został wymyślony w Emacsie, czy pochodził skądinąd).
Stephen Kitt

Odpowiedzi:

63

Bardzo przydatne jest szybkie naprawianie literówek:

sl

staje się

ls

z jednym CtrlT.

Można użyć AltTdo wymiany słów zbyt ( np podczas przełączania między servicei systemctl...).

Historycznie rzecz biorąc, ta CtrlTfunkcja pojawiła się w Bash od Emacsa z dużym prawdopodobieństwem. Prawdopodobnie został skopiowany do Emacsa z innego edytora; był obecny w edytorze E. Stanforda (patrz Essential E strona 13) do 1980 r., a E. miał silny wpływ na Richarda Stallmana (jak opisano w Wolnym jak w Wolności ). Został zaimplementowany w bardzo wczesnych wersjach Bash, przed jego pierwszym wydaniem w 1989 roku, kiedy został wyciągnięty do readlinebiblioteki, w której obecnie mieszka (jest to pierwszy wpis w readline ChangeLogpodpowiedziach na ten temat).

Stephen Kitt
źródło
2
Zamiana słów była czymś nowym i bardzo pomocnym
Mongrel,
Podanie argumentu numerycznego dla Alt + T transponuje słowo w (lub przed) kursorem n-tym słowem przed tym słowem. np .: Alt + 2 Alt + T zmieni word1 word2 word3się, word3 word2 word1jeśli zostanie wykonane o word3.
crw
@crw byłoby miło, ale alt + T nie zamienia słów na moim terminalu. Właśnie otworzyłem punkt menu „ustaw tytuł”.
Philip Kirkbride
@PhilipKirkbride szkoda, emulator terminalu pozbawia cię bardzo przydatnego skrótu ...
Stephen Kitt
@ PhilipKirkbride powinna być opcja emulatora terminala, aby wyłączyć klawisze dostępu do menu
Joril
15

Ta kombinacja klawiszy, powiązanie odziedziczone po emacsedytorze, powoduje zamianę 2 ostatnich wpisanych znaków na końcu linii, użytych w środku linii, zamienia znak po lewej stronie kursora i znak pod kursor.

Wydaje się, że próżno jest mieć powiązanie z tak rzadko używaną funkcją, którą można łatwo uzyskać za pomocą kilku kolejnych naciśnięć klawiszy. Stare zegary, takie jak ja, używam go dość często i oszczędzały czas transmisji w czasach modemu 300 bodów, pod koniec lat 70., szczególnie w środku długich linii.

Podobne i bardziej przydatne polecenie, powiązane z Alt+ T, przenosi słowa po lewej i po prawej stronie kursora.

Tzostał wybrany, ponieważ jest to pierwsza litera transpozycji . Inne wiązania o podobnym pochodzeniu obejmują:

  • Ctrl+ B, do tyłu , przesuwa kursor w lewo o jedną pozycję,
    • Alt+ Bprzesuwa kursor w lewo o jedno słowo,
  • Ctrl+ F, do przodu , przesuwa kursor w prawo o jedną pozycję,
    • Alt+ Fprzesuwa kursor w prawo o jedno słowo,
  • Ctrl+ A, w przypadku Anfang lub ante , przesuwa kursor na początek linii,
  • Ctrl+ Edla końca przesuwa kursor na koniec linii,
  • Ctrl+ N, dla następnego , pobiera następny wiersz,
  • Ctrl+ P, dla poprzedniego , pobiera następny wiersz,
  • Ctrl+ D, aby usunąć , usuwa znak pod kursorem,
    • Alt+ Dusuwa słowo pod kursorem,
  • Ctrl+ K, dla zabicia , odcina koniec linii,
  • Ctrl+ Y, dla yank , wkleja zawartość schowka,

Wiązania te, zaimplementowane w pakiecie readline GNU, są zatem dostępne we wszystkich programach, które używają go do wprowadzania danych przez użytkownika, takich jak bash , ale także gdb , bc , ...

Niektóre z nich są również dostępne w innych środowiskach: wiersz wprowadzania adresu URL przeglądarki Firefox, pola wprowadzania tekstu w interfejsie graficznym OS / X oraz wiele menedżerów okien opartych na X.

Użytkownicy vim mogą wybrać odpowiednie powiązania za pomocą zmiennej środowiskowej.

chqrlie
źródło
Tak, jest świetny dla takich jak my, którzy czasami zapominają, że piszemy w terminalu zamiast w Emacsie; Nadal jestem przyłapany na używaniu widżetów textarea Firefoksa (takich jak ten teraz), w których brakuje tych ważnych powiązań. :-(
Toby Speight
Czy jest jakiś sposób na sparowanie wersji znaków i słów powiązanych poleceń w opisie? To naprawdę pomaga pamięci, gdy rozpoznasz, że Alti Ctrlte kombinacje klawiszy są powiązane w spójny sposób.
Toby Speight,
@TobySpeight GTK + obsługuje alternatywny motyw klawiszowy w stylu Emacsa, dzięki czemu można używać niektórych z tych skrótów klawiszowych w przeglądarce Firefox. C-twydaje się jednak, że nic nie robi. wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
Candy Gumdrop
@TobySpeight czy kiedykolwiek próbowałeś It's All Text! ? Pozwala edytować zawartość obszarów tekstowych w wybranym edytorze.
Stephen Kitt,
Dzięki @Stephen - słyszałem o tym, ale nie próbowałem (jeszcze). Pójdę za tym ...
Toby Speight,
10

Jest bardzo użyteczny do korygowania drobnych tpios, które zostały przypadkowo zmiażdżone piary listów.

(Mając ciężki RSI w obu nadgarstkach, często używam tego osobiście ...)

puszysty
źródło
2
Moje oczy krwawią
Basic
4

Bardzo szybko naprawiam literówki. wywołuje natychmiastowy 2 blok korektora przed kursem.

Jeśli wpiszesz ls-i chcesz spację między ls& łącznikiem, możesz użyć Ctrl+T

Działa to, jeśli masz spację po łączniku, a następnie zrób Ctrl+T

Kundel
źródło