54918


emacs で、今 visit しているこのファイルのフルパスを kill-ring に追加したくなりました。どうしたらこれは実現できるでしょうか？


CC BY-SA 4.0
2019-05-12T14:07:08.067
54913
2019-05-12T23:40:49.917
754
question
emacs
emacs で、 visiting file のフルパスを kill-ring に追加したい


### プラグインを使わない場合

下記の手順でキルリングにコピーできます。

  1. `C-x C-v` (find-alternate-file)でミニバッファにカレントファイルを表示する
  2. ミニバッファで`C-a C-@ C-e`(全選択) `M-w`(コピー) `C-g`(ミニバッファを閉じる)

[参考リンク](http://bhby39.blogspot.com/2013/09/emacs.html)

### プラグインを使う場合

動作確認はしていませんが[本家SO](https://stackoverflow.com/a/3669681/8248751)によると[`buffer-
file-name`](https://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-
File-Name.html)で取得できるようです。

[参考リンク](https://qiita.com/ShingoFukuyama/items/8f1d3342180d42ad9f78)


CC BY-SA 4.0
2019-05-12T23:28:01.010
54917
2019-05-12T23:28:01.010
9820
54913
answer


ファイル名は `buffer-file-name` に格納されています。  
`kill-ring` に追加、要するに他エディタでいう「コピー」なら `kill-new`  
なので、

[code]

    (defun copy-file-name-to-kill-ring () 
      "Copy buffer file name to kill ring"
      (interactive)
      (kill-new buffer-file-name))
    
[/code]

ファイルに連動しないバッファの場合 `buffer-file-name` が `nil` になってしまって面白くないので

[code]

    (kill-new (or buffer-file-name (buffer-name)))
    
[/code]

とか。

あとは `(define-key global-map ...)` してもいいし  
必要なら `(add-hook 'find-file-hook ...)` してもいいでしょう。


CC BY-SA 4.0
2019-05-12T23:40:49.917
54918
2019-05-12T23:40:49.917
8589
54913
answer