kmiya-culti / RLogin

RLoginは、Windows上で動作するターミナルソフトです
http://nanno.bf1.jp/softlib/man/rlogin/
MIT License
463 stars 16 forks source link

Bash で Ctrl+R によるコマンド履歴呼び出し時の挙動がおかしい #125

Closed aviscaerulea closed 2 months ago

aviscaerulea commented 2 months ago

使用しているのは RLogin 2.29.2 です。

SSH 接続している Linux リモートのターミナルで、Ctrl+R によるコマンド履歴を呼び出して、左右のカーソルを押下したときに履歴コマンドが反映されることを期待しているのですが、プロンプトが表示されてしまいます。

20240408_142401

以下のような具合です。 "(reverse-i-search)" の表示位置もおかしい?

[root@host]$    (※ Ctrl+R 入力)
[root@host]$ (reverse-i-search)`ls': ls /home   (※ここで右カーソルを入力)
[root@host]$ (reverse-i-search)`ls': [root@host ]$         | ← カーソル位置

ただ、表示されている内容と異なり、履歴で選択したコマンド自体は反映されているようなので上記の状態からエンターすると選択した履歴のコマンドが実行されます。 接続設定を「プログラムの初期値まで戻す」でリセットしたもので行っても変わりませんでした。

試しに切り分けのため同ホストに TeraTerm 5.0 で行うと、こちらは期待通りの挙動でした。 20240408_142634

これは何処かの設定で調整できたりしますか?

aviscaerulea commented 2 months ago

加えて Ctrl+R ではなく、プロンプトで上下カーソルキーで履歴を辿ろうとすると、プロンプトと履歴のコマンドが行末に追記されていってしまうような動きもあります。

本題の現象も含めてパッと見で CR が抜けてしまっているような挙動をしています。(あくまでイメージとして)

kmiya-culti commented 2 months ago

よくある問題としてTERM環境変数の設定があります。 ご確認ください

https://kmiya-culti.github.io/RLogin/faq.html#TERM

aviscaerulea commented 2 months ago

ご回答ありがとうございます。 TERM 環境変数を vt100 など他のものにしてみましたが、動作に変わりはありませんでした。

ただ、別環境として Windows サンドボックス上で試したところ、同ホストに対して RLogin 2.29.2 で期待通りの動作をしました。

接続設定を「プログラムの初期値まで戻す」で初期化したつもりだったのですが、それでも TERM 環境変数周りなどで初期化されないものがあるのでしょうか?

この場合で、問題が生じている Windows ホスト上の接続先情報(できればパスワードも)を保持して、TERM 環境変数周りなど接続先情報以外の設定をクリーンにする方法はありますか…? 現状、設定はレジストリを使うようにしています。 レジストリからプライベートプロファイル(.ini)に変更した上で、何らかのエントリを削除して再起動したりすれば良かったりするでしょうか。

kmiya-culti commented 2 months ago

ひょっとして受信した改行コードの設定でしょうか・・・

http://nanno.bf1.jp/softlib/man/rlogin/#TERMOPT

aviscaerulea commented 2 months ago

おお…、それでした! いくつかの環境で確認して、この件が期待通りの動きになりました。 LF から CR+LF にしました。

この項目は設定初期化の影響を受けないものになっているんですね。 安直にリセットすればいいだろうと思って、改行コードの設定は気にしていませんでした…。

ありがとうございました。

aviscaerulea commented 2 months ago

close