zshでALT + LeftArrowKeyソリューションを探しています


127

私は最近bashからzshに切り替えたばかりですが、一度に単語を前後に移動するためにAlt+ LeftArrowKeyAlt+が欠けてRightArrowKeyいます。

現在、Alt+ を押すとLeftArrowKey、2、3文字戻って行き詰まります。これ以上後戻りすることはなく、予想通り、Alt+で行末に戻ることはありませんRightArrowKey。矢印キーを使用して行の最後に移動することもできません。最後から2番目に移動できます。行に新しい文字を入力することも、削除することもできません。

最愛のショートカットを取り戻すにはどうすればよいですか?

それが重要な場合、私はターミナルを使用してMac OS Xを使用しています。

回答:


240

実行してcatからキーを押すと、ショートカットが送信するコードが表示されます。
(プレスCtrl+をC殺すためにcatあなたが完了したら。)
私にとっては、(Ubuntuは、konsoleの、xterm)などを押すAlt+を送信し^[[1;3D、私は私の中に入れてしまうので、.zshrc

bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word

(実際にCtrlは、WindowsまたはLinux GUIの通常のテキストボックスのように、単語ごとに移動するには+矢印を使用することを好みます。)

関連質問:ターミネーターターミナルエミュレーターでZshを実行する場合の.zshrcのキー設定(ホーム/終了/挿入/削除)の修正


14
あなたは私の救世主です!私のMacでは "Alt + <-"は "^ [b"を与え、->は "^ [f"を与えたので、これらを追加した。魅力のように機能します。Ctrl +矢印は、Macのデスクトップを切り替えるために予約されています。
Mads Ohm Larsen

1つの注意点は、^[[Dctrl + vが報告している間、ctrl + <-catが報告していたことです^[OD。Ctrl + vの提案は機能しましたが、猫は機能しませんでした。さらに、ctrl + vはalt + <-とalt +->の両方で同じことを報告していました。猫の出力を見て、「[[」を「O」に置き換えることで、これら2つを追加することができました
Mike S

10
catの下の私の出力は^[^[[C、前方ワードと^[^[[D後方ワードに関するものですが、.zshrcでのこれらの更新は、何らかの理由で機能しませんでした。
Yunti

2
@Yunti -置くbindkey "^[^[[D" backward-wordと、bindkey "^[^[[C" forward-word〜/ .zprofile私のために働きました!
フェルナンドエスピノサ

おとこ!私を助けた!共有してくれてありがとう!
ジョアンエンリケ

185

シェルに関係なく、iTermを使用している人向け

ここで提供されるすべてのソリューションは、私の意見では後方アプローチを取ります。あなたは本質的にあなたのシェルにあなたがターミナルで設定したいくつかのescシーケンスや他のキーバインディングをリッスンするように言っており、シェルを切り替えるときに互換性の問題を引き起こしますすべてではないにしても、いくつかのキーバインド)。

ほとんどのシェルには、あらかじめバインドされているデフォルトのシーケンスのセットがあります。さらに、100%の一貫性はありませんが、十分に近いです。したがって、シェルで特定のアクションのキーバインディングを作成するために私が見つけた最も簡単な方法は、シェル全体で一貫したデフォルトのキーバインディングにバインドするようにターミナルアプリケーションに指示することです。

私はネイティブマックキーバインドの近くに応答するためにあなたの端末を取得するための圧縮ソリューションを書いたここに

iTerm設定+ ,を開き、Profilesタブに移動します(Keysタブは使用できますが、プロファイルにキーバインドを追加すると、プロファイルを保存して複数のコンピューターに同期できます)およびkeysサブタブに移動し、次のように入力します。

カーソルを1単語左に移動する

+ 16進コードを送信:0x1b 0x62

カーソルを1単語右に移動

+ 16進コードを送信:0x1b 0x66

そして、ZSHだけでなく、BASH、irb / pry、nodeなどを実行しているサーバーにSSHで接続した場合にも、望ましい動作が得られるはずです。


1
zshが正常に動作しているがirbやその他のコンソールは動作していないため、受け入れられたソリューションに問題がありました。以前の設定(推奨されるiTermプロファイル内)を消去することは、魅力のように機能します!
llekn

1
bindkeyソリューションは、Macで迷惑なエラーを鳴らします。これは正しい方法です。
Weishi Zeng 2018

@Levシェルがデフォルトの設定にマッピングされていない可能性があります。実行bindkey | grep forward-wordすると"^[f" forward-word戻りが表示されますが、表示されない場合は2つのオプションがあります。返された他のいずれかにマップするか、に追加"^[f" forward-wordします.zshrc
トラビス

これは、シェル間で"^[f"最も一貫して使用されるバインディングforward-wordであり、私のバージョンのbashでデフォルトで設定されている唯一のバインディングであることに注意します。
トラビス

どういうわけかそれはオプションの代わりに私のためにコマンドボタンで動作しました。ありがとう。:)
Vaibhav Jain

72

以下を〜/ .zshrcに追加すると、OSX Mountain Lionではうまくいきました。

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word

4
このソリューションは、使用のたびにiTerm 2の「ベル」をトリガーするので、単語間のジャンプは非常に煩わしくなります。
2016

1
誰もがこれを起こさないようにする方法を理解しています^ @MatthewMorek
ダニエル神戸

18
「\ e \ e」はベルを防ぎます。ターミナル互換モードでiTerm 2を搭載したEl Capitanでの設定は bindkey "\e\e[D" backward-word bindkey "\e\e[C" forward-word
Johannes Gontrum '28

ありがとう、これでmacOs Sierraの問題が解決しました。ターミナルでもiTerm2でもベル音が鳴りません。
Raspo

どのようにして単語の最初からではなく最後から移動するように設定しますか?
Mafro34 2018年

22

MacOS High Siera 10.13.6またはMojave 10.14.2およびZSHでiTerm2を使用する場合単語から移動するには、次のように入力する必要があります。

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

別のソリューションが機能しない


1
これは私にとっても有効な唯一のソリューションです。ありがとうございました!Mac OS Mojave
jamescampbell

OSカタリナでも動作します!
リードリチャーズ

7

あなたの質問に厳密に答えるものではありませんが、forward-wordおよびのデフォルトのバインディングはbackward-wordそれぞれalt-fです。alt-b

この作品はどこにでも、またと一致しながら、自宅の行を残すためにあなたを必要とし、素敵なニーモニック財産(F =前方、B =バックを)持っていないctrl-fctrl-bされてforward-characterbackward-character

矢印キーを取り除きます!


4
zsh / iterm2では私には機能せず、ƒとsが出力されます(cb cfは機能します)。
Davorin 2017年

2

それを私のために機能させるために、私はこの答えを使用しましたが、コードを交換する必要がありました(左<->右)

⌥+←16進コードを送信:0x1b 0x66⌥
+→16進コードを送信:0x1b 0x62

以下を追加してください ~/.zshrc

bindkey -e
bindkey "^[b" forward-word
bindkey '^[f' backward-word

1

Mavericks(10.9.4)では、コードは1; 5 ...なので、altを矢印でバインドするには、これを使用して.zshrcを作成します。

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

CTRL + Vを使用してから、使用するコマンドを使用できます

ヨセミテではロブのソリューションを使用


1
bindkey "[C" forward-word bindkey "[D" backward-word
Farkie、2015年

0

zshでは、bindkeyコマンドを使用してキーボードショートカットを表示できます。

bindkeyカスタムキーバインドなしで使用可能なオプションを探索するために使用します。

つまり^[b 、単語を後方に移動し、単語を^[f前方に移動します。

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