IRB キーボード ショートカットは無効になっていますか?これらを再度有効にすることはできますか?私が何を壊してしまったのでしょうか?
概要
予想される行動: この回答のようなreadlineショートカットを使用したキーボードショートカット。
実際に何が起こるか: Ctrl+l を押して画面をクリアします。
irb
2023-08-08 20:31:17 -0600
Loaded Profile methods
irb.main{
irb.m${ ^Ltyping stuff^E^A
Ruby バージョン: Ruby 3.2.2 (2023-03-30 リビジョン e51014f9c0) [x86_64-linux]
私の ~/.irbrc が不注意でショートカットを妨害しているのではないかと思いました。ソースされないように名前を変更しましたが、動作は同じままで、irb は readline 動作の代わりに「^#{letter_I_pressed}」を画面に書き込みます。
set -o vi
set editing-mode vi
set keymap vi
set show-mode-in-prompt on
それで私は試しました: set -o emacs ;編集モード emacs を設定します。 emacs のキーマップを設定します。 irb
奇妙なことに、これは emacs のような readline 動作を有効にしませんし、上で説明したことも変わりません。
解決策
Ruby は readline サポートなしでコンパイルされている可能性があります。これはほとんどの場合、Ruby または pkgconfig の最近の変更が原因で、pkgconfig が適切なライブラリを見つけられないため、さまざまなコンパイル フラグが適切に処理されません。
前提条件がインストールされていることを確認し、コンパイル中に機能フラグを有効にしてください。この問題が発生した一部のプラットフォームまたは特定のビルドでは、readline に加えて rlwrap をインストールすると便利であることもわかりました。これは、不足しているアプリケーションに GNU readline および BSD libedit サポートを提供する readline ラッパーです。例えば:
brew install rlwrap
rlwrap irb
readline または libedit が irb または icr に適切にコンパイルされていない場合の問題を修正しました。後者は Crystal の REPL で、この問題のせいで readline と libedit のサポートが当たり外れがあることが最近わかりました。
あるいは、次の環境値を設定して再コンパイルしてみることもできます。
export LDFLAGS="-L/opt/homebrew/opt/readline/lib"
export CPPFLAGS="-I/opt/homebrew/opt/readline/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/readline/lib/pkgconfig"
OpenSSL に関連する同様の問題も報告されているため、そこでも同様の操作を行う必要がある場合があります。