42

Ubuntuボックスでデフォルトのシェルとしてzshを実行していますが、gnome-terminalを使用するとすべて正常に動作します(私の知る限り、xtermをエミュレートします)。ssh と putty (xterm もエミュレート) を介して Windows ボックスからログインすると、突然ホーム/エンド キーが機能しなくなりました。

これらの行を zshrc ファイルに追加することで解決できました...

bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line

...しかし、ここで何が問題なのかまだ疑問に思っています。何か案が?

4

8 に答える 8

19

PuTTY 構成ダイアログで、[接続] -> [データ] に移動し、接続する前に [ターミナル タイプ] 文字列にlinuxと入力します。

于 2009-08-19T10:50:46.117 に答える
7

これは私のために働いています

bindkey -v

bindkey '\eOH'  beginning-of-line
bindkey '\eOF'  end-of-line
于 2014-11-11T09:08:45.140 に答える
6

すべてのディストリビューション (必ずしもすべてのバージョンの zsh ではありませんが、ここでは ymmv) で移植できる適切な答えは、zkbd の zkbd ヘルパー ユーティリティを使用することです。

キーボードの定義
キーボード、ワークステーション、端末、エミュレーター、およびウィンドウ システムの多数の可能な組み合わせにより、zsh がすべての状況に対応する組み込みのキー バインドを持つことは不可能になります。Functions/Misc にある zkbd ユーティリティを使用すると、構成のキー バインドをすばやく作成できます。

zkbd をオートロード関数またはシェル スクリプトとして実行します。

zsh -f ~/zsh-4.3.17/Functions/Misc/zkbd

zkbd を実行すると、最初に端末タイプを入力するよう求められます。それが提供するデフォルトが正しい場合は、単にリターンを押してください。次に、キーボードと端末の特性を判断するために、いくつかの異なるキーを押すように求められます。zkbd は、^H も ^? も送信しない Delete キーなど、異常なものを検出すると警告します。

zkbd によって読み取られたキーストロークは、key という名前の連想配列の定義として記録され、HOME または ZDOTDIR ディレクトリ内のサブディレクトリ .zkbd 内のファイルに書き込まれます。ファイルの名前は、ハイフンで結合された TERM、VENDOR、および OSTYPE パラメータから構成されます。

sourceまたはコマンドを使用して、このファイルを .zshrc または別の起動ファイルに読み込み.、次のように bindkey コマンドで key パラメータを参照できます。

          source ${ZDOTDIR:-$HOME}/.zkbd/$TERM-$VENDOR-$OSTYPE
          [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char
          [[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char
          # etc.

autoload zkbdが機能するには、ファイルが fpath 配列で指定されたディレクトリの 1 つにある必要があることに注意してzkbdください (zshparam(1) を参照)。標準の zsh インストールを使用している場合、これはすでに当てはまるはずです。そうでない場合は、Functions/Misc/zkbd を適切なディレクトリにコピーします。

を参照man -P "less -p 'keyboard definition'" zshcontribするか、メタマンページを検索してくださいzshall

于 2012-04-30T02:38:03.560 に答える
3

パテのようです。Gnome-terminal は Home と End のコード^[OH^[OFそれぞれ送信し、putty は と を送信^[[1~^[[4~ます。Home/End キーを標準モードからrxvtモードに変更するオプションが putty にあり、これで Home キーは修正されるようですが、End キー (現在は を送信します^[Ow) は修正されないようです。どこかにバグレポートを提出する時が来たと思います... :-)

于 2008-10-02T12:59:56.000 に答える
0

これらのバインディングは、emacs モードで設定されたデフォルトのバインディングの一部ではないようです。

「bindkey -e」を実行した後にデフォルトのzshインストールで「where-is begin-of-line」を実行すると、^aにのみバインドされていることが示されます。おそらく、zsh の開発者にその理由を尋ねる必要があります :-)

于 2008-10-02T11:55:42.253 に答える
0

これは私にとってはうまくいきました。

これらの行を ~/.zshrc に追加します

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

# ctrl-bs and ctrl-del
bindkey "\e[3;5~" kill-word
bindkey "\C-_"    backward-kill-word

# del, home and end
bindkey "\e[3~" delete-char
bindkey "\e[H"  beginning-of-line
bindkey "\e[F"  end-of-line

# alt-bs
bindkey "\e\d"  undo
于 2021-11-26T15:00:25.357 に答える