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?

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).


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.


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 ...)


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.