我经常使用dired-mode
,最近我开始使用ido
:
(ido-mode 1); enable ido-mode
(setq ido-enable-flex-matching t); flexibly match names via fuzzy matching
(setq ido-everywhere t); use ido-mode everywhere, in buffers and for finding files
(setq ido-use-filename-at-point 'guess); for find-file-at-point
(setq ido-use-url-at-point t); look for URLs at point
(setq ffap-require-prefix t); get find-file-at-point with C-u C-x C-f
当我在一个直接缓冲区中复制一个文件(带C
)时,我仍然需要使用“标准方式”来给出复制文件的新位置。这意味着,我必须使用标准的TAB完成,但没有ido
- 完成。这同样适用于R
移动文件等。因此我想知道是否有可能ido
也可以在直接缓冲区中对C
或R
采取行动?
答案 0 :(得分:6)
看起来我遇到了同样的问题。一些调查显示我们需要覆盖变量read-file-name-function
,默认情况下,变量read-file-name-function-default
。但是,查看ido-everywhere
(这是一种次要模式)的源代码,它会为我们做到这一点。
<强>解决方案:强>
而不是(setq ido-everywhere t)
,而是将其替换为:
(ido-everywhere t)
这对我进行了修复,导致ido-read-file-name
在使用C
或类似情况时在直接缓冲区中被调用。
另一种选择:
您可能还会考虑ido-everywhere
的强化版本:
https://github.com/DarwinAwardWinner/ido-ubiquitous
;;; Commentary:
;; You may have seen the `ido-everywhere' variable in ido.el and got
;; excited that you could use ido completion for everything. Then you
;; were probably disappointed when you realized that it only applied
;; to *file names* and nothing else. Well, ido-ubiquitous is here to
;; fulfill the original promise and let you use ido completion for
;; (almost) any command that uses `completing-read' to offer you a
;; choice of several alternatives.
答案 1 :(得分:3)
我发现R键的(put 'dired-do-rename 'ido 'find-file)
工作正常,如果您需要停在路径上,只需按C-j
而不是填写文件名。