レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

シェル(主にTeraTerm)でメターキー(Delete キー, Home キー , End キー, Insert キー)の動きが変なので対応してみた

2012年2月10日 2017年8月10日
teraterm troubleshooting

今回は、シェルのキー操作についてです。
シェルは、BシェルであれCシェルであれ、キー操作で同じような動作をして欲しいものです。
もちろんアルファベットの入力では同じ動作でしょう。問題になるのは、メタキー (Delete キー, Home キー , End キー, Insert キー) と呼ばれるものの動作が異なる場合が多いです。

今回は、そのメタキーの動作がおかしい(期待している動作と異なる)場合の対処について簡単に解説してみます。

ここの内容は、BSD系OS( FreeBSD など ) , Linux系OS( CentOS, Ubuntu など ) を含めすべてのOSでbash,csh,viを用いている場合は、 同じように使える内容になっています。( あたりまえですが、bash,csh,viの設定方法ですから。 )

各キーの操作(押下)で期待する動作

メタキー (Delete キー, Home キー , End キー, Insert キー) の操作(押下)として期待する動作は、以下のとおりです。
( ここでは、Delete キーとの動作の違いを区別しておきたいので、BackSpace キー の動作についても記載しています。)

  • Delete キー は、カーソル上に一文字を消す

    [ シェルのコマンドライン ]

    シェルのコマンドライン

    [ Delete キーを押すとカーソル上に一文字が消える ]

    シェルのコマンドライン Delete キーの動作

  • BackSpace キー は、カーソルの前の一文字を消す

    [ シェルのコマンドライン ]

    シェルのコマンドライン

    [ BackSpace キーを押すとカーソルの前の一文字が消える ]

    シェルのコマンドライン BackSpace キーの動作

  • Home キー は、カーソルを先頭へ移動する

    [ シェルのコマンドライン ]

    シェルのコマンドライン

    [ Home キーを押すとカーソルが先頭へ移動 ]

    シェルのコマンドライン Home キーの動作

  • End キー は、カーソルを最後尾へ移動する

    [ シェルのコマンドライン ]

    シェルのコマンドライン

    [ End キーを押すとカーソルが最後尾へ移動 ]

    シェルのコマンドライン End キーの動作

  • Insert キー は、挿入モード・上書きモードを切り替える
    • Insert キーを押すと上書きモードへ切り替わる

      [ シェルのコマンドライン ]

      シェルのコマンドライン

      [ “z” を入力するとカーソル上の文字が上書き ]

      シェルのコマンドライン Insert キーの動作

    • 再度、Insert キーを押すと挿入きモードへ切り替わる

      [ シェルのコマンドライン ]

      シェルのコマンドライン

      [ “z” を入力するとカーソル上の文字が挿入 ]

      シェルのコマンドライン Insert キーの動作

メタキーの動作がおかしい(期待している動作と異なる)場合の対処

Delete キー押すとBackSpace と同じ動作をしてしまう

[ 現象 ]

[ シェルのコマンドライン ]

シェルのコマンドライン

[ Delete キー , BackSpace キー いずれを押してもカーソルの前の一文字が消える ]

シェルのコマンドライン BackSpace キーの動作

[ 対処 ]

これは、ほとんどの場合、SSH,Telnetなどによるリモート接続時の問題だと思います。

その場合、まず確認すべきは、
SSH,Telnetのクライアントソフトが、メターキーのDelete (Del) キーを押した時に DEL 文字を送出していないかでしょう。

以下は、SSHクライアントソフト Tera Termの設定例です。

  1. メニュー [ 設定 ] → [ キーボード ] でキーボードの設定画面を開く。
    シェルのコマンドライン TeraTerm設定

    [ DELを送信するキー ] という項目がありますので、このチェックを全て解除し、[ OK ]ボタンをクリックします。

  2. メニュー [ 設定 ] → [ 設定の保存 ] で TERATERM.INI に保存する。

    必ず、保存しておかないと次回TeraTermを使用する際、元の戻ってしまいます。

これで、DEL 文字の送信はなくなりました。

これでも動作が直らない場合は、端末タイプを疑った方が良いかもしれません。

Tera Termの場合であれば、
接続先へ送信する端末種別情報を Tera Term の設定ファイル ( TERATERM.INI : インストール先ディレクトリにある )に持っています。 ここでは、その情報を編集してみます。
[Tera Termインストール先ディレクトリ]\TERATERM.INI 内のTermType情報を以下のように編集すればOKです。
( このファイルは、テキストファイルなので、メモ帳などで編集できます。)

TermType=xterm

これで、Tera Termを再起動すればOKです。


メタキー(Delete キー, Home キー , End キー, Insert キー) を押すと波ダッシュ(~)が表示されてしまう

[ 現象 ]

[ シェルのコマンドライン ]

シェルのコマンドライン

[ メタキー(Delete キー, Home キー , End キー, Insert キー) のいずれかを押すと、波ダッシュ(~)が表示 ]

シェルのコマンドライン メタキーの動作

[ メタキー(Delete キー, Home キー , End キー, Insert キー) のいずれかを押すと、変な文字列がが表示 ]

シェルのコマンドライン メタキーの動作

[ 対処 ]


SSH,Telnetのクライアントソフトの確認

これは、SSH,Telnetなどによるリモート接続時でも、コンソールからのログイン時でも同じ動作なら、 メタキーのシェルでのキーバインドの設定 からはじめてみましょう。

SSH,Telnetなどによるリモート接続時の場合に問題が発生する場合は、まず、SSH,Telnetのクライアントソフトを確認してみましょう。
以下はTera Termの設定例です。

  • 送受信している漢字コードに誤りがないか確認する

    メニュー [ 漢字コード ]でキーボードの設定画面を開きます。

    シェルのコマンドライン TeraTerm設定

    漢字コードに誤りがないか確認しましょう。
    UTF-8 なのに Shift_JIS , EUC-JP などになっていませんか?
    逆にEUC-JPなのに、UTF-8になていませんか?

    誤りがあったら、正しい漢字コードへ変更し再度確認してみてください。

    サーバー側の漢字コードの設定を確認したい場合は、以下のコマンドで確認することができます。
    $ localereturn
    LANG=ja_JP.UTF-8
    LC_CTYPE="ja_JP.UTF-8"
    LC_NUMERIC="ja_JP.UTF-8"
    LC_TIME="ja_JP.UTF-8"
    LC_COLLATE="ja_JP.UTF-8"
    LC_MONETARY="ja_JP.UTF-8"
    LC_MESSAGES="ja_JP.UTF-8"
    LC_PAPER="ja_JP.UTF-8"
    LC_NAME="ja_JP.UTF-8"
    LC_ADDRESS="ja_JP.UTF-8"
    LC_TELEPHONE="ja_JP.UTF-8"
    LC_MEASUREMENT="ja_JP.UTF-8"
    LC_IDENTIFICATION="ja_JP.UTF-8"
    LC_ALL=
    
    上記の場合、UTF-8になります。
  • 端末タイプに誤りがないか確認する

    接続先へ送信する端末種別情報を Tera Term の設定ファイル ( TERATERM.INI : インストール先ディレクトリにある )に持っています。
    [Tera Termインストール先ディレクトリ]\TERATERM.INI 内のTermType情報が、変な端末種別になっていないか確認します。

    もしわからない場合は、xterm を設定しておきましょう。
    ( このファイルは、テキストファイルなので、メモ帳などで編集できます。)

    TermType=xterm

    これで、Tera Termを再起動します。

    サーバーへ接続し、以下のコマンドで端末タイプを確認してみてください。

    $ echo $TERMreturn
    xterm
    

    ここで、先にTeara Term側で設定(編集)した端末タイプと同じであることを確認します。

    もし、先にTeara Term側で設定(編集)した端末タイプと異なる場合は、各シェルの設定に誤りがある可能性があります。


メタキーのシェルでのキーバインドの設定

最後は、メタキーのシェルでのキーバインドの設定です。

各シェル(Bシェル , Cシェルなど)でメタキーに対して動作を設定するキーバインドの機能があります。
このキーバインドの設定に誤りがあるか、メタキーの設定が全くないかのいずれかでしょう。

以下は、Bシェル , Cシェルについての設定例です。

Bシェル ( .inputrc ) の設定例

"\e[1~": beginning-of-line
"\e[2~": overwrite-mode
"\e[3~": delete-char
"\e[4~": end-of-line

Cシェル ( .cshrc ) の設定例

if ($term	== "xterm" || $term == "vt100" \
	|| $term ==	"vt102"	|| $term !~ "con*") then
	  # bind keypad	keys for console, vt100, vt102,	xterm
	  bindkey "\e[1~" beginning-of-line  # Home
	  bindkey "\e[2~" overwrite-mode     # Ins
	  bindkey "\e[3~" delete-char	     # Delete
	  bindkey "\e[4~" end-of-line	     # End
endif

いずれも各ファイルに上記の内容を追記して、再ログインして確認してみましょう。

SSHクライアントから、メタキーがどんなコードで送信されているか確認するには、以下のコマンドで確認することができます。

Bシェル の場合
$ readreturn
^[[2~^[[3~^[[1~^[[4~
readコマンド発行し、Insert キー, Delete キー, Home キー ,End キー の順番で押下し、最後にEnterで終了です。

Cシェル の場合
$ echo $<return
^[[2~^[[3~^[[1~^[[4~
echo $<コマンド発行し、Insert キー, Delete キー, Home キー ,End キー の順番で押下し、最後にEnterで終了です。

^[ : エスケープ文字になります。
上記の各シェルの設定文字列の \e に相当します。

(おまけ) viでBackSpace を押すと変な動作をして文字を消せない

[ 現象 ]

vi で編集中のBackSpace を押しても文字を消せないという現象です。


[ 対処 ]

各ユーザの.vimrcに以下の1行を追加することで解消できます。

$ vi ~/.vimrcreturn
...
set backspace=indent,eol,start

保存して、再度、viを起動して確認してみましょう。

indent : オートインデントの空白文字を削除できる。
eol : 改行も削除できる。改行削除時は、前行の最後尾へ連結される。
start : Ctrl+uやCtrl+wで入力した文字以外(最初から行にある文字)も削除できる。

メターキー(Delete キー, Home キー , End キー, Insert キー)の動作が変だと、ちょっと、いらいらしちゃいませんか?
個人的には、かなりいらいらしちゃいます。

サーバーの設定は、CUIでもっぱらやりますから、まずマウス操作はないですし、重要なキー操作が思うように動かないのは、やっぱり困りますね。

ここでもポイントは、やっぱり各シェルのキーバインドです。
これをやると、自分でキーのカスタマイズができますから、大変楽になることがあります。また、環境をファイルとして管理できるのも楽ですよね。 別のサーバーへもファイルをコピーするだけで同じ環境を得ることができます。

まだ、シェルのキーバインドをやったことがない方は、一度、お試しあれ。


関連記事 :


コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

Genymotionとは、 公式サイト(http://www.genymotion.com/)には、以下のように記述があります。 G ...

以下のように Android x86 を仮想マシンへインストールし、色々と試してきました。 仮想マシンを使って Android ...

Android x86とは、 いわゆる Android のPC版OSです。 Android は、Googleによって開発されたスマー ...

Android x86とは、 いわゆる Android のPC版OSです。 Android は、Googleによって開発されたスマー ...

今回は、Mondo Rescue を使って バックアップとリストア(復元)をやってみたいと思います。 いまだに、さくらのVPSは、バッ ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ
Time : 0.2107 [s]