Caminho atual em Dired ou Dired + para a área de transferência

18

Digamos que temos um buffer Dired aberto em algum diretório. Como posso enviar o caminho do diretório para a área de transferência?

Além disso, como posso fazer o mesmo quando o cursor Dired está em um arquivo específico, sem abrir o arquivo primeiro?

Amelio Vazquez-Reina
fonte

Respostas:

25

Mova o cursor para a linha de cabeçalho do diretório (onde o diretório é mostrado - por exemplo, use M-<) e pressione w. Isso copia o nome do diretório para o anel de morte. ( wcopia qualquer nome de arquivo de Dired e também funciona para o cabeçalho do diretório.)

E se você ainda não o fez, personalize x-select-enable-clipboardpara não nil, para que a seleção seja copiada para a área de transferência.


O comentário de @ Constantine faz um bom argumento. Em vez de passar para a linha de cabeçalho do diretório para obter o nome absoluto, você pode apenas usar C-0 wem qualquer arquivo ou linha de diretório. Isso colocará o nome absoluto do arquivo na área de transferência. Ao colar, basta remover a parte relativa do nome do arquivo, para obter o nome absoluto do diretório.

Desenhou
fonte
16
Eu acho que vale a pena mencionar que C-h k wno diredbuffer diz "Com um prefixo zero arg, use o nome absoluto de cada arquivo marcado", ou seja, "pressione C-0 wpara obter o caminho absoluto".
Constantine
@ Constantine: Bom ponto. Eu atualizei a resposta para mencionar isso.
Drew
5
@Constantine: você poderia usar "0 w" (que é a mesma coisa que "C-0 w" em um buffer dired)
jfs
No modo direcionado, use "C-0 w". Este caminho completo da cópia (caminho + nome do arquivo) para matar o anel.
a_subscriber
1

I definir x-select-enable-clipbarda tcomo sugerido, mas não funcionou. Eu uso este código aqui: 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
fonte