Saya telah menambahkan fitur ini sekarang ke Dired + .
Anda dapat menggunakan C-y
(perintah diredp-yank-files
) untuk menempelkan file, yang nama absolutnya Anda salin ke kill ring, ke direktori saat ini. "Direktori saat ini" di sini adalah apa yang dired-current-directory
dikembalikan: subdirektori yang dimasukkan tempat kursor berada, atau direktori utama Dired jika kursor tidak ada dalam daftar subdir.
Dengan arg awalan, C-y
alih-alih meminta Anda untuk direktori target untuk menempel. Jadi Anda tidak perlu berada dalam buffer Dired untuk menempelkan file ke direktori.
Anda harus menyalin nama file ke ring bunuh menggunakan M-0 w
atau M-x diredp-copy-abs-filenames-as-kill
.
Di Dired + perintah-perintah itu juga mengatur variabel diredp-last-copied-filenames
ke string nama file yang sama. C-y
menggunakan nilai variabel itu, bukan apa pun yang saat ini ada di kepala cincin bunuh. Ini berarti bahwa Anda tidak perlu menempel segera setelah Anda menyalin nama file. Dan itu berarti bahwa Anda dapat, alih-alih menyalin nama file ke ring bunuh, cukup masukkan nama-nama itu dalam variabel tersebut (mis. Secara terprogram).
Ketika Anda menggunakan C-y
, Anda akan diminta untuk konfirmasi ( y
atau n
). Anda juga dapat menekan l
(untuk "daftar") ketika diminta, untuk menampilkan daftar file yang akan ditempelkan.
Anda juga dapat menyalin file yang ditandai dari buffer Dired saat ini dan semua file yang ditandai dalam subdirektori yang ditandai, ditentukan secara rekursif . Untuk itu Anda gunakan M-0 M-+ M-w
(nol awalan arg dengan perintah diredp-copy-filename-as-kill-recursive
) atau gunakan M-x diredp-copy-abs-filenames-as-kill-recursive
.
Perhatikan bahwa dengan Dired + Anda juga dapat dengan mudah memiliki buffer Dired yang mencantumkan sejumlah file dan direktori, dari mana saja. Artinya, entri yang terdaftar tidak perlu berada di direktori yang sama atau bahkan di direktori terkait. Lihat C-x D F
(perintah diredp-dired-for-files
), yang ada di menu menu-bar Dir sebagai item Dired Files Located Anywhere . Anda dapat menandai dan kemudian menempel (menyalin) file sewenang-wenang tersebut dari buffer Dired ke direktori mana pun.
Pembaruan 2019-04-22:
Saya juga menambahkan kemampuan untuk memindahkan (bukan hanya menempel) file yang (absolut) namanya Anda salin ke ring bunuh ke direktori saat ini (atau yang lain). Ini terikat C-w
dalam Dired.
diredp-move-files-named-in-kill-ring
adalah fungsi Lisp interaktif di dired+.el
.
(diredp-move-files-named-in-kill-ring &optional DIR NO-CONFIRM-P DETAILS)
Pindahkan file, yang nama absolutnya Anda salin, ke direktori saat ini.
Dengan arg awalan non-negatif Anda malah diminta untuk direktori target.
Dengan arg awalan non-positif Anda dapat melihat detail tentang file jika Anda menekan l
ketika diminta untuk mengkonfirmasi menempel. Kalau tidak, Anda hanya melihat nama file. Rincian yang Anda lihat ditentukan oleh opsi
diredp-list-file-attributes
.
Anda harus menyalin daftar nama file sebagai string ke ring bunuh menggunakan M-0 w
atau M-x diredp-copy-abs-filenames-as-kill
. Perintah-perintah itu juga mengatur variabel diredp-last-copied-filenames
ke string yang sama. diredp-move-files-named-in-kill-ring
menggunakan nilai variabel itu, bukan apa pun yang saat ini ada di kepala cincin bunuh.
Saat dipanggil dari Lisp:
- Arg opsional
NO-CONFIRM-P
berarti jangan meminta konfirmasi untuk pindah.
- Arg opsional
DETAILS
dilewatkan ke diredp-y-or-n-files-p
.
C-w
memindahkan / mengganti nama file alih-alih menyalin? Terima kasihkill-ring
untuk memberi tahu Dired untuk memindahkan file-file itu ke suatu tempat, misalnya, mendorong ke mana harus memindahkannya.)C-w
untuk memindahkan file yang namanya Anda salin.Anda dapat melakukan hal berikut dalam vanilla Dired (tidak perlu perpustakaan pihak ketiga):
Pergi dulu ke buffer Dired yang mencantumkan direktori target .
Dengan kursor pada baris header direktori untuk daftar direktori target, gunakan
w
(perintahdired-copy-filename-as-kill
). Ini menyalin nama absolut dari direktori target itu. (Anda dapat menyalin nama dir dari setiap baris tajuk subdirektori daftar iklan dengan cara yang sama.)Buka buffer Dired yang berisi daftar file yang ingin Anda salin . Tandai file-file itu.
Gunakan
C
(perintahdired-do-copy
) untuk menyalin file yang ditandai . Saat diminta, gunakanC-y
untuk menempelkan (mutlak) nama direktori target . Anda cukup menempelkannya, tanpa repot-repot menghapus direktori default yang dimasukkan dalam minibuffer. (Menempelnya setelah nama dir default itu meredupkan nama standar itu - itu diabaikan.)Ini, saya pikir, sesederhana apa yang Anda gambarkan (
C-w
untuk menyalin nama file yang ditandai diikuti olehC-y
dalam daftar Dired target), tetapi urutannya berlawanan : Anda salin nama direktori target terlebih dahulu, dan kemudian tempel ke perintahC
(dired-do-copy
) .(
dired-do-copy
memeriksa file yang ada dengan nama yang sama di direktori target, dll.)Kiat: (Ini tidak diperlukan jika Anda menggunakan Dired + - lihat jawaban saya yang lain di sini.) Jika Anda bermaksud menyalin (atau memindahkan) file dari banyak direktori ke direktori target yang sama, dan Anda mungkin melakukan hal-hal lain dengan cincin bunuh di antara, sehingga nama target yang disalin mungkin tidak lagi menjadi yang pertama di kill-ring, kemudian gunakan pilihan sekunder untuk memilih nama target target. Pilihan sekunder tidak tergantung pada wilayah atau posisi kursor - Anda dapat menempelkannya sebanyak yang Anda inginkan, terlepas dari perubahan pada cincin bunuh. Anda dapat menempelkannya menggunakan mouse, tetapi lebih mudah untuk digunakan
C-M-y
dari perpustakaansecond-sel.el
.sumber
Gagasan Anda terdengar langsung, mungkin Anda dapat mencoba menerapkannya sendiri, Anda juga dapat menggunakan yang berikut untuk memulai jika Anda mau.
sumber
Manajer file Ranger berfungsi seperti yang Anda gambarkan, tetapi ia terinspirasi oleh vim (dengan demikian vim keybindings
yy
untuk mencabut / menyalinp
untuk menempelkan dll). Emacs juga memiliki implementasi ranger. Cobalah, mungkin itu akan sesuai dengan kebutuhan Anda.Saya sendiri menggunakan emacs sunrise-commander yang mirip dengan Midnight Commander (mc), setiap kali saya merasa saya perlu mengelola file-panel ganda.
Upd: dired-ranger memiliki copy / paste yang telah Anda jelaskan. Setidaknya dalam dokumen.
sumber
dired-ranger
danranger
tersedia di MELPA. Maksudmu yang mana?Saya juga menyarankan untuk menggunakan
dired-ranger
. Inilah yang saya miliki diinit.el
:sumber
Dired ranger adalah solusi sejati bagi saya:
Anda dapat mencapai perilaku penjelajah file yang sama seperti yang Anda gambarkan, hanya dengan konfigurasi sederhana ini (dengan asumsi Anda menggunakan
use-package
):sumber