J'ai maintenant ajouté cette fonctionnalité à Dired + .
Vous pouvez utiliser C-y
(commande diredp-yank-files
) pour coller des fichiers, dont vous avez copié les noms absolus dans le kill ring, dans le répertoire courant. Le "répertoire courant" est ici ce qui dired-current-directory
revient: le sous-répertoire inséré où se trouve le curseur, ou le répertoire principal Dired si le curseur n'est pas dans une liste de sous-répertoires.
Avec un préfixe arg, C-y
vous invite à la place pour le répertoire cible pour la pâte. Vous n'avez donc pas besoin d'être dans un tampon Dired pour coller des fichiers dans un répertoire.
Vous devez avoir copié les noms de fichiers dans le kill ring à l'aide de M-0 w
ou M-x diredp-copy-abs-filenames-as-kill
.
Dans Dired +, ces commandes définissent également la variable diredp-last-copied-filenames
sur la même chaîne de noms de fichiers. C-y
utilise la valeur de cette variable, pas celle qui se trouve actuellement en tête du kill ring. Cela signifie que vous n'avez pas besoin de coller immédiatement après avoir copié les noms de fichiers. Et cela signifie que vous pourriez, au lieu de copier les noms de fichiers dans le kill ring, simplement mettre les noms dans cette variable (par exemple par programme).
Lorsque vous utilisez C-y
, vous êtes invité à confirmer ( y
ou n
). Vous pouvez également appuyer sur l
(pour "liste") lorsque vous y êtes invité, pour afficher la liste des fichiers qui seront collés.
Vous pouvez également copier les fichiers marqués à partir du tampon Dired actuel et tous les fichiers marqués dans ses sous-répertoires marqués, définis récursivement . Pour cela, vous utilisez M-0 M-+ M-w
(zéro préfixe arg avec la commande diredp-copy-filename-as-kill-recursive
) ou utilisez M-x diredp-copy-abs-filenames-as-kill-recursive
.
Notez qu'avec Dired +, vous pouvez également facilement avoir un tampon Dired qui répertorie n'importe quel nombre de fichiers et de répertoires, de n'importe où. Autrement dit, les entrées répertoriées ne doivent pas nécessairement se trouver dans le même répertoire ni même dans des répertoires associés. Voir C-x D F
(commande diredp-dired-for-files
), qui se trouve dans le menu de la barre de menus Dir comme élément Fichiers fatigués situés n'importe où . Vous pouvez marquer puis coller (copier) ces fichiers arbitraires d'un tampon Dired dans n'importe quel répertoire.
Mise à jour 2019-04-22:
J'ai également ajouté la possibilité de déplacer (et pas seulement de coller) les fichiers dont vous avez copié les noms (absolus) dans le kill ring vers le répertoire actuel (ou un autre). C'est lié à C-w
Dired.
diredp-move-files-named-in-kill-ring
est une fonction Lisp interactive dans dired+.el
.
(diredp-move-files-named-in-kill-ring &optional DIR NO-CONFIRM-P DETAILS)
Déplacez les fichiers dont vous avez copié les noms absolus dans le répertoire actuel.
Avec un argument de préfixe non négatif, vous êtes plutôt invité à indiquer le répertoire cible.
Avec un argument de préfixe non positif, vous pouvez voir les détails des fichiers si vous appuyez sur l
lorsque vous êtes invité à confirmer le collage. Sinon, vous ne voyez que les noms de fichiers. Les détails que vous voyez sont définis par option
diredp-list-file-attributes
.
Vous devriez avoir copié la liste des noms de fichiers sous forme de chaîne dans le kill ring à l'aide de M-0 w
ou M-x diredp-copy-abs-filenames-as-kill
. Ces commandes définissent également la variable diredp-last-copied-filenames
sur la même chaîne. diredp-move-files-named-in-kill-ring
utilise la valeur de cette variable, pas celle qui se trouve actuellement en tête du kill ring.
En cas d'appel depuis Lisp:
- Arg optionnel
NO-CONFIRM-P
signifie ne pas demander de confirmation de déplacement.
- L'argument facultatif
DETAILS
est transmis à diredp-y-or-n-files-p
.
C-w
déplacer / renommer le fichier au lieu de le copier?. Mercikill-ring
indiquent à Dired de déplacer ces fichiers quelque part, par exemple, en demandant où les déplacer.)C-w
pour déplacer les fichiers dont vous avez copié les noms.Vous pouvez effectuer les opérations suivantes dans vanilla Dired (aucune bibliothèque tierce n'est requise):
Accédez d'abord à un tampon Dired qui répertorie le répertoire cible .
Avec le curseur sur la ligne d'en-tête du répertoire pour une liste du répertoire cible, utilisez
w
(commandedired-copy-filename-as-kill
). Cela copie le nom absolu de ce répertoire cible. (Vous pouvez copier un nom de répertoire à partir de n'importe quelle ligne d'en-tête de sous-répertoire répertorié de la même manière.)Accédez au tampon Dired qui répertorie les fichiers que vous souhaitez copier . Marquez ces fichiers.
Utilisez
C
(commandedired-do-copy
) pour copier les fichiers marqués . À l'invite, utilisezC-y
pour coller le nom (absolu) du répertoire cible . Vous pouvez simplement le coller, sans prendre la peine de supprimer le répertoire par défaut qui est inséré dans le mini-tampon. (Le coller après ce nom de répertoire par défaut atténue ce nom par défaut - il est ignoré.)C'est, je pense, aussi simple que ce que vous décrivez (
C-w
pour copier les noms de fichiers marqués suivisC-y
dans la liste Dired cible), mais l' ordre est opposé : vous copiez d'abord le nom du répertoire cible, puis le collez dans la commandeC
(dired-do-copy
) .(
dired-do-copy
recherche les fichiers existants du même nom dans le répertoire cible, etc.)Astuce: (Ce n'est pas nécessaire si vous utilisez Dired + - voir mon autre réponse ici.) Si vous avez l'intention de copier (ou déplacer) des fichiers de plusieurs répertoires vers le même répertoire cible, et vous pourriez faire d'autres choses avec le kill-ring entre les deux, afin que le nom du répertoire cible copié ne soit plus le premier dans le kill-ring, puis utilisez la sélection secondaire pour sélectionner le nom du répertoire cible. La sélection secondaire ne dépend pas de la région ou de la position du curseur - vous pouvez le coller autant de fois que vous le souhaitez, indépendamment des modifications apportées au kill-ring. Vous pouvez le coller à l'aide de la souris, mais il est plus pratique à utiliser à
C-M-y
partir de la bibliothèquesecond-sel.el
.la source
Votre idée semble simple, vous pouvez peut-être essayer de la mettre en œuvre par vous-même, vous pouvez également utiliser les éléments suivants pour commencer si vous le souhaitez.
la source
Le gestionnaire de fichiers Ranger fonctionne comme vous le décrivez, mais il est inspiré par vim (donc les raccourcis clavier de vim
yy
à copier / copierp
pour coller, etc.). Emacs a également implémenté Ranger. Essayez-le, il répondra peut-être à vos besoins.Pour ma part, j'utilise emacs sunrise-commander qui ressemble un peu à Midnight Commander (mc), chaque fois que je pense avoir besoin d'une gestion de fichiers à double vitrage.
Upd: dired-ranger a le copier / coller que vous avez décrit. Au moins dans les documents.
la source
dired-ranger
et estranger
disponible sur MELPA. Tu veux dire lequel?Je suggère également d'utiliser
dired-ranger
. Voici ce que j'ai dans moninit.el
:la source
Ranger fatigué était la vraie solution pour moi:
Vous pouvez obtenir un comportement d'explorateur de fichiers commun comme vous le décrivez, juste avec cette configuration simple (en supposant que vous utilisez
use-package
):la source