假设我正在blah.txt
使用 Emacs 进行编辑,我决定打开 dired 以重命名文件blah.txt。当我按C-x d RET
(或C-x C-f RET
)时,将显示一个 dired 缓冲区以显示包含 的目录的内容blah.txt
,但光标不会在 上blah.txt
。所以我需要先搜索我的文件 ( C-s blah.txt
) 将光标放在它上面,然后我可以重命名它 ( R
)。
如何自动化或删除该步骤C-s blah.txt
?
假设我正在blah.txt
使用 Emacs 进行编辑,我决定打开 dired 以重命名文件blah.txt。当我按C-x d RET
(或C-x C-f RET
)时,将显示一个 dired 缓冲区以显示包含 的目录的内容blah.txt
,但光标不会在 上blah.txt
。所以我需要先搜索我的文件 ( C-s blah.txt
) 将光标放在它上面,然后我可以重命名它 ( R
)。
如何自动化或删除该步骤C-s blah.txt
?
dired-jump
正是你想要的。
(autoload 'dired-jump "dired-x" "Jump to dired corresponding current buffer.")
(autoload 'dired-jump-other-window "dired-x" "jump to dired in other window.")
然后调用:
M-x dired-jump
或者
M-x dired-jump-other-window
你想要C-x C-j
。
日出指挥官 是一个大大改进的靴子。默认情况下它会满足您的需求。
你可以这样做:
M-: (dired (buffer-name (current-buffer)))
然后在 dired 中唯一可见的文件将是您当前的文件,并且光标将就在它上面。
这条建议将做你想做的事:
(defadvice dired (around dired-jump-to-buffer activate)
"When running dired, move cursor to the line for the buffer we came from"
(interactive (list nil nil)) ;; bogus values, will be overwritten below
(let ((coming-from (buffer-file-name)))
(ad-set-args 0 (dired-read-dir-and-switches ""))
ad-do-it
(when (and coming-from
(equal (file-truename default-directory) (file-truename (file-name-directory coming-from))))
(goto-char (point-min))
(search-forward (file-name-nondirectory coming-from) nil t))))
注意:适用于C-x d,但不是C-x C-fdired 的入口点。
$ emacs --version
GNU Emacs 24.3.1
在 .emacs 中:
(require 'dired-x)
现在C-x C-j
应该绑定了dired-jump
。