web-dev-qa-db-ja.com

PuTTYと画面でのCtrl-矢印キーの使用

私は検索しましたが、これに対する解決策はどこにも見つかりませんでした。 WindowsのPuTTYを使用して、bashとscreenを実行するさまざまなサーバーに接続しています。コマンドラインでCtrl-矢印キーを使用してbashがWord-to-Wordにジャンプするように見えますが、画面内では機能しません。画面ではなく、ctrl-leftは "^ [OC"を送信し、ctrl-rightは "^ [OD"を送信します。画面内では、代わりに "^ [[C"および "^ [[D"を取得します。これは、左/右矢印キー。PuTTYを使用しているときに画面にctrl矢印キーを認識させる方法はありますか?(FYI、PuTTYの代わりにLinuxでgnu-terminalを使用しているときにこの問題があったことを覚えていません)。

更新:これが機能するために必要なエスケープコードを送信していないため、PuTTYに問題があるようです。今はあきらめて、Cygwin + minttyを使用しています。

34
kbosak

編集:

これが私のために働いたものです:

  • 私の~/.bashrcは、画面のTERM=xtermを上書きしてTERM=xterm-256colors(たまたまTERM=screen)を設定します
  • PuTTY>ターミナル>機能>アプリケーションカーソルキーの無効化モードチェック済みに設定しました
  • Bashプロンプトでtput smkxと入力します
  • Ctrl-矢印キーが単語ごとにジャンプするようになりました

  • 情報提供の目的で、私が行う場合:
    tput smkx | hexdump -c

    0000000 033 [ ? 1 h 033 =
    そして
    tput rmkx | hexdump -c
    私にくれます
    0000000 033 [ ? 1 l 033 >

これをもう少し良いものに作り直す方法はあると思いますが、これは私がこれまでに得たものであり、うまくいくようです。

元の回答:

info screenから:

「画面」セッションの各ウィンドウは、VT100端末をエミュレートし、いくつかの追加機能が追加されています。 VT100エミュレーターはハードコードされており、他の端末タイプはエミュレートできません。

また、VT100にはCtrl-Arrowキーコードがありません。

ここ で述べたように、uは〜/ .inputrcに入れることができます:

"\eOD": backward-Word
"\eOC": forward-Word

それは私のために働いた。

24
Fayer Michael

画面を使用しなくても、PuTTYがctrl-arrowkeysを正しく送信してくれたことに少し驚いています。私の解決策は、alt-arrowkeys(メタ矢印キー)を使用するように切り替えることでした。デフォルトでは、bashで同じ順方向ワード/逆方向ワードのバインディングがあると考えていますが、zshがそれらを認識するためにいくつかの追加コマンドを発行する必要がありました。

 bindkey "^ [^ [[C" forward-Word#Meta-RightArrow 
 bindkey "^ [^ [[D" reverse-Word#Meta-LeftArrow 
4
Zed

他の人が私と同じようにこの古い質問を見つけた場合、より最近の解決策:

Ctrlキーと矢印キーはPuTTYでは機能しません!私は何をしますか?

PuTTYはctrlのカーソルキーモードの意味を逆にします。これは、tmuxが正しく検出するのが少し難しいです。 ctrlキーを正しくするには、terminfo設定を変更して、kUP5(Ctrl-Upなど)が調整されたバージョンになるようにします。また、tmuxがモードを変更しないようにsmkx/rmkxを無効にします。たとえば、.tmux.confの次の行を使用します(TERMがxtermに設定されていると想定)。

set -g terminal-overrides "xterm *:kLFT5 =\eOD:kRIT5 =\eOC:kUP5 =\eOA:kDN5 =\eOB:smkx @:rmkx @"

これはtmux 1.2以降でのみ機能することに注意してください。

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ

4
Collin Grady

私はちょうど反対を経験しました!私にとって、ctrl-leftとctrl-rightはコマンドラインで望ましい効果がありませんでしたが、それでも画面(およびemacs)では機能しました。あなたのプログラムが特殊文字を入力する方法と関係があると思います。 (私は現在MobaXtermを使用しています。)

私の修正は、次の2行を.inputrcファイルに追加するだけでした。

";5D": backward-Word
";5C": forward-Word

;5C;5Dは、この修正の前に使用したときにコマンドラインに表示されたものです。)

1
Ness

適切にデバッグ/設定したい場合は、terminfo、ncurses、screen、PuTTYのドキュメントを参照してください。また、bashショートカットはinputrcで設定できます。 bashのmanページを調べて、inputrcを検索してください。

0

[ターミナル]> [キーボード]> [ファンクションキー]> [Xterm R6]を使用しています。これにより、htop(f4 searchなど)のファンクションキーが期待どおりに機能します。

私が見つけたのは、CTRL +矢印を使用する代わりに、ALT +矢印が代わりに単語をジャンプすることです。

0
Dan

PuTTYで適切な文字エンコードを使用していますか? UTF-8でサーバーに接続し、PuTTYが標準の文字セットである場合、vimでは、矢印キーが書き込まれます。 PuTTYがUTF-8の場合、カーソルを移動できます。多分それはあなたの場合と同じです...

0
Dom

ターミナル->機能の下のPuTTY設定には、いくつかの「無効化」チェックボックスがあります。アプリケーションのカーソルキーまたはアプリケーションのキーパッドモードを無効にしてみてください。PuTTYが「スマートすぎ」て、サーバーと互換性のない制御文字を送信することがあります。

0
tylerl