単語を前後に削除するXTerm制御シーケンス?

単語を前後に削除するXTerm制御シーケンス?

私は信じるこの記事単語を前後に削除する制御シーケンスを見つけるのに役立ちます。

私の理解は、制御シーケンスが\u001b[次のようになることです。「制御シーケンス紹介者」(私は - から来ましたこの他の答え)が、文字列全体が何であるかは実際にはわかりません。

コンテキスト(他のSOの質問ベース):私の目標は、VSCode端末のキーボードショートカット(キーバインディング)から単語を削除するための制御シーケンスをエクスポートすることです。

答え1

それはありません。一度見てくださいctlseq文書には何も言及されていません言葉言葉。消去にどの背景色を使用するか、内容を右の単語から左に移動するかどうかに関する質問もあります。端末の右端に単語を配置することを検討する必要があるかもしれません。

いくつかのオプションは次のとおりです。

  • 削除したい単語のセル数だけBS文字を送信し、できるだけ多くのSPCを送信し(現在の背景色を使用)、BS文字を再送信します(カーソルを戻します)。

    $ printf 'foo bar\b\b\b   \b\b\b+\n'
    foo +
    

    ソフトウェアはほぼすべての端末で動作します。

  • 同じですが、BSシーケンスを使用する代わりにtput cub xxセルの数はどこですか)を使用して、カーソルをその量だけ戻します。以下を使用して、これらのセルを削除できますtput ech x(端末に応じて現在の背景色があるかどうか)。

    $ printf 'foo bar'; tput cub 3; tput ech 3; printf '+\n'
    foo +
    
  • 代わりに行末までtput ech x消去を使用するか、tput eltput dch x削除xセル(そしてその後ろの内容を左に移動)

tputこれには、terminfoデータベースへのシェルインタフェースがあります。エスケープシーケンスをハードコーディングせずに、その言語に対応するものを使用するのがアイデアです。)

backward-kill-wordシェルのいくつかのウィジェット(script出力ロギングなど)を見ると、readline移動とdch削除にBSを使用し、zshBSと書き換えを組み合わせて使用​​することがわかりますcub。絶対列位置指定()tcshを実行しているように見え、削除のためにksh93はCRを送信して行全体を書き換えます。hbadch

答え2

私はそのような命令を見たことがない。考えてみると、単語を削除することは他のタスクよりはるかに複雑で、他のタスクは画面に表示されている内容について何ら気にしないようです。たとえば、単語の終わりは何ですか? 「_」? '-'? '.'?

関連情報