在emacs中管理数千个缓冲区
我正在做一个有一万多个文件的项目。我希望能够轻松地浏览这些文件在emacs中管理数千个缓冲区,emacs,icicles,iswitchb-mode,Emacs,Icicles,Iswitchb Mode,我正在做一个有一万多个文件的项目。我希望能够轻松地浏览这些文件 iswitchb模式由于文件太多而陷入困境冰柱的速度更好,但我喜欢iswitchb的UI 建议 Stefan请求在iswitchb模式下运行探查器执行: - call-interactively 2740 79% - iswitchb-buffer
iswitchb
模式由于文件太多而陷入困境<代码>冰柱的速度更好,但我喜欢iswitchb的UI
建议
Stefan请求在
iswitchb模式下运行探查器执行:
- call-interactively 2740 79%
- iswitchb-buffer 2628 76%
- iswitchb 2628 76%
- iswitchb-read-buffer 2628 76%
- completing-read 2599 75%
- completing-read-default 2596 75%
- read-from-minibuffer 2596 75%
- iswitchb-post-command 1034 30%
- iswitchb-exhibit 1034 30%
- iswitchb-set-common-completion 947 27%
- iswitchb-find-common-substri 925 26%
- mapcar 925 26%
- iswitchb-word-matching-s 922 26%
+ iswitchb-case 10 0%
string-match 1 0%
+ iswitchb-set-matches 63 1%
+ iswitchb-completions 24 0%
+ redisplay_internal (C function) 869 25%
- timer-event-handler 499 14%
- byte-code 499 14%
- apply 499 14%
- jit-lock-context-fontify 491 14%
+ buffer-list 15 0%
+ show-paren-function 6 0%
+ display-time-event-handler 2 0%
+ call-interactively 34 0%
+ icicle-unhighlight-lighter 3 0%
+ iswitchb-pre-command 1 0%
+ iswitchb-make-buflist 15 0%
如果您想使用,但希望交互行为更像iswitchb,则可以尝试几种自定义设置,具体取决于您喜欢的iswitchb交互的哪些部分。请参阅冰柱文档的此部分:
Wrt使用数不清的文件:请记住,您还可以使用冰柱来定义,这些冰柱是您一起使用的相关文件集。与etags和其他方法一样,这是预筛选可能的候选文件名的一种方法。您尝试过这种方法吗
iswitchb-max-to-show is a variable defined in `iswitchb.el'.
Its value is nil
Documentation:
If non-nil, limit the number of names shown in the minibuffer.
If this value is N, and N is greater than the number of matching
buffers, the first N/2 and the last N/2 matching buffers are
shown. This can greatly speed up iswitchb if you have a
multitude of buffers open.
You can customize this variable.
你可以试试赫尔姆。它可以用于切换缓冲区和更多内容:你的海量文件可以组织成有用的集合吗?甚至可能是重叠的集合
书签对这样的组织很有帮助。使用,您可以将以下内容添加到书签:
- 单个文件
- 文件集
- 单个Dired缓冲区,记录它们的标记,“省略”设置和插入的子目录
- 基于标记子目录的Dired缓冲区的稀疏树,递归地
- Emacs台式机
- 书签文件,即书签集
- 显示书签列表及其设置(标记、遗漏等)
你可以标记书签,-样式。标记是您选择用于对书签或文件(即自动文件书签)进行分类的名称(任意字符串)。您可以为书签指定任意数量的标记。标记甚至可以具有关联的(任意)Lisp值
您可以多次为同一文件(或文件集)添加书签,并为不同的书签添加不同的标记
瞧,有多种方法可以定义不同的文件和文件集的“视图”。刚刚在一个有10000个缓冲区的会话中尝试了iswitchb,我发现确实如此,它的速度太慢了
我建议您尝试M-x icomplete模式
:在Emacs-24.3中,默认的C-x b
完成已经接受子字符串匹配,就像iswitchb一样,因此唯一缺少的功能是icomplete模式
提供的功能,但是icomplete模式
在具有10000个缓冲区的会话中仍然非常快。基本上,从Emacs-24.3开始,iswitchb就被icomplete模式
淘汰了。我猜,从您的声誉(以及您提问的方式)判断,这不是一个愚蠢的请求,可以更轻松、更有效地完成。为什么需要一次浏览这么多文件?这些都是源代码文件吗?我没有解决办法,只是好奇。@iamnotmaynard:都是源代码。我正在跟踪四处游荡的代码执行路径。如果您假设每个文件平均有500个LoC,那么这是一个需要探索和维护的数百万LoC项目。还有,有点可怕。@PaulNathan:我理解为什么你有数千个文件,但不理解为什么你有数千个缓冲区。Emacs代码通常不会针对数千个缓冲区进行优化,因此您的问题可能是一个简单的性能缺陷,可以很容易地修复。请尝试M-x探查器启动RET-RET
,然后使用iswitchb一段时间,反复触发慢速行为,然后M-x探查器报告
(不要忘记点击“+”上的RET以查看配置文件树的内部)。探查器信息表明,问题可能是Iswitchb需要很长时间才能生成一条很长的线(重新显示所花费的25%很可能是由于长的线)icomplete
相反,在输出相当于icomplete prospects height
行之后停止,因此它不仅处理一个长列表所花的时间更少,而且重新显示也会花费更少的时间来显示它。不,事情是非常随机的,在这一点上没有可行的分组。