我成功地让dired在单个窗口中工作,当我浏览文件系统时。
为了改善人机交互,我决定创建书签来标记我最常用的目录,例如'lwt','eve'等。但是每次我打开书签时,即使旧的dired缓冲区存在,新的dired缓冲区也会被创建。
如何使它在现有的dired缓冲区中打开书签?
原回答实际上是无用的。我很抱歉没有进行充分测试。我会将其保留在这里,以便其他可能的回答者不会像我一样被误导。
与此同时,我仔细查看了bookmark.el
的源代码,dired+
的修改对其没有任何影响。默认情况下,bookmark-jump
函数使用switch-to-buffer
函数作为其显示函数。bookmark-jump
函数有一个可选的display-func
参数,因此(需要一些elisp hacking的)可能的解决方案是创建一个函数,重复使用当前dired缓冲区(基于dired+
源代码),并使用它调用bookmark-jump
,如果这个概念可行,则绑定到一个键盘快捷方式。
你观察到的行为只是的一般“导航时创建新的缓冲区”行为的副作用。这使得这个问题几乎成为How do I stop emacs dired mode from opening so many buffers?的重复。
在那里提出的解决方案和Dired Reuse Directory Buffer Emacs Wiki页面中提出的解决方案中,最简单的可能是安装Dired+包,并使用以下命令切换目录缓冲区的重用:
(toggle-diredp-find-file-reuse-dir 1)
.emacs
文件中。(defun my-bookmarks-list-same-buffer ()
"Open *Bookmarks* in current buffer."
(interactive)
(bookmark-bmenu-list)
(switch-to-buffer "*Bookmark List*"))
(global-set-key (kbd "s-b") 'my-bookmarks-list-same-buffer)