bashでctrl + Tを使用する予定はありますか?


47

bashには、カーソルの前の最後の2文字を交換するctrl+のショートカットがあることに気付きましたT

なぜエンジニアがこれを含めることにしたのかと思います。

  • 以前のコンベンションから継承されましたか?
  • または、これが一般的に使用される実用的な目的はありますか?

13
答えではありませんが、これはそうbashではありませんが、readline(bashはプロンプトでの入力に使用します)。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スタイルのコマンドライン編集機能は、当初バッシュで開発され、その後、別のライブラリになった-それはで1989年の非常に最初のエントリの最初のリリース前に起こったこの時のヒント。そのため、最初はショートカットは簡単ではありますが、引き出される前にBash自体で処理されましたが、ショートカットはEmacsからBashに到達しました(Emacsで発明されたのか、他の場所から来たのかわかりません)。readline ChangeLogreadline
スティーブンキット

回答:



63

タイプミスをすばやく修正することは非常に便利です:

sl

になる

ls

単一のCtrlT

AltT単語を交換するためにも使用できます(たとえばservicesystemctl...を切り替える場合)。

歴史的に言えば、このCtrlT機能はおそらくEmacsからBashに導入されました。他のエディターからEmacsにコピーされた可能性があります。1980年までにスタンフォード大学のEエディター(エッセンシャルEページ13を参照)に存在し、Eはリチャードストールマンに強い影響を与えました(Free as in Freedomで説明されています)。これは、1989年の最初のリリースの前のBashの非常に初期のバージョンで実装され、readline現在のライブラリに引き出されました(readline ChangeLogヒントの最初のエントリ)。


2
言葉の交換は新しい何か非常に有用でした
Mongrel

Alt + Tに数値引数を指定すると、カーソル位置(またはその前)の単語が、その単語の前のn番目の単語に置き換えられます。例:Alt + 2 Alt + Tは、で実行されword1 word2 word3word3 word2 word1場合に変更されword3ます。
crw

@crwはいいでしょうが、alt + Tは私の端末で単語を交換しません。メニュー項目「タイトルの設定」を開きます。
フィリップカークブライド

残念だ@PhilipKirkbride、お使いの端末エミュレータは...非常に便利なショートカットのあなたを奪っている
スティーブン・キット

@PhilipKirkbrideメニューアクセスキーを無効にするターミナルエミュレーターのオプションがあるはずです
Joril

15

このキーの組み合わせは、emacsエディターから継承されたバインディングであり、入力された最後の2文字が行の最後でスワップされ、行の中央で使用され、カーソルの左側の文字とその下の文字を交換しますカーソル。

このようなめったに使用されない機能を、さらに数回のキーストロークで簡単に実現できるようにすることは、無駄に思えるかもしれません。私のような古いタイマーはかなり頻繁に使用し、70年代後半、特に長い回線の真ん中にある300ボーモデムの時代に送信時間を節約するために使用されていました。

Alt+ にバインドされた同様の便利なコマンドTは、カーソルの左右の単語を入れ替えます。

Tそれが転置の最初の手紙であるので選ばれた。同様の起源を持つ他のバインディングには次のものがあります。

  • Ctrl+ B逆方向の場合、カーソルを1ポジション左に移動します。
    • Alt+ Bカーソルを1単語左に移動し、
  • Ctrl+ F前方の場合、カーソルを1つ右に移動します。
    • Alt+ Fカーソルを1単語右に移動し、
  • Ctrl+ AAnfangまたはanteの場合、カーソルを行の先頭に移動し、
  • Ctrl+ Eendの場合、カーソルを行末に移動します。
  • Ctrl+ Nnextの場合、次の行を取得します。
  • Ctrl+ Ppreviousの場合、次の行を取得します。
  • Ctrl+ Ddeleteの場合、カーソルの下の文字を削除します。
    • Alt+ Dカーソルの下の単語を削除し、
  • Ctrl+ Kkillの場合、行末を切り取り、
  • Ctrl+ Yyankの場合、クリップボードの内容を貼り付け、

GNUのreadlineのパッケージに実装され、これらのバインディングは、のようなユーザー入力のためにそれを使用するすべてのプログラム、でそれゆえ利用可能なbashのが、また、GDBBC、...

FirefoxのURL入力行、OS / Xグラフィカルインターフェイスのテキスト入力フィールド、および多くのXベースのウィンドウマネージャーなど、他の環境でも使用できるものがあります。

vimユーザーは、環境変数を介して対応するバインディングを選択できます。


はい、Emacsではなく端末に入力していることを忘れてしまうような私たちのような人にとっては素晴らしいことです。Firefoxのtextareaウィジェット(現在はこのようなウィジェット)を使用すると、これらの重要なバインディングが欠落しているのにまだ気づかれています。:-(
トビースペイト

説明に関連するコマンドの文字バージョンと単語バージョンをペアにする方法はありますか?これらのキーストロークAltCtrlバージョンが一貫した方法で関連付けられていることを認識すると、本当にメモリを助けます。
トビーSpeight

@TobySpeight GTK +は代替のEmacsスタイルのキーバインドテーマをサポートしているため、これらのキーバインドの一部をFirefoxで使用できます。 C-tしかし、何もしないようです。 wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
キャンディガムドロップ16

@TobySpeight試したことがありますそれはすべてテキストです!?これにより、選択したエディターでテキストエリアの内容を編集できます。
スティーブンキット

@Stephenに感謝します-聞いたことはありますが、まだ試していません。私は...それをフォローアップします
トビースパイツに

10

これは、小柄なtpyos wehre yuo haevを誤ってlettresのピアを移すためのuseuflです。

(両手首に重度のRSIがあるため、個人的にこれを頻繁に使用しています...)


2
私の目が出血している
基本的な

4

すぐにタイプミスを修正します。コースアーの直前の2つの修正ブロックを実行します。

入力ls-したときにls&ハイフンの間にスペースが必要な場合は、Ctrl+ を使用できますT

これは、ハイフンの後にスペースがあり、Ctrl+T

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.