Emacs 插入文件名函数

今天在写一个头文件的时候想要插入当前文件的文件名,因为我用的是Spacemacs
配置,没有现成的插入文件名的快捷方式(或者我不知道?),于是就想自己写一个。
代码如下:

Lisp
1
2
3
(defun my-insert-file-name ()
(interactive)
(insert (file-name-nondirectory (buffer-file-name))))

然后在dotspacemacs/user-config函数里绑定快捷键

Lisp
1
(spacemacs/set-leader-keys (kbd "in") 'my-insert-file-name)

后来觉得不如直接做成一个匿名函数更直观,函数的定义和使用也能放在一起,不会
出现找不到函数定义的情况,于是删除原my-insert-file-name函数,直接用匿名函
数代替:

Lisp
1
2
3
4
(spacemacs/set-leader-keys (kbd "in")
(lambda ()
(interactive)
(insert (file-name-nondirectory (buffer-file-name)))))

这里为了清楚分也几行写,文件中是放在一行上的。

以前虽然了解过一些 Emacs Lisp,但是从来没有真正写过一个函数,这个函数虽然简
单,但是能用。有也这个小小的成功,下次也许就能做更大的改动了呢。

References

Emacs in place filename / path insertion

此外还参考了Spacemacs里的spacemacs/show-and-copy-buffer-filename函数。

0%