webdevqa.jp.net

Home / End / PgUp / PgDnが正しく動作するようにPuTTYを設定する方法

Homeキー、Endキー、PageUpキー、PageDownキーはすべて、カーソル/ビューを移動する代わりに、bashセッションで~を入力するためのものです。なぜこれが起こり、どの設定を変更する必要がありますか?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

質問はもともと読みました:

PuTTYで、シェル(bash)の「Home」キーを押すと「〜」と入力されるのはなぜですか?それどころか、カーソルを入力したコマンドの先頭に移動させるにはどうすればよいですか。

(その理由は〜がホームディレクトリであることが原因だと思ったが、答えはそうではないと言っている。)

121
RomanSt

Connection> DataタブのTerminal-type Stringをデフォルトの「xterm」から「linux」に変更します。それは私のために働きました。

enter image description here

146
Stephen Irons

これは、PuTTYの端末タイプが正しく設定されていないか、サーバーに正しいterminfo定義がインストールされていないために起こります。

Debianベースのシステムでは、ncurses-termパッケージ(バージョン5.7 + 20081213-1)には、PuTTY用のterminfo定義ファイルが含まれています。 PuTTY-256色およびPuTTY-vt100端末タイプ。このパッケージをインストールしている場合は、PuTTYのセッション設定(Connection - > Data)で、デフォルトの "xterm"の代わりに "Terminal-type string"を "PuTTY"に設定できます。

Stephen Ironsはまた、動作する別の端末タイプとして "linux"についても言及しています。これは以前の経験から正しいと思いますが、最近テストしていません。

私のシステムでは、HomeUpとEndが正しく動作するようになっていますが、PageUp/PageDownはコンソールウィンドウをスクロールしません。 (aptitudeやShift-PgUp/Shift-PgDnのようなncursesアプリケーションではコンソールウィンドウをスクロールできます。)

42
quack quixote

キーまたはキーの組み合わせを押したときにPuTTYによって端末に送信されるコードを確認したい場合は、Ctrl+Vを発行してから目的のキーを押すだけで済みます。

例えば私の箱の上で、Homeキーを押すと私の端末に次の文字列が生成されます。

^[[1~

つまり、PuTTYはエスケープ文字^ [に続けて文字列[1〜を送信します。

~/.inputrcフォルダーに$HOMEファイルを作成することも、システムに応じて/etc/inputrcファイルを作成することもできます。それから、このファイルにPuTTYコードとそれに対応するBashで起動したいBashアクションを入力します。

注:すべての^ [文字を同等の\ e文字列で置き換えます

私の例では、私はHomeキーコードと行頭アクション(デフォルトではにバインドされています)で行を追加します。 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

@Cimbaliより:もっと結合可能なコマンド(previous-historyのように:履歴リストの「上へ」移動)は利用可能です この参照ページでは

19
Damien Garrido

Ctrl + Aで行の先頭に移動します

これがBashキーボードショートカットの リストです

14
Iain

実際に送信しているのは^[[1~で、これは以下で構成される端末エスケープシーケンスです。

  • ^ [ - 脱出
  • [ - 左角かっこ
  • 1 - 1
  • 〜 - チルダ

あなたが押すことでそれを見ることができます Ctrl+V それから Home

HomeキーとEndキーのPuTTYキーボード設定をrxvtに変更することで(エスケープシーケンスを^[[Hにするか、使用している$ TERMを変更することで(または~/.inputrcを編集して))問題を解決できる場合があります。

ちなみにあなたが押すときあなたが得るティルダの間に関係はありません Home そしてホームディレクトリを表すティルダです。たとえば、私の設定では Page-Down ^[[6~を生成します。これは正しく解釈されなかった場合にもティルダを表示します。

9

これらの選択肢のどれも私のために働きませんでした。古い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
2
TruCK

他の方法ではうまくいきませんでした。あなたのShellが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ホットキーのすべてが他のプログラムで機能するわけではないので、慎重に使用してください

1
Ciantic