問題タブ [libreadline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
251 参照

octave - GNU/Octave のコマンド ラインの文字列で始まる最後のコマンドを復元する

特定の文字列で始まる最後のコマンドをOctaveで回復するには、それを入力してから上矢印キーを押します(Matlabの場合と同様)。この動作は、現在の Octave のコマンド プロンプト (ターミナルから実行された生のコマンド プロンプト) では再現されません。つまり、何かを入力して押し上げると、その文字列で始まる前のコマンドがスタックにあるかどうかに関係なく、最後のコマンドが表示されます。

このような動作を再現するために Octave を構成する方法はありますか? 本当に便利です。

更新
1. Octave バージョン 3.8.1
2. 実装する方法は、 を押してからCtrl-r入力することです (その文字列で始まらないコマンドを検索するため、実際には同じ効果ではありません)。

0 投票する
1 に答える
333 参照

c - readline() のタブ補完を直接呼び出す

使用できるタブ補完が必要かどうかはわかっています

実行中にタブ補完を取得しますが、補完したい文字列が既にある場合はどうなりますか? readline ライブラリに、直接呼び出して文字列をパラメーターとして送信し、タブ補完を実行できる特定の関数はありますか?

私は完全なcのソースコードをたくさん読んで、文字列を送信できるメイン関数を見つけましたが、うまくいきませんでした。

0 投票する
0 に答える
98 参照

bash - キーが押されるたびに端末で関数を実行する方法 (キーボード全体をバインド)

この 1 週間、bash で遊んでいて、キーボードのキーを押すたびに呼び出される関数を作成したいと考えています。バインドについて読みましたが、特定のキーにバインドする必要があります。誰かが私を助けることができれば、私はそれを感謝します

zshやfishな​​どの新しいシェルなしでこれを達成したい

0 投票する
2 に答える
447 参照

python - Python で GNU readline ライブラリを使用してオートコンプリートを停止し、通常のタブを表示する方法

現在、Python 2.7 で次のコードを実行しています。

thisによるとrl.set_completer()、タブが正常に機能すると思われるコンプリータ機能を削除する必要があります。ただし、タブキーはまったく機能しません。

また、独自の関数を作成してコンプリータとして渡そうとしましたが、それもうまくいきませんでした。(誰かがこれを行う方法を見つけて、タブキーを正常に機能させることができれば、それで十分です。)

で矢印キーを使用できるようにするにはどうすればよいraw_inputですか? また、通常のタブも使用できますか?

0 投票する
1 に答える
80 参照

libreadline - readline 行の送信を防止する

入力をリアルタイムで追跡するアプリケーションで readline を使用しています。ユーザーが Enter、Control + J、またはその他の同等のキーを押すことを許可したくないため、意図せずにフィールドをクリアします。

私は実際に自分でキーを転送しているので、特定のキー入力をキャッチして防ぐことができますが、逆検索 (Control - R) も処理する必要があるため、これは方法ではないと思います。

私はgnuのドキュメントを見てきましたが、役に立つものは何も見つかりませんでした.

私のコードはこれに似ています https://github.com/ulfalizer/readline-and-ncurses

0 投票する
1 に答える
4027 参照

macos - dyld: ライブラリがロードされていません: 参照元: /usr/local/bin/awk

ターミナルを開くと、次のようなエラー メッセージが表示されます。

0 投票する
1 に答える
661 参照

c - Readline & NCurses、特殊キーとキーの組み合わせの処理

学生プロジェクト用にIrssi インターフェイスを複製しています。テキスト インターフェイスにはNCursesを使用し、 readlineを使用して、メッセージを作成する際により優れたテキスト編集機能を提供したいと考えています。

この質問回答、およびプロジェクトは、私に素晴らしい出発点を提供してくれました。

私の問題は、次のような入力/イベントループが必要なことです:

しかし、一致させるには、KEY_F(n)またはKEY_UP有効にする必要がありkeypad(window, TRUE)ます。これにより、入力が変更され、readline で使用できなくなります。

マニュアルから:

キーパッドが TRUE で、ファンクション キーが押された場合、生の文字の代わりにそのファンクション キーのトークンが返されます。

ファンクション キーの先頭となる可能性のある文字 (最新の端末ではエスケープ文字を意味します) を受信すると、curses はタイマーを設定します。シーケンスの残りが指定された時間内に到着しない場合、文字は通過します。それ以外の場合は、ファンクション キーの値が返されます。このため、多くの端末では、ユーザーがエスケープ キーを押してからプログラムにエスケープが返されるまでに遅延が発生します。

ここに私の考えがあります:

  • の効果を逆にする機能はありkeypadますか?
  • の動作を自分で実装する必要がありkeypadますか? Shift + Up などのイベントをキャッチしたい場合は、これも行う必要があると思います。このような例があれば幸いです。
  • NCurses からキーの組み合わせを取得できない場合、readline でキーの組み合わせを取得できますか? 多分キーバインディングコールバックで(関連?)?

お時間をいただきありがとうございます!

0 投票する
1 に答える
665 参照

c - 行頭に出力がある場合は「readline」

readline(バージョン6.3、デフォルトの[非vi]モード、Ubuntu 14.04)ライブラリを自分のプログラム内から使用し、ターミナルウィンドウ(PC上)で実行しています。readline()が呼び出されたときに、以前の出力が改行で終了していない場合に問題が発生します。

したがって、行は次のようになります。

少数の文字 (最大 5 文字?) を入力してから、たとえばCtrl+U(他の文字かもしれません) 入力を削除する場合、これまでのところすべて問題ないようです ---readline()キャレットを独自のプロンプトの直後に戻します。つまり、削除します。 5文字。ただし、次のように入力してみてください。

今度は削除てに戻り、その行Helloだけを残しHellてキャレットを続けます。つまり、6+6==12 を削除します。ご覧のように:

次の 2 つの解決策のいずれかが必要です。

  1. 私は、それが間違っている行に入力された文字数に依存することに気付きました。修正/回避策はありますか?

  2. または、readline呼び出す前にキャレットがどの位置/列にあるかを教えてくれるライブラリ呼び出しはありますreadline()か? そうすれば、少なくとも、自分が既存の行の最後にいるという事実を認識し、\n最初に新しい行の先頭に位置するように a を出力することができました。

入力された最大5文字に対して最大5つのバックスペースが実行されると推測できると思いますが、それ以上に、行頭で開始されなかった場合に台無しになる何か他のことを選択しますか?

GNU Readline: 入力行をクリアするには? . これも同じ状況ですか?ソリューションはかなり複雑に見えます。を開始するときに現在どの列にいるのかを尋ねることはできませんか?readline()または、削除するのにそれほど賢くなく、実際に入力された文字数だけを削除することに固執するように指示することはできませんか?