Adicionei esse recurso agora ao Dired + .
Você pode usar C-y
(comando diredp-yank-files
) para colar arquivos, cujos nomes absolutos foram copiados para o anel de interrupção, no diretório atual. O "diretório atual" aqui é o que dired-current-directory
retorna: o subdiretório inserido onde o cursor está localizado ou o diretório principal Dired se o cursor não estiver em uma lista de subdiretórios.
Com um prefixo arg, C-y
solicita o diretório de destino para a pasta. Portanto, você não precisa estar em um buffer Dired para colar arquivos em um diretório.
Você deve ter copiado os nomes dos arquivos para o anel de morte usando M-0 w
ou M-x diredp-copy-abs-filenames-as-kill
.
Em Dired +, esses comandos também definem variável diredp-last-copied-filenames
para a mesma sequência de nomes de arquivos. C-y
usa o valor dessa variável, não o que está atualmente na cabeça do anel de morte. Isso significa que você não precisa colar imediatamente após copiar os nomes dos arquivos. E isso significa que você pode, em vez de copiar os nomes dos arquivos no ringue, apenas colocar os nomes nessa variável (por exemplo, programaticamente).
Quando você usa C-y
, você é solicitado a confirmar ( y
ou n
). Você também pode pressionar l
(para "lista") quando solicitado, para exibir a lista de arquivos que serão colados.
Você também pode copiar os arquivos marcados do buffer Dired atual e quaisquer arquivos marcados em seus subdiretórios marcados, definidos recursivamente . Para isso, use M-0 M-+ M-w
(prefixo zero arg com comando diredp-copy-filename-as-kill-recursive
) ou use M-x diredp-copy-abs-filenames-as-kill-recursive
.
Observe que com o Dired + você também pode facilmente ter um buffer Dired que lista qualquer número de arquivos e diretórios, de qualquer lugar. Ou seja, as entradas listadas não precisam estar no mesmo diretório ou mesmo em diretórios relacionados. Consulte C-x D F
(comando diredp-dired-for-files
), que está no menu da barra de menus Dir como o item Arquivos Dired Localizados em Qualquer Lugar . Você pode marcar e colar (copiar) esses arquivos arbitrários de um buffer Dired para qualquer diretório.
Atualização 2019-04-22:
Também adicionei a capacidade de mover (não apenas colar) os arquivos cujos nomes (absolutos) você copiou para o anel de morte para o diretório atual (ou outro). Isso está vinculado C-w
em Dired.
diredp-move-files-named-in-kill-ring
é uma função interativa do Lisp no Windows dired+.el
.
(diredp-move-files-named-in-kill-ring &optional DIR NO-CONFIRM-P DETAILS)
Mova os arquivos cujos nomes absolutos foram copiados para o diretório atual.
Com um prefixo não negativo arg, é solicitado o diretório de destino.
Com um prefixo não positivo arg, você pode ver detalhes sobre os arquivos se clicar l
quando solicitado a confirmar a colagem. Caso contrário, você verá apenas os nomes dos arquivos. Os detalhes que você vê são definidos por opção
diredp-list-file-attributes
.
Você deveria ter copiado a lista de nomes de arquivos como uma string para o anel de morte usando M-0 w
ou M-x diredp-copy-abs-filenames-as-kill
. Esses comandos também definem variável diredp-last-copied-filenames
para a mesma string. diredp-move-files-named-in-kill-ring
usa o valor dessa variável, não o que está atualmente na cabeça do anel de morte.
Quando chamado do Lisp:
- Arg opcional
NO-CONFIRM-P
significa que não solicite confirmação para mover.
- Arg opcional
DETAILS
é passado para diredp-y-or-n-files-p
.
C-w
que mover / renomear o arquivo em vez de copiar? Graçaskill-ring
para contar Dired para mover esses arquivos em algum lugar, por exemplo, o que levou para onde movê-los.)C-w
para mover os arquivos cujos nomes você copiou.Você pode fazer o seguinte no Vanilla Dired (não é necessária uma biblioteca de terceiros):
Vá primeiro para um buffer direcionado que lista o diretório de destino .
Com o cursor na linha de cabeçalho do diretório para obter uma lista do diretório de destino, use
w
(comandodired-copy-filename-as-kill
). Isso copia o nome absoluto desse diretório de destino. (Você pode copiar um nome de diretório de qualquer linha de cabeçalho de subdiretação de listagem Dired da mesma maneira.)Vá para o buffer Dired que lista os arquivos que você deseja copiar . Marque esses arquivos.
Use
C
(comandodired-do-copy
) para copiar os arquivos marcados . No prompt, useC-y
para colar o nome (absoluto) do diretório de destino . Você pode simplesmente colá-lo, sem se preocupar em remover o diretório padrão inserido no minibuffer. (Colá-lo após esse nome de diretório padrão escurece esse nome padrão - ele é ignorado.)Acho que é tão simples quanto o que você descreve (
C-w
para copiar nomes de arquivos marcados seguidosC-y
na listagem Dired de destino), mas a ordem é oposta : você copia primeiro o nome do diretório de destino e, em seguida, cola-o no comandoC
(dired-do-copy
) .(
dired-do-copy
verifica se há arquivos com o mesmo nome no diretório de destino etc.)Dica: (Isso não é necessário se você usar Dired + - veja minha outra resposta aqui.) Se você pretende copiar (ou mover) arquivos de vários diretórios para o mesmo diretório de destino, e pode estar fazendo outras coisas com o kill-ring no meio, para que o nome do diretório de destino copiado não seja mais o primeiro no anel de interrupção, use a seleção secundária para selecionar o nome do diretório de destino. A seleção secundária não depende da região ou da posição do cursor - você pode colá-la quantas vezes quiser, independentemente das alterações no kill-ring. Você pode colá-lo usando o mouse, mas é mais prático usar
C-M-y
na bibliotecasecond-sel.el
.fonte
Sua ideia parece direta; talvez você possa tentar implementá-la por conta própria; também pode usar o seguinte para começar, se quiser.
fonte
O gerenciador de arquivos Ranger funciona da maneira que você descreve, mas é inspirado no vim (assim, as combinações
yy
de teclas do vim para puxar / copiarp
para colar etc). O Emacs também possui implementação de ranger. Experimente, talvez atenda às suas necessidades.Eu, por mim mesmo, uso o emacs sunrise-commander, que é semelhante ao Midnight Commander (mc), sempre que sinto que preciso de um gerenciamento de arquivos com painéis duplos.
Upd: dired-ranger possui a cópia / colagem que você descreveu. Pelo menos nos documentos.
fonte
dired-ranger
e estãoranger
disponíveis no MELPA. Você quer dizer qual?Eu também sugeriria usar
dired-ranger
. Isto é o que eu tenho no meuinit.el
:fonte
O ranger dirigido era a verdadeira solução para mim:
Você pode obter um comportamento comum do explorador de arquivos conforme descrito, apenas com esta configuração simples (supondo que você use
use-package
):fonte