Eu costumava ter um atalho de teclado para a seguinte ação:
"Abra a pasta que contém este arquivo em Dired + e coloque o ponto (cursor) no arquivo"
Acredito que sim C-x C-j
, e não me lembro de configurá-lo manualmente. Parece ter sumido. Alterações recentes em Dired + talvez tenham alterado isso?
De qualquer forma, existem funções interativas internas Dired ou Dired + que eu poderia usar para isso? Caso contrário, como posso construir um?
Eu posso correr M-x dired-jump
. O problema parece ser que a combinação de teclas se foi. Quando eu faço C-h k C-x C-j RET
, eu vejo C-x C-j RET (translated from C-x C-j <return>) is undefined
.
dired
key-bindings
Amelio Vazquez-Reina
fonte
fonte
dired-jump
ou nenhuma ligação de chave a ela.dired-jump
nem é mencionado no Dired + .emacs -Q
. (2) Se você não conseguir reproduziremacs -Q
novamente, divida o arquivo init de forma recursiva, para ver qual parte está causando o problema. Para fazer isso, comente 1/2, depois 3/4 e 7/8 ... Você pode usarcomment-region
para fazer isso (C-u
descomentar). Depois de tentar tudo isso, se precisar de mais ajuda (e provavelmente não precisará), pergunte aqui.Respostas:
O problema
jabber.el
edired-x
infelizmente entra em conflito com este atalho de teclado. O Jabber usaC-x C-j
como prefixo para todas as suas chaves, enquanto o dired o define como seu amadodired-jump
(é provavelmente por isso que o último é opcional através dadired-bind-jump
variável).Para complicar ainda mais, se o Jabber estiver instalado,
package.el
ele vincula essa chave duas vezes! Primeiro na inicialização do Emacs, depois no carregamentojabber.el
.A solução
Vincule
dired-jump
antes e depois do carregamento do Jabber. Certifique-se de que isso aconteça depois(package-initialize)
no seu arquivo init (se você o usar).Ou, se você estiver usando o Emacs 24.4, o seguinte é um pouco preferido:
Para continuar usando o mapa de teclas jabber, você pode vinculá-lo a uma sequência de teclas diferente, como em
fonte
#
antes'dired-jump
significa? Eu também vi isso sendo usado ao adicionar funções aos ganchos.function
citação. É quase o mesmo que uma cotação regular, mas informa ao compilador de bytes que este símbolo é uma função (que pode ser usada para fornecer avisos úteis). É irrelevante no seu arquivo init, mas é relevante nos pacotes, por isso tento motivar as boas práticas.Como outros já observaram, você está pensando na função
dired-jump
, que é fornecida pelo Dired-x (não Dired +), e é vinculada aC-x C-j
quando a biblioteca Dired-x é carregada. (É possível desactivar esta ligação, definindodired-bind-jump
anil
antes Dired-x é carregado).Dado que
C-x C-j
faz algo, em vez de reclamar queC-x C-j
é indefinido, o que está acontecendo é que algo mais definiu um vínculo para ele. Quem definiu a última ligação ganha.Portanto, você precisa rastrear qual outro pacote que você está carregando está substituindo
C-x C-j
. Esse pacote é carregado após o Dired-x, portanto, se você está carregandodired-x
no seu arquivo init, é algo que você está carregando mais adiante ou algo que é carregado automaticamente em algum momento.Como
C-x C-j
não faz nada por si só, mas espera que outra tecla seja pressionada, é uma tecla de prefixo. PressioneC-x C-j C-h
para ver uma lista de ligações que começam com esse prefixo. Isso deve lhe dar uma boa idéia do pacote responsável. A hipótese de Malabarba de que é o modo Jabber é plausível. Depois de identificar uma sequência de teclas que começa com o prefixoC-x C-j
, pressioneC-h k
seguido por essa sequência de teclas. Isso mostrará o texto de ajuda para esse comando e o pacote que fornece o comando. É provável que o pacote que fornece o comando seja o mesmo que define a ligação.É improvável que você precise ir tão longe, mas, se houver alguma ligação de chave que você não possa rastrear, consulte Como posso descobrir em qual mapa de chave uma chave está vinculada?
Se você deseja carregar o pacote que substitui
C-x C-j
, mas não deseja que ele assuma essa ligação, veja se há uma opção para ignorar essa ligação. Caso contrário, você pode recuperar a ligação: organize para executar(global-set-key "\C-x\C-j" 'dired-jump)
após o carregamento do pacote incorreto. Pode ser o suficiente para colocar isso no final do seu arquivo init. Caso contrário, você pode usarfonte
O que você vê quando faz C-hkC-xC-jRET?
Você deve ver que está vinculado
dired-jump
. Se não for, então você não quer ter feitorequire
dedired-x
ou você / algum outro pacote cancelou que a ligação com outra coisa.Se você pode fazer
M-x dired-jump
e apenas precisa dessa ligação, pode fazerMas se
dired-bind-jump
fort
e se você tiver(require 'dired-x)
, esse pacote definirá essa ligação para você.fonte
C-x C-j RET (translated from C-x C-j <return>)
é indefinido.M-x dired-jump
? Caso contrário, você não terá odired-x
pacote carregado.M-x dired-jump
. Esqueceu de mencionar que no OPemacs -Q
e fizer exatamente(require 'dired-x)
. Se isso funcionar, preencha gradualmente sua containit.el
até que a ligação desapareça mais uma vez; Dessa forma, você encontrará o culpado. Outra maneira é fazer grep / ag / ack recursivoC\-x\s+C\-j
na sua pasta .emacs.d.Eu uso isso regularmente. Apenas testei
emacs -Q
, é tudo o que você precisa:A funcionalidade é fornecida por
dired-x
, que é diferente dedired+
. O primeiro é fornecido com o Emacs principal, o último é uma biblioteca de extensões de terceiros.fonte
dired-bind-jump
está definido como seu valor padrãot
.dired-bind-jump
ét
. Eu também estou carregando(require 'dired-x)
. Strange