Path saat ini di Dired atau Dired + ke clipboard

18

Katakanlah kita memiliki buffer Dired terbuka di beberapa direktori. Bagaimana saya bisa mengirim jalur direktori ke clipboard?

Juga, bagaimana saya bisa melakukan hal yang sama ketika kursor Dired pada file tertentu, tanpa membuka file terlebih dahulu?

Amelio Vazquez-Reina
sumber

Jawaban:

25

Pindahkan kursor ke baris tajuk direktori (tempat direktori ditampilkan - misalnya, gunakan M-<), lalu tekan w. Itu menyalin nama direktori ke cincin bunuh. ( wmenyalin nama file apa pun dari Dired, dan itu berfungsi juga untuk header direktori.)

Dan jika Anda belum melakukannya, sesuaikan x-select-enable-clipboarduntuk non- nil, jadi pilihan disalin ke clipboard.


@ Constantine berkomentar bagus. Alih-alih pindah ke baris tajuk direktori untuk mendapatkan nama absolut, Anda bisa menggunakannya C-0 wpada baris file atau direktori apa saja. Itu akan menempatkan nama file absolut di clipboard. Ketika Anda menempelkannya, Anda cukup menghapus bagian nama file relatif, untuk mendapatkan nama direktori absolut.

Drew
sumber
16
Saya pikir itu layak disebutkan bahwa C-h k wdalam diredbuffer mengatakan "Dengan awalan nol arg, gunakan nama file absolut dari setiap file yang ditandai.", Yaitu "tekan C-0 wuntuk mendapatkan path absolut."
Constantine
@Constantine: Poin bagus. Saya memperbarui jawaban untuk menyebutkan ini.
Drew
5
@Constantine: Anda bisa menggunakan "0 w" (itu adalah hal yang sama dengan "C-0 w" dalam buffer dired)
jfs
Dalam mode dired, gunakan "C-0 w". Salin path lengkap ini (path + nama file) untuk mematikan ring.
a_subscriber
1

Aku mengatur x-select-enable-clipbarduntuk tseperti yang disarankan tapi itu tidak bekerja. Saya menggunakan bagian kode ini dari sini: http://blog.binchen.org/posts/copy-file-name-or-full-path-of-file-in-emacs-dired-buffer-into-system-clipboard .html

;; {{ copy the file-name/full-path in dired buffer into clipboard
;; `w` => copy file name
;; `C-u 0 w` => copy full path
(defadvice dired-copy-filename-as-kill (after dired-filename-to-clipboard activate)
  (with-temp-buffer
    (insert (current-kill 0))
    (shell-command-on-region (point-min) (point-max)
                             (cond
                              ((eq system-type 'cygwin) "putclip")
                              ((eq system-type 'darwin) "pbcopy")
                              (t "xsel -ib")
                              )))
  (message "%s => clipboard" (current-kill 0))
  )
Chrimuelle
sumber