Linenoise: Ctrlキーを左右に作成します

作成日 2016年11月24日  ·  8コメント  ·  ソース: antirez/linenoise

これらのキーボードショートカットは、既存の行をすばやくナビゲートするときに非常に便利です。 それらが実装されていない理由はありますか?

全てのコメント8件

A:これはPOSIX / UNIXの一般的な移動コマンドではありません。 ラインノイズは100%POSIXです。

ただし、これをラインノイズの独自のコピーに追加するのは簡単です。 ラインノイズを使用する多くの人は、何らかの理由でラインノイズをハッキングします。 理解と変更は非常に簡単です。

Win / Unix / Emacsでのコントロールキーの使用法を比較したチャートは次のとおりです:https: //en.wikipedia.org/wiki/Control_key


何をすべきか?

linenoise.cの41行目には、カーソルの制御方法に関する説明があります。

行#768であなたは見つけるでしょう
static int linenoiseEdit(int stdin_fd、int stdout_fd、char * buf、size_t buflen、const char * prompt)

編集機能を変更する場合は、この関数にあります。

また、API呼び出しで複数行の編集をオンにする必要があることにも注意してください。

linenoiseSetMultiLine(1);

これがお役に立てば幸いです。 (どこにいても:-)

これは#64や#92と同じ考えを指しているのでしょうか、それとも他の何かを指しているのでしょうか。

linenoiseがPOSIXで定義されたライン編集機能に制限されているとは思いません(vi / emacs / readlineのバックワードとフォワードワードシーケンス)。 linenoiseがPOSIX環境に依存しているという事実を考えているかもしれませんが、それはOS固有の呼び出しから離れなければならないことを意味するだけです。

たぶん私は不明確でした-control + leftが制御文字に対応していないことを知っています(ctrl + aが\ 01に対応するようになど)。 ただし、多くのターミナルエミュレータは、これに対して異なるエスケープシーケンスを生成します( \033[1;5D\033fなど)。これは、一部のライン編集ライブラリがデフォルトでバインドして、単語ごとに前後に移動します。 少なくとも、それがこの問題が示唆していることだと思います。

POSIXが定義する(定義しない)ライン編集エスケープシーケンスをリストするもの、またはラインノイズがPOSIX標準の一部ではないものを実装しないことを示すものを見つけた場合は、私に知らせてください。私はそれを見つけることができませんでした。

編集:上記でリンクした表を参照している場合、それはPOSIXを参照していませんが、私はあなたの主張を理解していると思います。 特にctrl + left / rightを支持することを主張しているわけではありませんが、いくつかのシーケンスが悪い考えではないと思います。 また、これはキーの組み合わせやreadlineバインディングの完全なリストではありません-readlineはデフォルトでesc-b / f(およびおそらく他のより長いエスケープシーケンス)をback / forward-wordにバインドしますが、そこにはリストされていません。

JelteFが望んでいる機能には、入力エスケープシーケンスのラインノイズハンドル(ここでは、たとえば矢印キーまたは削除を押して生成されたシーケンス)を拡張することが含まれ、出力エスケープシーケンス(たとえば、実際にカーソルを移動するために出力に送信されるシーケンス)を参照していると思います。 。 私は、termcapの処理がラインノイズの範囲を超えていることに同意します。また、ラインノイズが最小限のコマンドで実装されているという事実に感謝します。

おそらく@JelteFは、この機能要求が正確に何を求めているのかを明確にすることができます。 linenoiseEdit()で2つの余分なシーケンスを処理することだと思いましたが、間違っている可能性があります。

ctrl-leftまたはctrl-rightが押されたときに1つの単語を左右に移動する場合は、(対応する長いエスケープシーケンス\033[5;DCそれぞれ使用して) OCamlバインディングにそのパッチがあります: https ://github.com/fxfactorial/ocaml-linenoise/commit/c3d130cd62419ed3e77203bea392b12830c3e593

@ c-cubeはまさにその通りです。 先に返信しなかったことをお詫びします。

ははは、それはたった1年半で、インターネットの時間では何もありません。 そして、linenoiseEdit()にもあります。 ありがとう@ c-cube:+1:

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

ghost picture ghost  ·  4コメント

denisvm picture denisvm  ·  9コメント

krux02 picture krux02  ·  8コメント

fatcerberus picture fatcerberus  ·  5コメント

ozancaglayan picture ozancaglayan  ·  21コメント