我正在尝试使自己使用Ido模式。有时候很好,但有时却非常愚蠢。这是我最大的失望。
我阅读了一些带有完整文件名的日志,然后复制了一个名称,然后尝试打开该文件。
没有Ido的方法是: C-aC-yC-kRET
对于Ido,存在两个主要问题:
如果我拥有完整的文件名,则无法输入(我必须删除第一个斜杠,否则即使按//也无济于事。
我无法编辑文件名的中间部分,其余部分保持不变。
可以吗
C-x C-f
后备广告非常有用!
我正在尝试使自己使用Ido模式。有时候很好,但有时却非常愚蠢。这是我最大的失望。
我阅读了一些带有完整文件名的日志,然后复制了一个名称,然后尝试打开该文件。
没有Ido的方法是: C-aC-yC-kRET
对于Ido,存在两个主要问题:
如果我拥有完整的文件名,则无法输入(我必须删除第一个斜杠,否则即使按//也无济于事。
我无法编辑文件名的中间部分,其余部分保持不变。
可以吗
C-x C-f
后备广告非常有用!
Answers:
当ido
命令处于活动状态(ido-find-file
在这种情况下)时,您可以使用ido-default绑定回退到同一命令的非ido版本(find-file
在这种情况下)C-x C-f
进行ido-fallback-command
。
为了回答您的问题,
C-x C-f
会打电话给ido-find-file
。C-x C-f
将回落到find-file
。C-a C-y C-k
RET像平常一样将复制的文件路径插入到迷你缓冲区中。注意:在中ido
,C-x C-f C-x C-f
将执行与相同的操作C-x C-f C-f
,即回退到find-file
。
关于C-f
在ido
中ido-mode
,C-f
势必会ido-magic-forward-char
。来自ido.el
,
(defun ido-magic-forward-char(arg) “向前移动用户输入或执行魔术操作。 如果没有用户输入或输入结束,请执行魔术操作: Cx Cb ... Cf切换到“ ido-find-file”。 Cx Cf ... Cf退回到非Ido`find-file'。 Cx Cd ... Cf退回到非Ido简短的“脏”了。 Cx d ... Cf退回至非Ido'dirted'。”
C-f
回到find-file
,而不是C-x C-f
。我看不到我已经对它进行了自定义(我和这里的其他人一样,很大程度上依赖于后备。ido
在使用了一段时间后,这几乎是值得的麻烦)。
C-x C-f C-f
有效。
假设您要处理完整路径名,则其他方法可能会起作用:
M-x ffap
(find-file-at-point
):它将自动读取路径名并打开文件M-x compilation-shell-minor-mode
会更改路径的字体,并使它们“可点击”(使用或RET
)。单击它会将您带到该文件和特定行,并且您可以使用next-error
和previous-error
进行导航。我经常使用它,就像在shell-mode中一样。由于总是有不止一种方法来执行此操作,因此这是@ abo-abo思想的一种变体,该思想使ido完成保持活动状态,而不是退回到常规的find命令。
(defun ido-yank ()
(interactive)
(let ((path (current-kill 0)))
(if (file-exists-p path)
(progn
(let ((dir (file-name-directory path)))
(if dir (ido-set-current-directory dir)))
(setq ido-exit 'refresh)
(setq ido-text-init (if (file-directory-p path) nil (file-name-nondirectory path)))
(setq ido-rotate-temp t)
(exit-minibuffer))
(yank))))
(define-key ido-file-dir-completion-map (kbd "C-y") 'ido-yank)
通过此绑定:
如果当前kill是有效的目录路径,则可以启动ido-find-file
,单击C-y
跳转到yanked目录,然后继续使用idocomplete选择文件。
如果当前的kill是有效的文件路径,则可以启动ido-find-file
,单击hit C-y
跳到yanked目录,并提供yanked文件名作为完成,然后单击RET打开该文件。
如果当前有其他原因,通常会被取消。
let
绑定各个ido-...
变量而不是绑定它们不是更好setq
吗?现在看来,您正在永久设置值,而不是在函数的整个生命周期中都这样做。
ido-next-work-directory
。我认为已设置变量,以便它们在退出minibuffer调用和随后的刷新期间都可以生存。但是我仍然不完全了解ido的内部原理!
find-file
,C-x C-f
然后正常粘贴。但是,那是更多的击键。或者,如果您想要功能丰富find-file
并且仍然满足您的用例,则可以使用Helm 。