Nói rằng chúng tôi có một bộ đệm Dired mở trên một số thư mục. Làm thế nào tôi có thể gửi đường dẫn thư mục vào clipboard?
Ngoài ra, làm thế nào tôi có thể làm tương tự khi con trỏ Dired nằm trên một tệp cụ thể mà không cần mở tệp trước?
Nói rằng chúng tôi có một bộ đệm Dired mở trên một số thư mục. Làm thế nào tôi có thể gửi đường dẫn thư mục vào clipboard?
Ngoài ra, làm thế nào tôi có thể làm tương tự khi con trỏ Dired nằm trên một tệp cụ thể mà không cần mở tệp trước?
Câu trả lời:
Di chuyển con trỏ đến dòng tiêu đề thư mục (nơi thư mục được hiển thị - ví dụ: sử dụng M-<
), sau đó nhấn w
. Nó sao chép tên thư mục vào vòng kill. ( w
sao chép bất kỳ tên tệp nào từ Dired và nó cũng hoạt động cho tiêu đề thư mục.)
Và nếu bạn chưa làm như vậy, hãy tùy chỉnh x-select-enable-clipboard
thành không nil
, để lựa chọn được sao chép vào bảng tạm.
Nhận xét của @ Constantine làm cho một điểm tốt. Thay vì di chuyển đến dòng tiêu đề thư mục để có được tên tuyệt đối, bạn chỉ có thể sử dụng C-0 w
trên bất kỳ dòng tệp hoặc thư mục nào. Điều đó sẽ đặt tên tập tin tuyệt đối trong clipboard. Khi bạn dán nó, bạn có thể chỉ cần loại bỏ phần tên tệp tương đối, để có được tên thư mục tuyệt đối.
Tôi đặt x-select-enable-clipbard
thành t
như đề xuất nhưng nó không hoạt động. Tôi sử dụng đoạn mã này từ đây: 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))
)
C-h k w
trongdired
bộ đệm có nội dung "Với tiền tố bằng 0, hãy sử dụng tên tệp tuyệt đối của mỗi tệp được đánh dấu.", Tức là "nhấnC-0 w
để có đường dẫn tuyệt đối."