Home, End, PageUp, PageDownキーは、カーソルやビューを移動させるのではなく、bashセッションで~
を入力します。なぜこのようなことが起こるのでしょうか、また、どのような設定を変更する必要がありますか?
GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60
質問は元々読みました
PuTTYでは、シェル(bash)の「ホーム」キーを押すと、なぜ「~」と入力するのでしょうか?というか、入力したコマンドの先頭にカーソルを移動させるにはどうすればいいのでしょうか?
(理由は〜がホームディレクトリだからだと思っていたのですが、回答によるとそうではないとのこと)
132 None 2010-01-11
Connection > DataタブのTerminal-type Stringをデフォルトの “xterm “から “linux “に変更します。これで私の場合はうまくいきました
161 None 2010-02-02
これは、PuTTYのターミナルタイプが正しく設定されていないか、サーバに正しいterminfo定義がインストールされていないために発生します
Debian ベースのシステムでは、ncurses-term パッケージ (バージョン 5.7+20081213-1) に putty, putty-256color, putty-vt100 のターミナルタイプの terminfo 定義ファイルが含まれています。本パッケージがインストールされていれば、Putty のセッション設定 (Connection -> Data) でデフォルトの “xterm” の代わりに “Terminal-type string” を “putty” に設定することができます
Stephen Irons は “linux” にも言及していますが、これは以前の経験から正しいと信じていますが、最近はテストしていません
私のシステムでは、Home と End は正しく動作しますが、PageUp/PageDown はコンソールウィンドウをスクロールしません。(aptitude のような ncurses アプリケーションでは正常に動作し、Shift-PGUp/Shift-PGDn はコンソールウィンドウをスクロールします)
50 quack quixote 2010-02-03
キーやキーの組み合わせを押したときに、PuTTYがどのコードを端末に送信するかを確認したい場合は、Ctrl+V
を発行して、目的のキーを押せばよいだけです
例えば、私のボックスでホームキーを押すと、私のターミナルでは以下のような文字列が生成されます
^[[1~
つまり、PuTTYはエスケープ文字^[の後に文字列[1~]を送ります
~/.inputrc
ファイルを $HOME
フォルダに作成するか、システムに応じて /etc/inputrc
ファイルを作成してください。そして、このファイルに PuTTY コードと Bash でトリガーさせたい Bash アクションを入力します
注:すべての ^[ 文字を、等価な文字列で置き換えてください
私の例では、ホームキーのコードと行頭のアクション (Bash のデフォルトでは Ctrl+A
にバインドされています) と一緒に行を追加します
"\e[1~": beginning-of-line
参考までに、私のinputrcファイルは以下のような内容になっています
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line # Home key
"\e[4~": end-of-line # End key
"\e[5~": beginning-of-history # PageUp key
"\e[6~": end-of-history # PageDown key
"\e[3~": delete-char # Delete key
"\e[2~": quoted-insert # Insert key
"\eOD": backward-word # Ctrl + Left Arrow key
"\eOC": forward-word # Ctrl + Right Arrow key
From @Cimbali: より多くのバインド可能なコマンド (previous-history: 履歴リストから `up’ を移動するなど) が利用可能になりました このリファレンスページ にあります
21 Damien Garrido 2014-09-26
Crtl+Aでスタート地点に移動します
以下は Bash のキーボードショートカットのリスト です
14 Iain 2010-01-11
実際に送信しているのは ^[[1~
であり、これはターミナルエスケープシーケンスで構成されています
- ^[ – 脱出
- [ – 左の角括弧
- 1 – 1
- ~ チルダ
Ctrl+Vを押してからHomeを押すとわかります
ホームキーとエンドキーのPuTTYキーボードの設定をrxvtに変更する(これによりエスケープシーケンスが^[[H
になる)か、使用している$TERMを変更する(または~/.inputrc
を編集する)ことで問題が解決するかもしれません
ところで、Homeを押したときに表示されるチルダとホームディレクトリを表すチルダには関係がありません。例えば、私の設定では Page-Down を押すと ^[[6~
が出てきますが、これも正しく解釈されていなければチルダが表示されます
9 Paused until further notice. 2010-01-11
これらのオプションのどれも私には効きませんでした。私は古い AIX システムを実行しています。私は以下のエイリアスを .profile に追加しなければなりませんでした
alias __A=$(print '\0020') # ^P = up = previous command
alias __B=$(print '\0016') # ^N = down = next command
alias __C=$(print '\0006') # ^F = right = forward a character
alias __D=$(print '\0002') # ^B = left = back a character
3 TruCK 2015-01-22
他の方法では動作しませんでした。しかし、シェルが Bash であれば動作する AutoHotkey スクリプトを作成しました
#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a ; beginning of line
End::Send ^e ; end of line
+^Del::Send ^k ; delete whole line after cursor
+End::Send ^k ; delete whole line after cursor
+Home::Send ^u ; delete whole line before cursor
^Del::Send !d ; delete word after cursor
^BS::Send ^w ; delete word before cursor
^Left::Send !b ; jump word left
^Right::Send !f ; jump word right
#IfWinActive
ただし、これらの bash ホットキーのすべてが他のプログラムで動作するわけではないので、注意して使用してください
2 Ciantic 2014-04-01