diredされたディレクトリで上に移動するために「^」の後に「スペース」を入力しないようにするにはどうすればよいですか?


9

^dired(「アップディレクトリ」)の親ディレクトリに移動するためのキーバインディングです。

しかし、中Gnu EmacsWindows 7 Professional 64-bit私のドイツ語のキーボードレイアウトを持つ、「^」を入力するのに十分ではありませんが、私は、キーバインディングの仕事をするために、その後にスペースを入力する必要があります。

スペースを押して "^"だけで上に移動する必要がないように、キーバインドを再定義するにはどうすればよいですか?


C-h k ^<space> 戻り値

^コマンドはdired-up-directoryを実行します。dired-up-directoryは、 `dired + .el 'にあるインタラクティブにコンパイルされたLisp関数です。

^にバインドされています。

(dired-up-directory&optional OTHER-WINDOW)

現在のディレクトリの親ディレクトリでDiredを実行します。このバッファまたは別のバッファで親ディレクトリを見つけます。必要に応じてバッファを作成します。


4
この動作はスティッキーキーのように聞こえ、us-intlLinux などの特定のキーマップに組み込まれているため、これはOSの問題です。
wasamasa

wasamasaのような音が正しいです。その場合、コマンドを別のキーにバインドする方法を尋ねる必要があります。
Andrew Swann

@AndrewSwann:たぶん、そうでないかもしれません。はい、チェックするのは良いことです。ただし、microsoft-windowsタグが適切であると仮定すると、Linuxの動作はここでは無関係である必要があります。
2015年

これを確認する最も簡単な方法は、に入力^するなど、同じ動作が他のプログラムに適用されるかどうかを調べることですnotepad.exe
wasamasa

3
選択肢は少ないと思います:(1)^がデッドキーではない別のキーボードレイアウトを使用します。これは、emacsではなくOSレベルで行われます。(2)他のキーをバインドしdired-up-directoryて使用します代わりに、または(3)問題に対処し、^の後にスペースを入力します。私は(3)を自分で使いますが、私それがいらいらします。
Harald Hanche-Olsen 2015

回答:


11

キーボードの設定では、^キーはおそらく「デッドキー」です。これは、別のキャラクターを作成するために、別のキャラクターと組み合わせて使用​​することを意図したキーです。この場合、アクセント付き文字を生成することを意味します。^ eはproduceを生成し、^ aはâを生成します。

ただし、emacsに固有のものであってはなりません。すべてのアプリケーションで、^を押して、画面上に実際の^を生成する必要があると思います。

これを解決するには、別のキーボードレイアウトを使用するだけです。Windows環境でのドイツ語のレイアウトの場合は、https://superuser.com/questions/280005/how-to-make-and-non-dead-keys-on-windows-7-を参照します。 with-german-keyboard-layout、これが正しいことであることを期待しています。


0

あなたが^Diredでのバインディングをであると確認したと思います。dired-up-directoryそのため、あなたまたはロードした何かがそのコマンドを助言していない限り、どのコマンドが呼び出されても問題ではありません。(を使用しC-h k ^、コマンドが推奨されている場合はお知らせください。)

これにタグを付けましたmicrosoft-windows。たぶん、あなたが使用しているMS Windowsのバージョンについて言及してください。これはWindows 7 64ビットでは見られません。

Emacsをを使用して起動した場合runemacs -Q、つまりinitファイルなしで同じ動作が見られますか?もしそうなら、ここからレシピを教えてくださいrunemacs -Q。その場合、これはEmacsのバグである可能性があります。

で問題が発生しない場合emacs -Qは、原因を見つけるためにファイルを絞り込むまで、initファイルを再帰的に二分します。コマンドcomment-regionを使用C-uして、コードの領域をコメント化できます(これを使用して、領域のコメントを解除します)。

犯人のコードを見つけたら、さらに詳しく調査できます。または、さらにサポートが必要な場合は、ここで見つけたものを報告できます。最善のヘルプを得るには、できるだけ具体的にしてください。

キーの再定義に関しては、それは問題(define-key dired-mode-map SOME-KEY 'dired-up-directory)SOME-KEYはありません-を使用してください。ここで、はキーの説明です。たとえば、コマンドをにバインドするには、次のようC-oに使用できます。

(define-key dired-mode-map (kbd "C-o") 'dired-up-directory)

あなたのコメントや他の後に更新されました-

からも同じことがわかるのでemacs -Q、問題はMS Windowsのセットアップ(Emacs外)の問題か、Emacs自体のバグのいずれかです。

しかし、他のコメントは、問題がMS Windowsのスティッキーキーであるように見えることを明らかにしています。スティッキーキーをオフにしてみてください。


3
これはほぼ間違いなくポイント外です。@wasamasaのコメントは完全に関連しています。少し詳しく説明すると、要点は、^はスティッキーであるため、ユーザーがスペースを入力するまで、emacsはkeypressイベントすら見ないということです。
Harald Hanche-Olsen 2015

詳細な回答をありがとう!はい、runemacs.exe -Qそれは同じです。後で<スペース>または別のキーを入力した場合、バッファに^を入力しても文字は入力されません。diredモードも同じで、上^1 <space>に移動する必要があります。for define-key:しかし、このバインディングに^キーを使用したいのですが、<space>を待機しないようにする方法はありますか?
MostlyHarmless

@ハラルド:だから私は何ができますか?
MostlyHarmless
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.