問題タブ [zsh-zle]
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.
zsh - 別のウィジェットが実行されている場合、コマンド ライン (zle -M "message") の下のメッセージをクリアする方法はありますか?
通常/頻繁に複数回連続して実行される zsh/zle ウィジェットがあります。を使用してメッセージを表示したいのですが、私のものzle -M
以外のウィジェットが実行されている場合は、メッセージをクリアしたいと思います。それを行う方法はありますか?
ドキュメントに目を通しましたが、これを実現するためのフックやその他のものは見当たりません。$WIDGET
私に起こった唯一のことは、 bindkey が報告するすべてのキーバインディングをヘッドパッチラッパーに置き換え、ヒットした場合はそれらを復元することですが、それは、$LASTWIDGET
などを見るウィジェットに問題を引き起こすと思います.
zsh - ケース操作用のウィジェット: 通常モードでは「gU」、ビジュアル モードでは「U」
g~
zle にはアクション用のウィジェットが既にあると思います。そのg~iw
ため、単語の大文字と小文字を反転します。
gU
zshzle のマニュアルを読みましたが、vim で (大文字のアクション)の動作をするウィジェットが見つかりませんでした。
たとえば、「path_variable」という単語の場合、カーソルをv
に合わせると、gUiW はワールドを「PATH_VARIABLE」に変更します。
ウィジェットcapitalize-word
は答えではないようです。私はそれをテストしました。
また、ビジュアル モードのキーU
は、視覚的に選択されたテキスト/領域を大文字にしないこともわかりました。マニュアルにも、望ましい動作を実現するウィジェットが見つかりませんでした。
これはカスタム ウィジェットを作成することの問題ですか、それとも C コードの変更を含むアップストリームにパッチを提出する必要がありますか? zle vi-modeで目的の動作を実現するためにgU
、通常モードとビジュアルモードでバインドするにはどうすればよいですか?U
zsh - 初期プロンプトに RPROMPT が表示されない
RPROMPT を使用して zsh プロンプトを構成しようとすると、奇妙な問題が発生します。oh-my-zsh やその他のプラグイン マネージャーは使用していません。これが私の.zshrc
ファイルです:
ただし、最初のプロンプト (新しいシェル、または新しい tmux ウィンドウ/ペインを開くとき) には表示されfoo
ません。(次に Enter キーを押すと、新しいプロンプトの RPROMPT が表示されます。)
1枚目に表示されないのはなぜですか?
command-prompt - ZSH プロンプトの描画中に現在のカーソル位置を取得する
ZSHシェルプロンプトを描画する関数内から、現在のカーソル位置(現在の行番号と列)を変数に読み込もうとしています。私の目標は、余分なスクロールを引き起こさないように十分な空行がある場合にのみ、プロンプトの下に表示することです。
インタラクティブ シェルでは、次のコマンドを使用できます。
ただし、 clean を開始し、zsh -f
これをプロンプトのレンダリング時に実行される関数に入れると、機能しなくなります。
端末から返された ANSI エスケープ シーケンスは、現在のコマンドに追加されます (キーボードで入力したかのように) が、read -t 1 -s -d 'R' line
上記のコマンドでは取り込まれません。プロンプトの描画中に ZSH が STDIN へのアクセスを無効にしていると思われますが、一時的にアクセスを回復する方法がわかりません (プロンプトを描画する前、またはプロンプトを描画するのにかかる 10 分の 1 秒の間に入力された通常のキーボード キーストロークは、または、ZLE を使用してその情報にアクセスする方法。
編集:プロンプトが表示される前にユーザーがコマンドの先頭を既に入力している場合、その入力は破棄されるべきではありません。私がこれまでに見つけた解決策 (以下の私自身の回答を参照) は、残念ながらこれらの文字を読み取ってドロップします。新しいターミナル ウィンドウを開いてすぐに入力を開始すると、プロンプトが表示される前に入力した文字が破棄されるため、これはイライラします。