我很方便地切换到包含ido包的emacs入门套件.
ido有一个很好的功能,它建议查找文件时的路径,除了在尝试创建新文件时,它通常非常方便.当新文件名与另一个路径中的建议匹配时,ido会自动切换到该路径,假设这是我想要的,但通常不是,我发现它很烦人.
要解决此问题,我要么从shell中触摸newfile,创建一个新的缓冲区并另存为,或者使用Mx查找文件来获取原始行为.我当然可以再次将Cx Cf重新绑定到find-file但是我必须喜欢ido-find-file,我只是希望它在我明确键入路径时停止自动切换路径.
我认为可能有一些简单的密钥我可以在ido-find-file中按下它告诉它我正在寻找的文件不存在并且停止提出建议,或者我可以设置一些var以获得更理想的行为?
我的问题:我启用了Ido模式,我想编辑(例如).emacs
我的主目录中的文件.我没有.emacs
文件,但我确实有.emacs.d
,所以ido假设我想进入目录C-x C-f .emacs RET
.
我一直试图解决这个问题至少几个星期,我有几个解决办法,但我真的不想做任何疯狂的事情.
在emacs中使用ido-mode时,当我尝试在目录中创建一个新文件时,它会妨碍我:使用:( C-x C-f开始键入一个新文件名,但尚不存在)RET
通常这应该创建一个新文件,但是当我有ido模式时,我必须快速输入新文件名,否则ido-mode决定将我移动到一个目录中,该目录中有一个匹配名称的文件,导致我打开文件,而不是创建一个新文件.
有没有人知道如何强制ido-mode以避免查看你当前所在目录以外的目录?
我使用ido模式.我是这样写的.emacs
(require 'ido)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(ido-mode t)
Run Code Online (Sandbox Code Playgroud)
当我打开文件时,我会执行Cx Cf my_file
,如果当前目录中不存在,emacs将尝试在大约一秒内在其他最近使用的目录中搜索它.但是,大多数时候我只是想创建新文件.我必须非常快速地输入文件名,然后用Cj来确认它.我怎么能阻止ido这样做?
我正在从TextMate切换到Emacs.我真正想在Emacs中使用的TextMate的一个功能是使用模糊匹配的"在项目中查找"搜索框.Emacs有这个与ido,但ido不会通过子目录递归搜索.它只在一个目录中搜索.
有没有办法给ido一个根目录并搜索它下的所有内容?
更新:
以下问题与MichałMarczyk的答案中的find-file-in-project.el有关.
如果此消息中的任何内容听起来很明显,那是因为我使用Emacs的时间不到一周.:-)
据我了解,project-local-variables允许我在.emacs-project文件中定义我保留在项目根目录中的东西.
如何将find-file-in-project指向我的项目根目录?
我不熟悉Emacs Lisp中的正则表达式语法.ffip-regexp的默认值为:
".*\\.\\(rb\\|js\\|css\\|yml\\|yaml\\|rhtml\\|erb\\|html\\|el\\)"
Run Code Online (Sandbox Code Playgroud)
我认为我可以将扩展切换到适合我项目的扩展.
你能解释一下ffip-find-options吗?从文件:
(defvar ffip-find-options"""使用项目中的find-file时传递给`find'的额外选项.
使用它来排除项目的部分:\" - not -regex \\".供应商.\\ "\"")
这究竟是什么意思,我如何使用它来排除文件/目录?
你能分享一个例子.emacs-project文件吗?
在Emacs中使用ido-mode允许我使用Cx Cf从迷你缓冲区打开一个文件.此方法一次只打开一个文件.如何打开目录中的所有文件或指定要打开的多个文件?
我在Windows上使用Emacs.我的默认文件夹是c:/home
,但我想编辑我的文件,d:/
如何在ido模式下执行?我试过//
但是让我进去了c:/
.
目前,我使用C-f(改回正常查找文件模式),但这首先打败了使用ido模式的目的....
我是一个大风扇ido-mode
,以至于我想用它喜欢的东西describe-function
或find-tag
等等,而无需编写像在"我能得到IDO模式完成了在Emacs搜索标签?" 每一个人.
都
(defalias completing-read ido-completing-read)
Run Code Online (Sandbox Code Playgroud)
和
(setf 'completing-read 'ido-completing-read)
Run Code Online (Sandbox Code Playgroud)
不起作用,至少部分是因为它的主体ido-completing-read
调用completing-read
,所以任何简单的重新定义都会导致无限递归.
从理论上讲,它应该是可能的,因为文档字符串的第一行ido-completing-read
是"Ido替换内置函数" completing-read
.我环顾四周,似乎找不到任何试图或成功的人.
我意识到Icicles可能会提供类似这样的东西,无论如何我最终可能会继续这样做,但这比我现在想要的更多一点.
谢谢你的帮助.
在emacs中,我想在多个帧中打开相同的缓冲区.在我使用ido之前,这很容易:我只是在一帧中切换到缓冲区C-x b,然后将另一帧聚焦在我的窗口管理器中,然后再打开另一帧中的缓冲区(C-x b再次.)但是,现在我使用ido进行模糊完成C-x b,当我尝试打开缓冲区的第二个副本时,它只是将焦点发送回第一帧并让我感到沮丧.
我可以设置一个变量来控制这种行为吗?
理想情况下,我不想C-x b ENTER被其他打开的缓冲区所偏见(通常,它会尝试默认为在任何窗口中未打开的缓冲区.)
我正在寻找类似Textmate在Command-T上的模糊搜索,在Vim中使用FuzzyFinder或在Emacs中使用Ido的东西.它存在吗?如果不是,你更喜欢这样做?