2016-05-07 15 views
4

OSXでデフォルトではわからない人のために、ctrl + hはバックスペースと同じように動作します。`git add -p`はCtrl + hで動作しません

何らかの理由でgit add -pを実行しているときに、間違ったキーを入力すると、ctrl+hはバックスペースを使用せず、代わりに^Hという広告を表示します。

誰かがこれが予想外の動作をする理由を知っていますか?

私は好きなように動作させる方法があれば知っていますか?

+0

bashを使用していますか? –

+0

はい、bashを使って 'git-add'プログラムを実行します。ここで私はこの問題を見ています。 – BananaNeil

答えて

3

これはGitとはあまり関係がありません。

問題はバックスペースキーは、ASCII-DELまたはcontrol-Hのいずれかをオプションで送信し、control-Hはcontrol-Hを送信することです。ほとんどのエディタや一般的なシェルを含む一部のプログラムでは、の両方のキーをとして "前の文字を削除"として扱います。

他にも、あなたが見たように、しないでください。

ここにはさまざまなオプションがあります。私が使用しているのは、バックスペースキーを変更してcontrol-Hを送信し、sttyの設定をcontrol-Hを「前の文字を削除」キーに設定することです。ターミナルの設定(プロファイルごとに変更可能)の[詳細設定]タブの下にある[DeleteはControl-Hを送信します]というチェックボックスがあります。

stty設定について、あなたは自分の.login.profileまたは新しいシェル・ウィンドウを作成するときに実行されるいくつかの他のファイルに行stty erase ^Hを追加する必要があります。シェルが対話的なシェルである場合にのみ設定するよう注意してください。シェルの最初のプロンプト(または他のシェル固有の方法(明らかにどのシェルを使用するかに依存します))を調べることによって知ることができます。

+0

"stty"設定でコントロール "H"を "前の文字を削除"キーに設定する方法を詳しく教えてください。 – BananaNeil

+0

私は実際に 'tcsh'を使用していますので、' .login'に 'stty erase^H kill^X status^T eol2 undef'(メモ、" control "ここの文字は実際には帽子/シフト-6、その後に続く文字)。実際、これは 'status'や' eol2'設定のないシステムの場合、いくつかのわずかなバリエーションを持つ "if"節の中にありますが、MacOSXでは問題はありません。 control-Hをdelete-previous-characterにするのは 'erase^H'の設定です。 – torek

関連する問題