我使用Ido模式并使用Ergoemacs模式,它将find-file
命令绑定到C-o.当您浏览文件时,可以通过按下C-x C-f迷你缓冲区暂时禁用Ido .我想把它改成C-o,所以我可以按两次来运行find-file
没有Ido.我怎样才能做到这一点?
在ido.el
我看到Ido使用函数ido-init-completion-maps
,它通过运行代码来定义键
(let ((map (make-sparse-keymap)))
(define-key map "\C-x\C-f" 'ido-fallback-command))
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何使用它来绑定ido-fallback-command
到C-o迷你缓冲区内.
Emacs版本:24.0.94.1
编辑(20.03.12):在与Francesco讨论后,我评估:(define-key ido-file-completion-map "\C-o" 'ido-fallback-command)
.
现在,当我按下时,C-h k C-o我看到这一行:C-o Fallback to non-ido version of current command
.
然而,当我C-o再次按下迷你缓冲区时,我收到此错误:Debugger entered--Lisp error: (error "Command attempted to use minibuffer while in minibuffer")
C-x C-f在迷你缓冲区中仍然作为后备命令.
我们发现Ergoemacs包与它有关.当我关闭Ergoemacs模式,都C-x C-f和C-o工作作为后备的命令.我尝试minor-mode-map-alist
使用以下代码交换Ido和Ergoemacs键映射: …
我经常使用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
Run Code Online (Sandbox Code Playgroud)
当我C
在一个直接缓冲区中复制一个文件(带)时,我仍然需要使用"标准方式"来给出复制文件的新位置.这意味着,我必须使用标准的TAB完成,但没有ido
完成.这同样适用于R
移动文件等.因此,我想知道是否有可能得到ido
同样作用于C
或R
在dired缓冲区?
我正在尝试使用org-mode设置捕获/重新归档工作流,但是我无法让ido作为完成引擎工作。
我启用了ido:
(require 'ido)
(setq ido-everywhere t)
(ido-mode t)
Run Code Online (Sandbox Code Playgroud)
然后在我的配置中,稍后我尝试org-refile
使用以下配置来设置ido完成
(setq org-agenda-files
'("~/org/captured.org"
"~/org/work.org"
"~/org/learning.org"
"~/org/life.org"))
(setq org-refile-targets '((nil :maxlevel . 6)
(org-agenda-files :maxlevel . 6)))
(setq org-refile-use-outline-path 'file)
(setq org-completion-use-ido t)
Run Code Online (Sandbox Code Playgroud)
我希望通过这些设置,当我尝试调用时,org-refile
我会在迷你缓冲区中看到一个ido完成接口,其中列出了我可以重新归档的文件和标题,结构类似于目录树。
但是,我看到的只是空白,就像非ido完成界面一样。我可以使用此界面完成操作。例如,我可以键入wo[Tab]em[Tab]
get work/email
,但是我更喜欢ido。
我的配置方式有问题吗?
我有两个问题,我相信有些相关:
1)在IDO中,我想将ido-restrict-to-match更改为除C-SPCor之外的其他内容C-@.不幸的是,我不知道如何告诉emacs我想要一个不同的快捷方式(比方说C-0).
2)我想保护我,C-;但每当flyspell模式运行它超车C-;.我的定义在.emacs中:
(global-set-key (kbd "C-;") 'mark-paragraph)
Run Code Online (Sandbox Code Playgroud)
但显然flyspell会覆盖这个......(尽管如此,如果我查看帮助M-h k C-;它会说mark-paragraph
)
有人可以告诉我如何在这些条件下绑定/解除绑定键吗?它必须在不修改ido.el和flyspell.el并重新构建的情况下工作,对吗?
非常感谢!
我ido-mode
在Emacs 24下使用以下设置:
(ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(setq ido-use-filename-at-point 'guess)
(setq ido-use-url-at-point t)
(setq ffap-require-prefix t)
Run Code Online (Sandbox Code Playgroud)
假设您在当前目录中有多个具有相同名称但结尾不同的文件.如果您通过更改缓冲区C-x b
,则会收到一些建议.这些建议的顺序能否以某种方式受到影响?
例如,假设您在当前目录中有多个Sweave(.Rnw)文件.它们总是比从它们创建的相应(.tex)文件更重要.因此,在大多数情况下,您希望将缓冲区更改为.Rnw文件,而不是.tex文件.因此,如果首先建议.Rnw文件(在存在具有相同基本名称的.Rnw和.tex文件的所有目录中)将是很好的.
通常我想ido
忽略所有非用户缓冲区,即所有以*
. 我使用以下设置实现了这一点:
(setq ido-ignore-buffers '("\\` " "^\*"))
Run Code Online (Sandbox Code Playgroud)
然而,这在使用 shell 或解释器时会产生问题,例如ielm
,交互缓冲区被命名为*ielm*
。显然,手动添加要忽略的所有缓冲区并不是一个真正的选择,因为加载了许多不同的 emacs 包后,列表可能会变得很长。我知道C-a
哪个从内部禁用了忽略模式ido
,但是,我不想C-a
每次切换到ielm
缓冲区时都点击。
我的问题是:
有一些变量,它允许指定IDO应该缓冲区不能忽略(虽然它们匹配的正常忽略列表)?或者有没有其他方法可以解决这个问题?
在我当前的工作目录中~/WD
有一个abc.txt
文件.现在我想abc.txt
在子目录下创建另一个~/WD/NEW/
.当我输入C-x C-f
和目录时~/WD/NEW/abc.txt
,ido正在将字符串更改为~/WD/abc.txt
,这不是我想要打开的.当我尝试修改字符串时,ido会自动将我的输入"纠正"为错误的字符串.
有什么方法可以解决这个问题吗?