PuTTYおよび画面でCtrlキーと矢印キーを使用する


33

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

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


うわー、ミンティは素晴らしいです-しばらくの間、Windows用のまともなターミナルエミュレータを探していました。そのためのおかげで。
11

しかし、code.google.com^[[1;5A
p /

回答:


13

編集:

ここに私のために働いたものがあります:

  • 私の~/.bashrcセットTERM=xterm(私のものはたまたまTERM=xterm-256colors)画面のオーバーライドTERM=screen
  • 私はセットのPuTTY>ターミナル>特長>を無効にアプリケーションカーソルキーモードを確認します
  • 私が入るtput smkxのBashプロンプトで
  • 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キーコードがありません。


set -o vi(あなたがそのタイプの人なら:)
MikeyB

1
@MikeyB:それはどのように役立ちますか(ところで、役に立たない)?
追って通知があるまで一時停止します。

ありがとう。私が望んでいた答えではありませんでしたが、今はこの制限に沿って進むか、別のキーバインディングを使用できます。
kbosak

1
@Dennis:まあ、あなたが頭を包むことができるタイプの人なら、それはあなたにフォワード/バックワードを処理する別の方法を提供します。set -o viviコマンドラインモードをオンにしてESC、viキーを押して使用し、コマンドラインを移動して編集できるようにします。
MikeyB

1
@kbosak:その答えにも満足していません。それが私がそれ修正した理由です。:-)
追って通知があるまで一時停止します。

23

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

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

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


5
これは私のために働いて、受け入れられた答えよりはるかに簡単でした。
ペトリュスセロン

受け入れ答えはなかったが、これはあまりにも私のために働いた
Schiavini

+1簡潔な答えがうまくいく。
アダムキャビネス14年

3
必ずファイル$include /etc/inputrcの先頭に配置してください.inputrc。そうしないと、readlineはシステム全体のバインディングを読み取らず、HomeやEndなどのキーが壊れます。
ジェームズ

1
これは受け入れられた答えであるはずです!
シャイレン

4

私はそれが私のために働いたことがないので、あなたはPuttyがスクリーンを使用せずにctrl-矢印キーを正しく送信するようにしたことにいくらか驚いています。私の解決策は、alt-arrowkeys(メタ矢印キー)の使用に切り替えることでした。これは、デフォルトでbashで同じ前方ワード/後方ワードバインディングを持っていると信じていますが、zshを認識するためにいくつかの追加コマンドを発行する必要がありました:

bindkey "^ [^ [[C" forward-word#Meta-RightArrow
bindkey "^ [^ [[D" backward-word#Meta-LeftArrow

私もこのルートに行くかもしれません。左のctrlキーは、metaキーまたはaltキー(少なくとも私のキーボードでは)よりもはるかに簡単にヒットします。しかたがない。
kbosak

4

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

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

puttyは、ctrlのカーソルキーモードの意味を反転します。これは、tmuxが適切に検出するのが少し難しいです。ctrlキーを正しく取得するには、kUP5(Ctrl-Upなど)が調整済みバージョンになるようにterminfo設定を変更し、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


0

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


問題はinputrcにあるとは思わない。inputrcにエントリを入れることを含むいくつかの可能な解決策を既に試みましたが、成功しませんでした。繰り返しになりますが、Ctrlキーと矢印キーの画面に誤ったコードが送信されているようです。また、これは実際にはささいな不便さであるため、これよりも多くの時間を費やしたくありません。
kbosak

0

Puttyで適切な文字エンコーディングがありますか?UTF-8でサーバーに接続し、パテが標準文字セット(vim)にある場合、矢印キーが書き込まれます。PuttyがUTF-8の場合、カーソルを移動できます。あなたの場合も同じかもしれません...


これはvi / vimの問題ではなく、PuTTYで文字セットのオプションが1つしか見られませんでしたが、助けにはなりませんでした。
kbosak

ターミナル->キーボード->ファンクションキーとキーパッドでさまざまなオプションを試してください。ところで、私にとってCtrl-Arrowはbashでも機能せず、Ctrlを押さなかった場合と同じです。
モリアーティ教授

ええ、私は運のない多くのオプションとオプションの組み合わせを試しました。参考までに、bashのctrl矢印キーを使用するためにinputrcに入力できるエントリがいくつかありますが、screenを使用する場合は役に立ちません。
kbosak

0

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


0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.