![如何在 emacs 中重新打开文件?](https://linux22.com/image/1255930/%E5%A6%82%E4%BD%95%E5%9C%A8%20emacs%20%E4%B8%AD%E9%87%8D%E6%96%B0%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%EF%BC%9F.png)
在旧版 emacs 中我曾经输入:
C-x C-f RET
它会重新打开缓冲区中当前访问的文件。现在(emacs 23.1.1)它会打开目录的 Dired。
答案1
我使用M-x find-alternate-file
默认绑定到的C-x C-v
。
此命令允许将文件重新加载到当前缓冲区,重新加载相同的文件包含 - 默认情况下显示在迷你缓冲区中。但是,如果您启用了 ido-mode 进行缓冲区切换,则这不太方便,因为它默认不会显示当前文件名。
答案2
您确定不想恢复缓冲区吗?
M-x revert-buffer RET
答案3
你可以这样做C-x C-f M-n RET
。行为被改变是因为C-x C-f RET
重新打开文件并不像C-x C-f DEL RET
在目录上调用 Dired 那么常见。
您还可以使用M-x revert-buffer
从磁盘重新加载文件,如果您尝试编辑磁盘上的副本已被外部修改的文件,Emacs 会告诉您(在大多数操作系统上)。
C-x C-f M-n
获取迷你缓冲区中文件的完整路径也很有用,这样您就可以打开具有相似名称的文件或将其复制到终止环或剪贴板。
答案4
我发现一个有用的建议,可以回到以前的C-x C-f RET
行为help-gnu-emacs 邮件列表:
这个 hack 是由 Ted Stern 发布的:
(defun find-file-read-args (prompt mustmatch)
(list (let ((find-file-default
(and buffer-file-name
(abbreviate-file-name buffer-file-name))))
(read-file-name prompt nil find-file-default mustmatch))
t))
我尝试了一下,它在 emacs 23.1.1 上运行良好。