私はSSHにFreeBSD 11とPuTTYを使用しています。キーボードのキーコードが正しく設定されていないようです。たとえば、上向き矢印でビープ音が鳴り、矢印や削除キーなどの基本機能を含むほとんどのナビゲーションキーに「〜」が挿入されます。キーボードは標準的な英国式英語キーボードです。入力するのは本当に痛いです。
私はrcとシェルで重要なコードを設定するための多くのスレッドを読んだので、最後の手段としてこの方法を設定できることを知っています。
ただし、非常に構成可能なクライアントと広く使用されているオペレーティングシステムを使用する場合は、どちらも「理解する」ことができる共通の端末オプション/設定がないことをお勧めします。奇妙な - キーはすべて(またはほとんど)動作します。問題は、それを見つける方法、またはそれが見つかったときに将来のすべてのセッションに対して設定する方法がわからないことです。
個々のキーに対して端末から送信されるキーコードを見つける方法を知っているので、このように1つずつキーを設定できます。しかし、シェルrcとPuTTYの両方が理解できる最大限のキーを得るためにデフォルトの端末設定を探したいので、必要に応じていくつかの例外を設定するだけです。
どうすればいいですか?
答え1
回して回すハンドルがたくさんあります。人々はインターネット上の多くのアドバイスに盲目的に従います。いつものように、ローマへの道はいくつかありますが、それがどのようにつながっているのかを知ることは非常に簡単になります。
非常に短い答えは次のとおりです。
xterm
Puttyの端末文字列を(putty
Connection-> Data-> Terminal Type Stringの下で)に変更します。
避けるべき一般的なトラップ:
TERM
rcファイルの他の場所に設定していないことを確認してください。
少し長い答え:
まず、実際にデフォルト値を使用していることを確認することから始めましょう。私は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
そのまま動作します。
一部の人はに設定するか、TERM
「xterm-color
適切な」色のサポートを受けることをお勧めします。xterm-256
rxvt-256color
しかし覚えています:これらの魔法のTERM
値はすべてデータベースのマッピングにすぎません。今日、これが非常に一般的な理由の1つは、一部のプログラムとスクリプトがこれが(ひどい考えです)で始まるかどうかをxterm
確認するためです。$TERM
xterm
これは私たちをもう一度用語キャップこれがFreeBSDのデフォルト設定です。 terminfoを使用するにはインストールする必要があります。開発/呪い。これについて詳しくは、次をご覧ください。FreeBSDでterminfoエントリを使用する方法は?
テキストファイルにtermcapデータベースのソースコードを見つけることができます /usr/share/misc/termcap
。このファイルを変更した場合は、cap_mkdb
システムが変更を確認するように実行する必要があります。ここで難しい質問に対する答えを見つけることができます。 PuttyにはTERM
次の明示的な設定がありますputty
。
その後、FreeBSDはPuttyの動作と一致するように設定を変更しないことを決定しましたxterm
(おそらく操作上の理由で)。しかし、Puttyの設定を提供するのに十分でした。
したがって、Puttyのデフォルト設定をからに変更すると、Terminal-type string:
ログインxterm
時putty
に反映されます。デフォルトの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の期待に同意することです。あなたもその反対の仕事をすることができることを示すために行きます。
答え2
コメントすることはできませんが、@clausandersenの答えは非常に徹底しました。ただし、termcap エントリの追加のボーナス部分は完全に正確ではありません。tput AF 100
puttyエントリから継承されたtermcap AF機能は8色のみをサポートしているため、呼び出しは期待どおりに機能しません。期待どおりに動作します。
putty-256color|PuTTy - 256 colors:\
:Co#256:pa#32767:\
:AB=\E[48;5;%dm:AF=\E[38;5;%dm:\
:tc=putty: