PuTTYをFreeBSDで使用する

PuTTYをFreeBSDで使用する

私はSSHにFreeBSD 11とPuTTYを使用しています。キーボードのキーコードが正しく設定されていないようです。たとえば、上向き矢印でビープ音が鳴り、矢印や削除キーなどの基本機能を含むほとんどのナビゲーションキーに「〜」が挿入されます。キーボードは標準的な英国式英語キーボードです。入力するのは本当に痛いです。

私はrcとシェルで重要なコードを設定するための多くのスレッドを読んだので、最後の手段としてこの方法を設定できることを知っています。

ただし、非常に構成可能なクライアントと広く使用されているオペレーティングシステムを使用する場合は、どちらも「理解する」ことができる共通の端末オプション/設定がないことをお勧めします。奇妙な - キーはすべて(またはほとんど)動作します。問題は、それを見つける方法、またはそれが見つかったときに将来のすべてのセッションに対して設定する方法がわからないことです。

個々のキーに対して端末から送信されるキーコードを見つける方法を知っているので、このように1つずつキーを設定できます。しかし、シェルrcとPuTTYの両方が理解できる最大限のキーを得るためにデフォルトの端末設定を探したいので、必要に応じていくつかの例外を設定するだけです。

どうすればいいですか?

ベストアンサー1

回して回すハンドルがたくさんあります。人々はインターネット上の多くのアドバイスに盲目的に従います。いつものように、ローマへの道はいくつかありますが、それがどのようにつながっているのかを知ることは非常に簡単になります。

非常に短い答えは次のとおりです。

xtermPuttyの端末文字列を(puttyConnection-> Data-> Terminal Type Stringの下で)に変更します。

避けるべき一般的なトラップ:

TERMrcファイルの他の場所に設定していないことを確認してください。

少し長い答え:

まず、実際にデフォルト値を使用していることを確認することから始めましょう。私はDKキーボード(およびマッピング)を使用して、個人用Windows 10ノートブックからDKマッピングを持つFreeBSD 11.1設定に接続しています。私の場合、コマンドラインの矢印キーは期待どおりに機能します。現在の行から左/右に移動します。コマンド履歴を上下に見つけてください。

/bin/sh(デフォルトユーザーシェル)と/bin/tcsh(デフォルトルートシェル)についてこれを確認しました。あなたは読むことができますシェル

あなたはシェルのrcファイルでキーマッピングを実行する方法を知っていると書いた。これを行う方法に関する多くの提案が循環している。しかし、一般的にそうしてはいけません。

tcshキーバインディングなどの提案を見つけることができます。

# Del(ete), Home and End 
bindkey "\e[3~"   delete-char
bindkey "\e[1~"   beginning-of-line
bindkey "\e[4~"   end-of-line

そしてこのようなbashの提案(〜/ .inputrc)

"\x7F": backward-delete-char
"\e[3~": delete-char
"\e[1~": beginning-of-line
"\e[4~": end-of-line

ただし、各セッションと各シェルに対してこれらのバインディングをローカルに設定する代わりに、以下を使用する必要があります。用語キャップ/用語情報これを行うには(後で詳しく説明します)。

この場合、Puttyは端末

Puttyのデフォルト設定は、セッションのTERMを「xterm」に設定することです。これはxtermとかなり互換性があるためです。xterm端末への参照ではなく、プログラムへの参照です。Xterm

PuTTYの設定

Connection -> Data -> Terminal-type string: `xterm`

ログインすると、この設定がセッションに適用されることを確認できます。

echo $TERM
xterm

$ TERMがPuttyで設定したものと一致しない場合は、rcファイルにオーバーライドが設定されている可能性があります。/bin/sh次の警告に注意してください~/.profile

# Setting TERM is normally done through /etc/ttys.  Do only override
# if you're sure that you'll never log in via telnet or xterm or a
# serial line.
# TERM=xterm;   export TERM

エネルギーをあまり消費しないので10月 VT100それ以上はxterm多くの場所で見ることができるのです。

ちょうどそのTERMままにしてxtermも、デフォルトのPuttyとFreeBSDを使ってカラー出力が出てくるので、ls -Gそのまま動作します。

一部の人はに設定するか、TERMxterm-color適切な」色のサポートを受けることをお勧めします。xterm-256rxvt-256color

しかし覚えています:これらの魔法のTERM値はすべてデータベースのマッピングにすぎません。今日、これが非常に一般的な理由の1つは、一部のプログラムとスクリプトがこれが(ひどい考えです)で始まるかどうかをxterm確認するためです。$TERMxterm

これは私たちをもう一度用語キャップこれがFreeBSDのデフォルト設定です。 terminfoを使用するにはインストールする必要があります。開発/呪い。これについて詳しくは、次をご覧ください。FreeBSDでterminfoエントリを使用する方法は?

テキストファイルにtermcapデータベースのソースコードを見つけることができます /usr/share/misc/termcap。このファイルを変更した場合は、cap_mkdbシステムが変更を確認するように実行する必要があります。ここで難しい質問に対する答えを見つけることができます。 PuttyにはTERM次の明示的な設定がありますputty

その後、FreeBSDはPuttyの動作と一致するように設定を変更しないことを決定しましたxterm(おそらく操作上の理由で)。しかし、Puttyの設定を提供するのに十分でした。

したがって、Puttyのデフォルト設定をからに変更すると、Terminal-type string:ログインxtermputtyに反映されます。デフォルトのFreeBSD termcapにはこれに関するエントリがあります。TERM

魔法は、rcファイルに触れることなく、矢印キー(xtermでも使用)とHome / Endを使用して行の先頭/末尾に移動し、Del(ete)を削除できることです。

ボーナス:

デフォルトのパテ定義は256色すべてをサポートしていないようです。その後、termcapを変更し、次の2行を追加してcap_mkdbを実行できます。

putty-256color:\
        :pa#32767:Co#256:tc=putty:

TERMその後に設定できますputty-256colorスコット・ロビンソンこれを追加する必要があると提案されていますが、FreeBSDはまだこの変更を承認していません。データベースにこのPRが見つかりません。

ボーナス2:

TERM現在の状態を維持するには、xterm時間をかけてPuttyをFreeBSDのxterm端末の期待に合わせて設定する必要があります。

設定に入るとターミナル - >キーボード設定でHomeとEndキー「標準」を「rxvt」に変更できます。

変更すると、コマンドラインでHomeキーを使用できます(行の先頭に移動します)。しかし、Endは今何もしません。

したがって、次の問題は、Puttyがxtermに対するFreeBSDの期待に同意することです。あなたもその反対の仕事をすることができることを示すために行きます。

おすすめ記事