2

有时我编辑具有特定后缀的文件和具有相同基名但另一个后缀的文件。由于基本名称又长又笨拙,我想重用现有文件名来构造另一个名称。

我目前做的是:

C-x C-b(这显示了缓冲区列表)

C-x o(现在我在缓冲区列表中)

M-right M-left(在基本名称的开头)

C-space M-right ... M-w(复制基本名称)

C-x o(回到我来的地方)

...

必须有更规范的方法来做到这一点!(我对涉及正确定义命令的方式不感兴趣,我已经有太多了......)


编辑:实际上,我想要的是用这个名字做一些事情,最常见的是创建或读取相关文件。@Trey JacksonC-x C-v就是这样!

4

2 回答 2

5

严格来说,这个命令做你想做的事,即使你不想要一个命令:

(defun copy-base-filename-as-kill ()
  (interactive)
  (let ((filename (buffer-file-name)))
    (when filename
      (kill-new (file-name-nondirectory (file-name-sans-extension filename))))))

但是,如果您真的只是使用这个名称来做其他​​事情......也许更好的解决方案是让做其他事情更容易。

如果您想要根据当前名称创建一个新名称,请尝试使用命令C-x C-v(aka )。M-x find-alternate-file

于 2012-12-12T18:33:05.840 回答
0

我不认为有任何开箱即用的东西可以做到这一点,但这里有一个小的 elisp 函数:

(defun copy-buffer-filename ()
  (when (buffer-file-name) 
    (kill-new (file-name-nondirectory (buffer-file-name)))))
于 2012-12-12T18:29:58.367 回答