Debian 8.3 のインストール
stty werase '^H'
またはArch Linux 2/2016で
stty werase '^?'
in .bashrc
(例) make Ctrl-Backspace端末の最後の単語を削除します。ただし、これはまだ最新のGUIアプリケーション(Firefoxなど)と同じようには機能しません。スペース- スペースで区切られた最後の単語の代わりに区切られた単語またはこんなキャラクター. : , ; " ' & / ( )
。
端末で最新のGUIアプリケーションのように動作させるCtrlことは可能ですか?そして、カーソルの前にある単語を削除するBackspace方法はありますか?CtrlDelete
ベストアンサー1
これには、カーネルが提供するデフォルトの行エディタ(標準モードのtty行エディタ)とbash行エディタ(readlineライブラリを介して実装)の2行エディタがあります。どちらのコマンドも前の単語をクリアするコマンドを持ち、Ctrlデフォルトでは+にバインドされています。このキーはW標準モードのttyラインエディタで設定できます。stty werase
bash は、独自の設定でオーバーライドされない限り、tty 設定で見つかったキーバインディングをエミュレートします。
werase
tty行エディタでタスクを設定できません。常に(ASCII)スペースで区切られた単語を削除します。 tty行エディタとのやり取りはほとんどありません。これはcat
引数なしで入力したときに得られるものです。クールなキーバインディングが必要な場合は、次のツールでコマンドを実行できます。巻き戻すreadlineを使用します。
Bashは2つを提供します前の単語を削除するコマンド:unix-word-rubout
(Ctrl+wまたはstty werase
)とbackward-kill-word
(M-DEL
、つまりEsc Backspace)現在のロケール内の単語を一連の英数字として扱います。_
。Ctrl+に古い英数字の文字シーケンスを削除させるには、設定しないでBackspace次stty werase
の行をに入力します.inputrc
。
"\C-h": backward-kill-word
これは、端末がCtrl+Ctrl + H文字を送信すると仮定しますBackspace。残念ながら、これは標準バインディングのないキーの1つです(Backspace具体的にはめちゃくちゃだ歴史的な理由で)。
デフォルトでは、(+)kill-word
にバインドされた対称コマンドもあります。 +にバインドするには、まず端末から送信されたエスケープシーケンスを識別し、次に+を入力して+を入力すると、次の内容が挿入されます。ここで、最初の文字はエスケープ文字の視覚的表現です。それからバインディングはM-d
AltDCtrlDelete.inputrc
CtrlVCtrlDelete^[[3;5~
^[
"\e[3;5~": kill-word
単語定義のいずれも満足できない場合は、bashで独自の定義を提供できます。BashでのEmacsスタイルのキーバインディングの混乱した動作