Aktueller Pfad in Dired oder Dired + zur Zwischenablage

18

Angenommen, in einem Verzeichnis ist ein Dired-Puffer geöffnet. Wie kann ich den Verzeichnispfad in die Zwischenablage senden?

Wie kann ich dasselbe tun, wenn sich der gerichtete Cursor auf einer bestimmten Datei befindet, ohne die Datei zuerst zu öffnen?

Amelio Vazquez-Reina
quelle

Antworten:

25

Bewegen Sie den Cursor in die Kopfzeile des Verzeichnisses (in der das Verzeichnis angezeigt wird - z. B. mit M-<) und drücken Sie w. Dadurch wird der Verzeichnisname in den Kill-Ring kopiert. ( wKopiert einen beliebigen Dateinamen aus Dired und funktioniert auch für den Verzeichnisheader.)

Und wenn Sie dies noch nicht getan haben, passen Sie es x-select-enable-clipboardan nil, damit die Auswahl in die Zwischenablage kopiert wird.


@Konstantines Kommentar macht einen guten Punkt. Anstatt in die Kopfzeile des Verzeichnisses zu wechseln, um den absoluten Namen zu erhalten, können Sie sie einfach C-0 wfür jede Datei oder Verzeichniszeile verwenden. Dadurch wird der absolute Dateiname in die Zwischenablage verschoben. Wenn Sie es einfügen, können Sie einfach den relativen Dateinamen entfernen, um den absoluten Verzeichnisnamen zu erhalten.

Drew
quelle
16
Ich denke, es ist erwähnenswert, dass C-h k win einem diredPuffer steht: "Verwenden Sie bei einem Null-Präfix-Argument den absoluten Dateinamen jeder markierten Datei.", Dh "drücken C-0 w, um den absoluten Pfad abzurufen."
Constantine
@ Konstantin: Guter Punkt. Ich habe die Antwort aktualisiert, um dies zu erwähnen.
Drew
5
@ Konstantin: Sie könnten "0 w" (es ist das gleiche wie "C-0 w" in einem dired Puffer)
jfs
Im dired Modus benutzen Sie "C-0 w". Dieser kopiert den vollständigen Pfad (Pfad + Dateiname) zum Kill Ring.
a_subscriber
1

Ich x-select-enable-clipbardhabe twie vorgeschlagen eingestellt, aber es hat nicht funktioniert. Ich verwende diesen Code von hier: 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
quelle