如何插入当前buffer对应的文件的路径?

如题,另外经常在compile下编译文件的情况下,如何获取文件名呢(去掉扩展名的那种,比如test.c->text)?

使用evil有一种,^R %。 emacs下有对应的命令吗?

(info “(elisp) Buffer File Name”) 中有介绍获得 Buffer 对应的文件命的变量和函数。我自己的配置里有个命令

(defun chunyang-copy-buffer-file-name (&optional buffer)
  "Save filename of BUFFER is visiting to kill-ring."
  (interactive)
  (let ((file (buffer-file-name buffer)))
    (if file
        (progn (kill-new file)
               (message "Copied: %s" file))
      (user-error "Not visiting a file"))))

不过我几乎没怎么用过。用 Helm 的话,打开文件管理器 C-x C-f (helm-find-files) 之后再按 C-u C-c C-k (helm-kill-selection-and-quit) 是同样的效果。你完全可以自己实现,一来比较简单,二来一般人都偏爱自己的东西。

去掉扩展名使用 (file-name-sans-extension "test.cc") 得到 test

1 个赞

我是用helm的,不过没发现这个功能。。。

thanks,

Helm 的 Help 文档里也有提到

** Frequently Used Commands

C-t Toggle vertical/horizontal split on first hit and swap helm window on second hit. C-x C-f Drop into `helm-find-files’. C-c C-k Kill display value of candidate and quit (with prefix arg, kill the real value).

好吧,这个连接能发下吗?感觉漏了好多内容

如果用spacemacs的话是 space f y ,可以参考它的实现

查看 Helm 的帮助文档有两种方法:

  1. 打开任意一个 Helm 命令,再按 C-h m (helm-help)
  2. M-x helm-documentation

然后你可以从中搜索到我上面引用的文字。

这个文档是写在代码里的,线上看效果并不好:

1 个赞

多谢,我用的是标准的emacs:P

代码都看了呀,服!