なぜvimがtelnetセッションに正しく機能しないのですか?
-
05-07-2019 - |
質問
OpenVMS V7.3-2ではvim(7.1)を使用しています。
ターミナルエミュレーターであるSmartTermでtelnetセッションを介してVMSに接続します。
正常に動作します。
ただし、VMSセッション(SmartTerm経由で接続)から別のVMSセッションにTelnetセッションを開始すると、一部のキーが正しく機能しません。
|--------------| telnet |-------------| telnet |-----------------|
| Smartterm | ------> | VMS, Vim OK | ------> | VMS, Vim broken |
|--------------| |-------------| |-----------------|
Insert、Delete、Home、End、PageUp、PageDownは通常モードの〜に似ています(大文字から小文字、またはその逆)
何かアイデアはありますか?
=============================================
編集
2番目のtelnetされたセッションが同じVMSボックス上にあることは言及しなかったことに気付きました。
別のユーザーの権限で何かをする必要があるので、そうします。
解決
どの端末エミュレーションを使用するかを微調整することに加えて、実行しようとしているアクションのvimのキーストロークを学習することもお勧めします。これらはより信頼性が高く、端末やキーボードに依存しません。例えば:
- 挿入:i
- ホーム:^最初の非空白文字に移動し、0は常に最初の列に移動します
- 終了:$
- PageUp、PageDown:ctrl-u、ctrl-dは一度に半ページずつ移動します
他のヒント
ほこりだらけの古いSolarisの箱を復活させているときに、同様の問題が発生しました。 t _
...変数を正しく設定する方法を探すのが面倒だったので、代わりに障害のあるターミナルエスケープシーケンスを再マップしました。
:map xxx 0 (press <C-v><Home> in place of xxx)
:map xxx <C-b> (press <C-v><PgUp> in place of xxx)
... etc
このひどいことを正しく設定したい場合、RTFMingはかなりの神経と時間を消費するかもしれません:
:h terminal-options
通常、これはターミナルエミュレーションが原因であるため、何かが正しいキーを通過させていません。私がこれをやったのは何年も前ですが、VT-100などのようなものを探してください。私はそれがvimに固有のものであるかどうか疑っています:)
申し訳ありませんが、これ以上サポートすることはできません。
最初に尋ねる質問は単純です:あなたは何の前に座っていますか? OpenVMSを実行しているVAXまたはAlphaのコンソール上に本当にいますか?私の推測では、答えはノーです。
万が一、答えが「はい」の場合は、次のように入力します。
$ターミナルの表示
そして、リモートUNIXホスト上のTERM変数がこれと正確に一致することを確認してください。
私の推測が正しく、PuTTYやTerminalなどのターミナルエミュレーターを実行しているPCまたはMacの前に座っている場合は、エミュレートしているターミナルが正しく反映されるようにソフトウェアのオプションを調べる必要がありますVMSシステムの世界観とリモートUNIXホストの世界観の両方。
どの種類の端末をエミュレートしているのかがわかったら、接続しているVMSシステムで上記のVMSコマンドをもう一度使用して、一致することを確認します。
そうでない場合は、次のように入力して状況を修正します。
$ SET TERMINAL / DEVICE =(端末名-vt100など)
次に、リモートUNIXホスト上のTERMがVMSシステムが設定されているものと一致することを確認します。
これをすべて実行すると、すべてが正常に動作するはずです。
端末デバイスの互換性に関する env 変数の設定方法に加えて、telnetクライアント自体に関するヒントが役立つ場合があります。
通常のEscの組み合わせの前に、Ctrl + [を使用します。 vimを終了するには
Ctrl+[ Esc :q!