我现在已将此功能添加到Dired +。
您可以使用C-y
(命令diredp-yank-files
)将已复制其绝对名称的文件粘贴到当前目录中。返回的“当前目录”是dired-current-directory
:光标所在的插入子目录,如果光标不在子目录中,则为Dired主目录。
使用前缀arg C-y
代替,提示您输入粘贴的目标目录。因此,您无需在Dired缓冲区中将文件粘贴到目录中。
您应该使用M-0 w
或将文件名复制到kill ring M-x diredp-copy-abs-filenames-as-kill
。
在Dired +中,这些命令还将变量设置diredp-last-copied-filenames
为相同的文件名字符串。 C-y
使用该变量的值,而不使用当前处于kill ring开头的任何值。这意味着您无需在复制文件名后立即粘贴。这意味着您可以将文件名放在该变量中(例如,以编程方式),而不是将文件名复制到kill ring中。
使用时C-y
,系统会提示您确认(y
或n
)。您也可以l
在出现提示时打(对于“列表”),以显示将要粘贴的文件的列表。
您还可以从当前Dired缓冲区复制标记的文件,并从其递归定义的标记子目录中复制任何标记的文件。为此,您可以使用M-0 M-+ M-w
(带command的零前缀arg diredp-copy-filename-as-kill-recursive
)或使用M-x diredp-copy-abs-filenames-as-kill-recursive
。
请注意,使用Dired +,您还可以轻松地拥有Dired缓冲区,该缓冲区可从任何地方列出任意数量的文件和目录。即,列出的条目不必在同一目录中,甚至不必在相关目录中。请参阅Dir菜单栏菜单上的C-x D F
(命令diredp-dired-for-files
),将Dired Files位于任何地方。您可以标记这些任意文件并将其从Dired缓冲区粘贴(复制)到任何目录。
更新2019-04-22:
我还添加了将复制到kill ring的(绝对)名称的文件移动(而不是粘贴)到当前(或另一个)目录的功能。这必然与C-w
Dired有关。
diredp-move-files-named-in-kill-ring
是的交互式Lisp函数dired+.el
。
(diredp-move-files-named-in-kill-ring &optional DIR NO-CONFIRM-P DETAILS)
将您复制了绝对名称的文件移动到当前目录。
使用非负前缀arg时,会提示您输入目标目录。
如果输入非肯定前缀arg,则l
在提示您确认粘贴时单击,则可以查看有关文件的详细信息。否则,您只会看到文件名。您看到的详细信息由option定义
diredp-list-file-attributes
。
您应该使用M-0 w
或将文件名列表作为字符串复制到kill ring M-x diredp-copy-abs-filenames-as-kill
。这些命令还将变量设置diredp-last-copied-filenames
为相同的字符串。 diredp-move-files-named-in-kill-ring
使用该变量的值,而不使用当前处于kill ring开头的任何值。
从Lisp调用时:
- 可选的arg
NO-CONFIRM-P
表示不要求确认才能移动。
- 可选arg
DETAILS
传递给diredp-y-or-n-files-p
。
C-w
必须移动/重命名文件而不是copy?。谢谢