Mac OS XのzshでFn-Deleteをバインドする


22

zshでは、Fn + Delete(前方削除)を押すと、チルダ(〜)が挿入されます。これは、zshにキーバウンドがないことを示しています。

バインドし、正常に動作させるにはどうすればよいですか(カーソルの前で削除します)?

回答:


20

まず、生成されるシーケンスを把握します。

echo "CtrlVFnDelete" | od -c

次に、通常のzshバインドメカニズムを使用してそのシーケンスをバインドします。


1
〜> echo "〜" | od -c 0000000〜\ n 0000002〜>この情報で今何をしますか?
トーマスR

10
@rixth:チルダだけを実際に出力するわけではありません。を使用することはできません。echo "~"実際には、イグナシオから与えられた指示に従う必要があります。私のシステムでは、それは^[[3~(またはod出力として:)です033 [ 3 ~。だから、コマンドはbindkey "^[[3~" delete-charあなたの中に行くだろうだろう~/.zshrc
追って通知があるまで一時停止します。

2
上記を明確にするために、ctrl-v「通常の処理を行う代わりに、次に押す文字をエスケープされていないリテラル文字として挿入する」という特別なエスケープシーケンスを使用します。つまり、に変換されず~、エスケープシーケンスとして残ります。
-NHDaly

上記の出力を使用してバインドキーを取得する方法がわかりません。私の出力は0000000 C t r l V F n D e l e t e \n 0000016です。
オリバージョセフアッシュ

4

私にとって、上記はトリックをしませんでしたので、次のキーバインディングをmyに追加しました~/.zshrc

bindkey "\e[3~" delete-char

参考:私はMac(High Sierra)を使用しています。


そして、Fn + F1など、バインドしたい他のキーのコードを知る方法は?そのため、対応するコードをに設定でき~/.zshrcます。
-alexventuraio

1
あなたは、入力することができcat、その後、キーを入力します。例えばFn+F1^[OPに与えます。
-LordTribual

1

bindkey 'CtrlvFnDelete' delete-char

これにより、Fn+ がバインドさDeleteれ、単一の文字が前方に削除されます。上記が明確でない場合は、引用符を入力する間にCtrl+ vFn+ Deleteを入力する必要があります。Ctrl+をv使用すると、その後に続くキーのリテラルエスケープエスケープシーケンスを入力できます。

この行を~/.zshrcファイルに入れることができます。

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