Como evitar digitar "espaço" após "^" para subir no diretório em dired?

9

^é a ligação de chave para mover para o diretório pai em dired("Diretório para cima").

No entanto, em Gnu Emacson Windows 7 Professional 64-bitcom o meu layout de teclado alemão, não é suficiente para digitar "^", mas eu tenho que tipo de espaço depois de fazer o trabalho de ligação chave.

Como redefinir o atalho de teclas para evitar pressionar o espaço e mover para cima apenas com "^"?


C-h k ^<space> retorna

^ executa o comando dired-up-directory, que é uma função Lisp compilada interativa em `dired + .el '.

Está vinculado a ^,.

(diretório direcionado e outra janela opcional)

Execute Dired no diretório pai do diretório atual. Encontre o diretório pai nesse buffer ou em outro buffer. Cria um buffer, se necessário.

Principalmente inofensivo
fonte
4
Esse é um problema do sistema operacional, pois esse comportamento soa como teclas de aderência e está incorporado em certos mapas de teclas, como us-intlno Linux.
wasamasa
Parece que wasamasa está certo; nesse caso, você deve estar perguntando como vincular o comando a uma chave diferente.
Andrew Swann
@AndrewSwann: Talvez, talvez não. É uma coisa boa para verificar, sim. Mas o comportamento do Linux deve ser irrelevante aqui, assumindo que a microsoft-windowstag seja apropriada.
Drew
A maneira mais simples de verificar para este estaria procurando se o mesmo comportamento se aplica a outros programas, como por digitação ^no notepad.exe.
wasamasa
3
Eu acho que você tem apenas algumas opções: (1) use um layout de teclado diferente no qual ^ não seja uma tecla morta - isso é feito no nível do sistema operacional, não no emacs, ou (2) vincule outra tecla dired-up-directorye use-a em vez disso, ou (3) Convide o problema e digite o espaço após ^. Eu estou indo com (3) mesmo, mas eu não encontrá-lo irritante.
Harald Hanche-Olsen

Respostas:

11

Com a configuração do teclado, a tecla ^ é provavelmente uma "chave morta". É uma chave destinada a ser usada em conjunto com outra, a fim de produzir outro caractere. Nesse caso, pretende-se produzir caracteres acentuados: ^ e produzirá ê, ^ a produzirá â e assim por diante.

Porém, não deve ser específico para o emacs: acho que todos os seus aplicativos exigem que você pressione ^ e produza um ^ real na tela.

Para resolver isso, basta usar outro layout de teclado. No caso de seu layout em alemão em um ambiente Windows, basta consultar /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- com o layout do teclado alemão , esperando que seja a coisa certa a fazer.

YoungFrog
fonte
0

Eu acho que você confirmou a ligação de ^Dired como sendo dired-up-directory, portanto, qual comando é invocado não é o problema, a menos que você ou algo que você carregou tenha recomendado esse comando. (Use C-h k ^e deixe-nos saber se o comando é recomendado.)

Você marcou isso com microsoft-windows. Talvez mencione qual versão do MS Windows você usa. Não vejo isso no Windows 7 de 64 bits.

Você vê o mesmo comportamento se iniciar o Emacs usando runemacs -Q, ou seja, sem nenhum arquivo init? Se assim for, por favor, dê uma receita aqui, a partir de runemacs -Q. Nesse caso, isso pode ser um bug do Emacs.

Se você não encontrar o problema emacs -Q, divida o arquivo init de forma recursiva até reduzi-lo para encontrar o culpado. Você pode usar o comando comment-regionpara comentar a região do código (use C-ucom ele para descomentar a região).

Depois de encontrar o código culpado, você pode investigar isso mais de perto. Ou você pode relatar aqui o que encontrou, se precisar de mais ajuda. Para obter a melhor ajuda, seja o mais específico possível.

Quanto à redefinição da chave: isso não é um problema - basta usar (define-key dired-mode-map SOME-KEY 'dired-up-directory), onde SOME-KEYestá uma descrição da chave. Por exemplo, para vincular o comando C-o, você pode usar isto:

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

Atualizado após seu comentário e outros -

Como você vê a mesma coisa emacs -Q, o problema é algo na configuração do MS Windows (ou seja, fora do Emacs) ou um bug no próprio Emacs.

Mas outros comentários deixam claro que o problema parece ser uma chave no MS Windows. Tente desativar as teclas adesivas .

Desenhou
fonte
3
Isso quase certamente não vem ao caso. O comentário de @wasamasa é totalmente relevante. Para elaborar um pouco, o ponto é que, como ^ é persistente, o emacs nem vê o evento de pressionamento de tecla até que o usuário digite um espaço.
Harald Hanche-Olsen
obrigado pela sua resposta detalhada! Sim, com runemacs.exe -Qisso é o mesmo. Digitar ^ em um buffer só digita o caractere, se eu digitar <space> ou outra tecla posteriormente. Mesmo no diredmodo, ele precisa ^1 <space>subir. Para define-key: mas eu gostaria de usar a tecla ^ para esta ligação, existe uma maneira de evitá-la aguardando <espaço>?
precisa saber é o seguinte
@ Harald: então o que posso fazer?
precisa saber é o seguinte