2017-04-08 12 views
2

私はmacOS Sierraでzshを使い始めています。私は、次のキーマッピングを持っているしたいと思います:zshにShift + Enterキーをバインドすることはできますか?

  • 入力します=>受け入れるライン
  • Shiftキーを押しながら入力します=>受け入れ・ホールド私は区別することができないよう、

しかし、ふたつの間に。私は入力を取得し、Escキーを入力することができるだけだけど、Shiftキーを押しながら入力していない:

bindkey "^M" accept-line  # Enter 
bindkey "^[^M" accept-and-hold # Esc-Enter 
bindkey "????" accept-and-hold # Shift-Enter 

それは、Shiftキーを押しながら入力を検出し、対処することは可能ですか?

答えて

0

これはあなたの問題に答えるかもしれません(コメントに入れることはできません、50人の担当者はいません)。 # showkey --scancodesを試してみると、キーコードが与えられ、マニュアルページが表示されます。 man zshzleと "code"を検索してください。私はシフトキーを成功なくマップしようとしました。それは不可能かもしれません。またbindkey -lウィッヒに見てあなたのEmacsのキーマップ

+0

'showkey'はmacOSでは利用できないようです。 –

+0

http://macbiblioblog.blogspot.de/2014/12/key-code-for-function-and-special-keys.html?m=1またはgoogleでmacのキーコードを試してみることもできます – rav

2

zsh(だけでなく、他のシェル)のためのキーマップとbindkey -M emacsを与えているのはキーバインディングではなく、キー配列に作用しない端末から受信しました。キープレスと組み合わせをキーシーケンスに変換することは、端末の責任です。 Ctr + vを入力し、続いてキーの組み合わせを入力することで、キーの組み合わせのキーシーケンスを取得できます。 シフト + を入力してください。

デフォルトシフトを入力 + すべてが(AT同じキー配列^Mを生成(ならびにCtrlキー + VCtrlキー + シフト + メートル)を入力し少なくともほとんどの一般的な端末エミュレータ)。

幸運なことに、一部の端末エミュレータは送信されたキーシーケンスを設定できます。たとえばについてiTerm2は、あなたが(プロフィール>キーで)エスケープシーケンスを送信するカスタマイズされたキーバインディングを設定することができます、あなたは、例えば、 + を入力しシフトのためのシーケンスを定義することができるはずです[[SEを入力し、zshbindkey '^[[[SE' 'accept-and-hold'に適切な設定を行うことができます。 (残念ながら私は現時点ではMacにアクセスできないので、これをテストすることはできませんでした)。

関連する問題