Управление многими тысячами буферов в Emacs

Я нахожусь на проекте с более чем десятью тысячами файлов. Я хотел бы иметь возможность легко перемещаться по этим файлам.

iswitchb режим очень сильно тормозит с таким количеством файлов; icicles лучше по скорости, но мне нравится интерфейс iswitchb.

Предложения?


Стефан попросил запустить профилировщик на iswitchb-mode выполнение:

- 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%

5 ответов

Если вы хотите использовать Icicles, но хотите, чтобы интерактивное поведение больше напоминало iswitchb, то вы можете попробовать несколько настроек в зависимости от того, какие части взаимодействия iswitchb вам нравятся. Смотрите этот раздел документа Сосульки: Сосульки - Ido и IswitchB.

При использовании миллиардов файлов: помните, что вы также можете определять проекты, используя Icicles - наборы связанных файлов, которые вы используете вместе. Это, как и etags и другие подходы, является одним из способов предварительной фильтрации возможных кандидатов на имена файлов.

Просто попробовав iswitchb в сеансах с 10000 буферами, я действительно вижу, что это невыносимо медленно.

Я предлагаю вам попробовать M-x icomplete-mode: в Emacs-24.3 по умолчанию C-x b Завершение уже принимает совпадения подстроки, точно так же, как iswitchb, поэтому единственная отсутствующая функция - это та, которую предлагает icomplete-mode, но icomplete-mode все еще идеально быстро в моей сессии с 10000 буферов. В основном, начиная с Emacs-24.3, iswitchb устарела icomplete-mode,

Могут ли ваши миллионы файлов быть организованы в полезные наборы - даже, возможно, перекрывающиеся наборы?

Закладки могут очень помочь с такой организацией. С помощью Bookmark + вы можете добавить в закладки:

  • Отдельные файлы.
  • Наборы файлов.
  • Отдельные буферы Dired, запись их маркировки, "пропущенные" настройки и вставленные подкаталоги.
  • Редкие деревья буферов Dired, основанные на отмеченных подкаталогах, рекурсивно.
  • Рабочие столы Emacs.
  • Файлы закладок, т. Е. Наборы закладок.
  • Отображение списка закладок с их настройками (маркировка, пропуски и т. Д.).

И вы можете пометить закладки, вкусный стиль. Теги - это имена (произвольные строки), которые вы выбираете для категоризации закладок или файлов (то есть, автофайловые закладки). Вы можете назначить любое количество тегов для закладки. Теги могут даже иметь ассоциированные (произвольные) значения Lisp.

Вы можете пометить один и тот же файл (или набор файлов) несколько раз и присвоить этим разным закладкам разные теги.

Таким образом, существуют различные способы определения разных "представлений" файлов и наборов файлов.

Вы пробовали это?

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.

Вы можете дать Хелму попробовать. Его можно использовать для переключения буферов и многого другого: http://amitp.blogspot.hu/2012/10/emacs-helm-for-finding-files.html

Другие вопросы по тегам