web-dev-qa-db-ja.com

CygwinのLinuxのような^ A(ctrl-a)

Win10に最新のCygwinをインストールしました。 * nixの習慣から、現在の行の先頭に移動するために^Aを押すことに気付きましたが、デフォルトの(できれば変更可能な)動作は、コンソールのテキストコンテンツ全体を選択することです(IMHOは一貫性がありません) ^E^D^Kなどの他のEmacsのようなショートカットは期待どおりに機能するため)。

これを変更して、^Aに「正しいアクション」を実行させ、行の先頭に移動させる方法はありますか?

1
David

これは inputrc および bindbuiltin のドメインです。

具体的には、バインディングは次のようになります。

"\C-a": beginning-of-line

または

bind '"\C-a":beginning-of-line'

これはデフォルトのところであるため、システムでは、どこかで再定義する必要があります。


Bashリファレンスマニュアル:Readline Init File Syntax 、 "Key bindings"セクションに従って、bind -pを実行して、現在のすべてのバインディングをダンプし、再定義されているかどうかを確認できます。

そうである場合は、procmonを使用して、起動時にbashが読み取るファイルを確認します。

そうでない場合、それを行っているのはBashではありません。おそらく、ターミナルエミュレーターは、キーバインディングなどの設定を確認してください。

0
ivan_pozdeev

ターミナルオプションの「Ctrlキーのショートカットを有効にする」オプションのチェックを外すことでこれを解決しました。 ->ターミナルフレームを右クリック->プロパティを選択して設定を見つけます。

2
Steve

Ctrl-Aは、bashの「バインド」機能がカーソルを行の先頭に移動するために使用するものではない可能性が高いことに注意してください。むしろ、bashはASCIIコード1に応答します。

多くのターミナルプログラムでは、Ctrl-Aを押すと、ASCIIコード1がフォアグラウンドプログラムに送信されます。ただし、ターミナルプログラムはCtrl-Aを使用して別のタスクを実行しているようです。したがって、 Ctrl-Aを押すと、ターミナルプログラムはASCIIコード1をbashに送信しないため、bashはそれを受信しません。そのため、bashはカーソルを移動しません。

1つの解決策、そしておそらく最も良い解決策は、ターミナルプログラムの設定にある可能性があります(このページのコメントと別の回答はすでに対処しています)。

ただし、別の簡単に利用できる回避策がある可能性があります。つまり、Altキーを押しながら、テンキーの1番を押します。 (ラップトップを使用している場合、「Fn」というラベルの付いたキーも押さないと、テンキー番号が使用できない場合があります。)テンキーの番号1を押して放した後、Altキーを放します。

Altキーを離すと、指定されたASCIIコード(ASCIIコード1)がターミナルプログラムに送信される可能性があります。

さらに別のアプローチは、確かにはるかに複雑ですが、どういうわけかASCIIコード1をクリップボードに入れてから、ターミナルプログラムにクリップボードの内容を貼り付けることです(これは多くの場合、 Ctrl-Vを使用)。

0
TOOGAM