Ctrl +左/右矢印キーの問題


25

最後のシステムの更新後、zshターミナルのctrl +左/右矢印コマンドは何もしません。また、ctrl + uには何か問題があります。通常、このコマンドはカーソルから行の先頭までを消去しますが、今では行全体を消去します。皆さん、ありがとうございました。


受け入れられる答えを見つけましたか?Goncaloの答えは素晴らしいと思います。
レオレオポルトヘルツ준영

回答:


44

FWIW、これは私の環境(rhel5.x)でzshのデフォルトを使用して機能したものです。

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

5
^[^[[Dおよび^[^[[C、それぞれ、OSX
Jon z

1
確認されたとおり、Goncaloの提案はDebian 8.5でも機能します。なぜこのコードが.zshrcデフォルトで組み込まれていないのか不思議に思っています。
レオレオポルドヘルツ

Ubuntu Artfulの魅力のように動作します、ありがとう!
コンラッドガルス

場合、誰もが使いたい$terminfoキー:エスケープシーケンスの代わりに$terminfo[kLFT5]$terminfo[kRIT5]私のために働いた
Griddo

14

行末にカーソルがあるため、Ctrl + Uが最も可能性が高いです。第二に、Gentooのどのバージョンを「最後のシステムアップデート」と呼んでいますか?

そして、Ctrl +左/右で何をしたいですか?

  • zsh構成に追加します。

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

  • そして、私が見つけた古いスクラップから(助けになるかもしれません):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • またはこのリンクをご覧ください。

注:構成は機能するが、想定されているキーがcat > /dev/null 期待どおりに機能しない場合は、おそらくキー定義が自分のものとは異なるためです: 出力を取得し、それに応じて調整するキーを押します。


1
「カーソルが行の最後にあるので、Ctrl + Uが最も可能性が高い」というのはもちろん、カーソルが中央にあるときです。「そして、Ctrl +左/右で何をしたいですか?」通常、ctrl +左矢印:左に行く単語などをスキップします。
riskio

そして、どのシェル/ターミナルを使用していますか?Emacsまたは通常使用する端末と/ bin / bashを必ず使用してください。あなたはスクリーンを走っていますか?
Torxed

1
質問があることを読んでください。
riskio

1
@Masiわからない、私は彼の2年前に答えました、そして私たちの答えはほとんど同じです、私はそれをする2つの異なる方法を示しました。
トルクス16

1
@Masi私が知っているのは、当時(2010-2012年を思い出してください。かなり前のことです)、この2つ(およびその組み合わせ)が多くの異なるシステムで機能しました。私はUnixとLinuxの両方にいました(そして彼はGentoo、ローリングリリースOSにいました)。そして、多くの例にはまだこの痕跡が残ってます。このリポジトリなど。繰り返しになりますが、理由についてはよくわかりませんが、少なくとも2台のマシンで動作したので、共有したいと思いました。そして、彼が今日より明快であることを確かめてください、そして、私は彼がすべての賛成票を得ることを気にしません。これは古い投稿です。
トルクス16

5

動作するものは、ディストリビューション(Gentoo、Debian、RHELなど)やシェル(ZSH、KSH、BASH)に直接依存しません - terminal emulator使用するものとその設定に依存します:konsole、terminator、urxvt、lx-terminalなど。別の標準シェル設定(fx。.zshrc)を使用している場合、および別のシェルを使用している場合は、そのディストリビューションのシェル設定がすでに処理する可能性があります。

次に、ターミナルエミュレータ固有のソリューションをいくつか示します。

urxvt / rxvt-unicode(およびその他)

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

ターミネーター、konsole、xterm(およびその他)

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

ターミナルを起動するより一般的な方法では、CTRL-Vを押してからエスケープコード(名前)が必要なキーの組み合わせ(この場合はCTRL-leftarrowとCTRL-rightarrowのキーの組み合わせ)を押し、それぞれの出力を配置します2つの引用符の間のキーの組み合わせ。


1
CTRL-Vの提案を試みましたか?端末がキーストロークを異なる方法で解釈するので、キーを異なる「シンボル」にバインドする必要がありますか?
miyalys 16

1
回答を更新しました。terminal emulator使用方法に応じて複数のソリューションがあります。ディストリビューションやシェルは関係ありません。1つのターミナルエミュレーターで機能するものが別のターミナルエミュレーターで機能しないため、.zshrcに含まれていない理由もおそらくあります。ただし、zshrc fxの場合はおそらく解決できます。$ TERM環境変数を読み取り、結果に基づいて異なるバインドキー設定を適用しました。
miyalys 16

2

解決しました。

ターミナルを使用:konsoleの

解決するには:ターミナルを右クリック(またはメニューバーの設定)->現在のプロファイルを変更->キーボードマッピング->デフォルトに変更(xfree4)


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