問題タブ [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.
octave - GNU/Octave のコマンド ラインの文字列で始まる最後のコマンドを復元する
特定の文字列で始まる最後のコマンドをOctaveで回復するには、それを入力してから上矢印キーを押します(Matlabの場合と同様)。この動作は、現在の Octave のコマンド プロンプト (ターミナルから実行された生のコマンド プロンプト) では再現されません。つまり、何かを入力して押し上げると、その文字列で始まる前のコマンドがスタックにあるかどうかに関係なく、最後のコマンドが表示されます。
このような動作を再現するために Octave を構成する方法はありますか? 本当に便利です。
更新
1. Octave バージョン 3.8.1
2. 実装する方法は、 を押してからCtrl-r入力することです (その文字列で始まらないコマンドを検索するため、実際には同じ効果ではありません)。
c - readline() のタブ補完を直接呼び出す
使用できるタブ補完が必要かどうかはわかっています
実行中にタブ補完を取得しますが、補完したい文字列が既にある場合はどうなりますか? readline ライブラリに、直接呼び出して文字列をパラメーターとして送信し、タブ補完を実行できる特定の関数はありますか?
私は完全なcのソースコードをたくさん読んで、文字列を送信できるメイン関数を見つけましたが、うまくいきませんでした。
bash - キーが押されるたびに端末で関数を実行する方法 (キーボード全体をバインド)
この 1 週間、bash で遊んでいて、キーボードのキーを押すたびに呼び出される関数を作成したいと考えています。バインドについて読みましたが、特定のキーにバインドする必要があります。誰かが私を助けることができれば、私はそれを感謝します
zshやfishなどの新しいシェルなしでこれを達成したい
python - Python で GNU readline ライブラリを使用してオートコンプリートを停止し、通常のタブを表示する方法
現在、Python 2.7 で次のコードを実行しています。
thisによるとrl.set_completer()
、タブが正常に機能すると思われるコンプリータ機能を削除する必要があります。ただし、タブキーはまったく機能しません。
また、独自の関数を作成してコンプリータとして渡そうとしましたが、それもうまくいきませんでした。(誰かがこれを行う方法を見つけて、タブキーを正常に機能させることができれば、それで十分です。)
で矢印キーを使用できるようにするにはどうすればよいraw_input
ですか? また、通常のタブも使用できますか?
libreadline - readline 行の送信を防止する
入力をリアルタイムで追跡するアプリケーションで readline を使用しています。ユーザーが Enter、Control + J、またはその他の同等のキーを押すことを許可したくないため、意図せずにフィールドをクリアします。
私は実際に自分でキーを転送しているので、特定のキー入力をキャッチして防ぐことができますが、逆検索 (Control - R) も処理する必要があるため、これは方法ではないと思います。
私はgnuのドキュメントを見てきましたが、役に立つものは何も見つかりませんでした.
私のコードはこれに似ています https://github.com/ulfalizer/readline-and-ncurses
macos - dyld: ライブラリがロードされていません: 参照元: /usr/local/bin/awk
ターミナルを開くと、次のようなエラー メッセージが表示されます。
c - Readline & NCurses、特殊キーとキーの組み合わせの処理
学生プロジェクト用にIrssi インターフェイスを複製しています。テキスト インターフェイスにはNCursesを使用し、 readlineを使用して、メッセージを作成する際により優れたテキスト編集機能を提供したいと考えています。
この質問、回答、およびプロジェクトは、私に素晴らしい出発点を提供してくれました。
私の問題は、次のような入力/イベントループが必要なことです:
しかし、一致させるには、KEY_F(n)
またはKEY_UP
有効にする必要がありkeypad(window, TRUE)
ます。これにより、入力が変更され、readline で使用できなくなります。
マニュアルから:
キーパッドが TRUE で、ファンクション キーが押された場合、生の文字の代わりにそのファンクション キーのトークンが返されます。
ファンクション キーの先頭となる可能性のある文字 (最新の端末ではエスケープ文字を意味します) を受信すると、curses はタイマーを設定します。シーケンスの残りが指定された時間内に到着しない場合、文字は通過します。それ以外の場合は、ファンクション キーの値が返されます。このため、多くの端末では、ユーザーがエスケープ キーを押してからプログラムにエスケープが返されるまでに遅延が発生します。
ここに私の考えがあります:
- の効果を逆にする機能はあり
keypad
ますか? - の動作を自分で実装する必要があり
keypad
ますか? Shift + Up などのイベントをキャッチしたい場合は、これも行う必要があると思います。このような例があれば幸いです。 - NCurses からキーの組み合わせを取得できない場合、readline でキーの組み合わせを取得できますか? 多分キーバインディングコールバックで(関連?)?
お時間をいただきありがとうございます!
c - 行頭に出力がある場合は「readline」
readline
(バージョン6.3、デフォルトの[非vi]モード、Ubuntu 14.04)ライブラリを自分のプログラム内から使用し、ターミナルウィンドウ(PC上)で実行しています。readline()
が呼び出されたときに、以前の出力が改行で終了していない場合に問題が発生します。
したがって、行は次のようになります。
少数の文字 (最大 5 文字?) を入力してから、たとえばCtrl+U
(他の文字かもしれません) 入力を削除する場合、これまでのところすべて問題ないようです ---readline()
キャレットを独自のプロンプトの直後に戻します。つまり、削除します。 5文字。ただし、次のように入力してみてください。
今度は削除してに戻り、その行Hello
だけを残しHell
てキャレットを続けます。つまり、6+6==12 を削除します。ご覧のように:
次の 2 つの解決策のいずれかが必要です。
私は、それが間違っている行に入力された文字数に依存することに気付きました。修正/回避策はありますか?
または、
readline
呼び出す前にキャレットがどの位置/列にあるかを教えてくれるライブラリ呼び出しはありますreadline()
か? そうすれば、少なくとも、自分が既存の行の最後にいるという事実を認識し、\n
最初に新しい行の先頭に位置するように a を出力することができました。
入力された最大5文字に対して最大5つのバックスペースが実行されると推測できると思いますが、それ以上に、行頭で開始されなかった場合に台無しになる何か他のことを選択しますか?
GNU Readline: 入力行をクリアするには? . これも同じ状況ですか?ソリューションはかなり複雑に見えます。を開始するときに現在どの列にいるのかを尋ねることはできませんか?readline()
または、削除するのにそれほど賢くなく、実際に入力された文字数だけを削除することに固執するように指示することはできませんか?