Bieżąca ścieżka w Dired lub Dired + do schowka

18

Powiedzmy, że mamy bufor Dired otwarty w jakimś katalogu. Jak mogę wysłać ścieżkę katalogu do schowka?

Jak mogę zrobić to samo, gdy kursor Dired znajduje się w określonym pliku, bez uprzedniego otwarcia pliku?

Amelio Vazquez-Reina
źródło

Odpowiedzi:

25

Przesuń kursor do wiersza nagłówka katalogu (gdzie jest pokazany katalog - np. Użyj M-<), a następnie naciśnij w. To kopiuje nazwę katalogu do pierścienia zabijania. ( wkopiuje dowolną nazwę pliku z Dired i działa również z nagłówkiem katalogu).

A jeśli jeszcze tego nie zrobiłeś, dostosuj x-select-enable-clipboarddo non- nil, więc zaznaczenie zostanie skopiowane do schowka.


Komentarz Konstantyna ma sens. Zamiast przechodzić do wiersza nagłówka katalogu, aby uzyskać bezwzględną nazwę, możesz po prostu użyć C-0 wdowolnego pliku lub wiersza katalogu. Spowoduje to umieszczenie bezwzględnej nazwy pliku w schowku. Po wklejeniu możesz po prostu usunąć względną część nazwy pliku, aby uzyskać bezwzględną nazwę katalogu.

Rysował
źródło
16
Myślę, że warto wspomnieć, że C-h k ww diredbuforze jest napisane: „Z zerowym prefiksem arg używaj bezwzględnej nazwy każdego oznaczonego pliku”, tj. „Naciśnij, C-0 waby uzyskać ścieżkę bezwzględną”.
Constantine
@Constantine: Dobra uwaga. Zaktualizowałem odpowiedź, aby o tym wspomnieć.
Drew
5
@Constantine: można użyć „0 w” (to samo co „C-0 w” w buforowanym buforze)
jfs
W trybie dired użyj „C-0 w”. Ta kopia pełna ścieżka (ścieżka + nazwa pliku), aby zabić pierścień.
a_subscriber
1

Ustawić x-select-enable-clipbardna tjak sugeruje ale to nie działa. Używam tego fragmentu kodu stąd: 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
źródło