Иногда в моем списке буферов более 10 окон с задержкой, и в итоге я использую, buffer-menuчтобы вручную пометить и убить их все. Есть ли более быстрый способ закрыть все открытые окна?
Я принял ответ, который наиболее прямо отвечает на вопрос. Однако с тех пор я начал применять унцию профилактики вместо этого: emacs.stackexchange.com/a/1041/93
Я никогда не слышал об Ибуффере раньше. Я, безусловно , будет отображение C-x C-bна ibuffer.
Ниспио
Вы также можете нажать t( dired-toggle-marks), чтобы отметить все (если ни один не был ранее отмечен).
Caisah
@caisah dired-toggle-marks- это название команды с задержкой . Нажатие tтакже переключит все метки в ibuffer, но незаполненные буферы обычно превосходят нумерацию запомненных буферов, поэтому переключение не часто имеет смысл в этом контексте.
Ниспио
@nispio Вы правы. Я не знаю почему, но я думал, что все буферы устарели ...
caisah
1
Примечание: это не работает правильно, когда нет буферов с задержкой, потому что D будет применяться не к буферам с задержкой, а к первому буферу в списке.
Даниэль Куллманн
10
Вместо того, чтобы добавить другую функцию для уничтожения всех diredбуферов, я предлагаю вам воспользоваться преимуществами групп фильтров ibuffer, это позволяет группировать буфер по многим условиям.
Вот пример для установки групп фильтров:
(setq-default ibuffer-saved-filter-groups
`(("Default"
;; I create a group call Dired, which contains all buffer in dired-mode
("Dired" (mode . dired-mode))
("Temporary" (name . "\*.*\*"))
)))
Затем C-x C-bоткройте ibufferокно, вы можете увидеть что-то вроде этого:
Переместите курсор на [ Dired ](с M-p, M-n), затем нажмите, dчтобы пометить как удалить
затем нажмите xдля выполнения.
Я предпочитаю этот путь, потому что мне не нужно думать о том, как мне привязать свой ключ к новой функции, и мои буферы лучше организованы.
Группы фильтров не отображались для меня при первом запуске ibufferпосле оценки вашего кода. Я должен был ударить / R(обязательно ibuffer-switch-to-saved-filter-groups), чтобы получить группы.
itjeyd
(ibuffer-switch-to-saved-filter-groups "Default")Вы можете добавить эту строку кода в ловушку ibuffer, имя группы фильтров должно быть изменено, если это не такDefault
Rangi Lin
1
Да, именно это я и сделал. Не знал о группах фильтров до того, как прочитал ваш ответ, спасибо, что упомянули их;)
itsjeyd
10
У вас есть много буферов Dired, потому что вы хотели их всех в один момент? Итак, вы хотели создать каждый из них как отдельные буферы?
Если нет, решение простое: скажите Dired повторно использовать существующий буфер Dired, когда вы нажмете RETимя каталога, чтобы открыть его в Dired.
Скажите Dired, чтобы повторно использовать Dired буферы:
(diredp-toggle-find-file-reuse-dir 1)
В результате, когда вы RETнажимаете (или щелкаете мышью) каталог в Dired, find-alternate-fileиспользуется, поэтому оригинальный буфер Dired заменяется (удаляется) новым.
Вы можете переключать это поведение в любое время, используя C-M-R(aka C-M-S-r) в Dired.
Это решение, на котором я остановился сейчас. Я никогда не хотел 20 открытых буферов Dired. Спасибо за предложение (и создание).
Nispio 10.10.14
Ссылки мертвы, получая 404: (
Zelphir Kaltstahl
1
@Zelphir: Спасибо за хедз-ап. Должно быть хорошо сейчас. (Emacs Wiki обычно менял свои URL, поэтому старые сообщения, подобные этой, получали неработающие ссылки.)
Введите в приглашение: *Di(частичное слово для Dired, не нужно вводить больше). По мере ввода буферы сужаются постепенно. Теперь остался только Diredбуфер. Нажмите, M-aчтобы отметить все.
Нажмите, TABчтобы перейти в меню действий, и нажмите, Kчтобы выбрать действие Kill buffer(s).
Нажмите, RETчтобы выполнить действие.
Хорошо то, helm-miniчто он может заменить обычный Emacs C-x b, поэтому вам не придется использовать две привязки клавиш, одну для переключения буфера и одну для фактического менеджера буфера. helm-miniэто все в одном. Читайте больше в моем руководстве по мини-рулю .
helm-miniможет также нечеткий буфер совпадений и позволяет открывать несколько буферов, помечая их C-SPCили M-a(обозначать M ark a ll). Вы также можете сузить до буфера, содержащего определенную строку, добавив @перед шаблоном, например, @testозначает, что выбранные только буферы содержат строку «test».
Я считаю, -filterтребует dash.elот MELPA. Вы, вероятно, должны указать это как требование.
Вамси
1
На самом деле вы можете искать способ очистки ненужных буферов автоматически, и в этом случае вы должны проверить midnight.el, что является частью Emacs.
Но, вообще говоря, ibufferпозволяет очень легко работать с большими буферами, как предложил Франциско.
Если вы используете Icicles , то можете использовать C-x kдля уничтожения всех буферов Dired или всех буферов в любом заданном режиме.
После нажатия C-x kиспользуйте, C-x M +чтобы сохранить только буферы с определенным режимом. Нажмите, TABчтобы увидеть режимы и выберите dired-mode. Затем используйте, C-!чтобы убить все буферы в этом режиме.
Ответы:
Вы можете сделать следующее:
M-x
ibuffer
* /
отмечать буферы в режиме Dired.D
удалить их.источник
C-x C-b
наibuffer
.t
(dired-toggle-marks
), чтобы отметить все (если ни один не был ранее отмечен).dired-toggle-marks
- это название команды с задержкой . Нажатиеt
также переключит все метки в ibuffer, но незаполненные буферы обычно превосходят нумерацию запомненных буферов, поэтому переключение не часто имеет смысл в этом контексте.Вместо того, чтобы добавить другую функцию для уничтожения всех
dired
буферов, я предлагаю вам воспользоваться преимуществами групп фильтровibuffer
, это позволяет группировать буфер по многим условиям.Вот пример для установки групп фильтров:
Затем
C-x C-b
откройтеibuffer
окно, вы можете увидеть что-то вроде этого:Переместите курсор на
[ Dired ]
(сM-p
,M-n
), затем нажмите,d
чтобы пометить как удалитьзатем нажмите
x
для выполнения.Я предпочитаю этот путь, потому что мне не нужно думать о том, как мне привязать свой ключ к новой функции, и мои буферы лучше организованы.
источник
ibuffer
после оценки вашего кода. Я должен был ударить/ R
(обязательноibuffer-switch-to-saved-filter-groups
), чтобы получить группы.(ibuffer-switch-to-saved-filter-groups "Default")
Вы можете добавить эту строку кода в ловушку ibuffer, имя группы фильтров должно быть изменено, если это не такDefault
У вас есть много буферов Dired, потому что вы хотели их всех в один момент? Итак, вы хотели создать каждый из них как отдельные буферы?
Если нет, решение простое: скажите Dired повторно использовать существующий буфер Dired, когда вы нажмете
RET
имя каталога, чтобы открыть его в Dired.Вот как это сделать:
Загрузить библиотеку Dired + (
dired+.el
):Скажите Dired, чтобы повторно использовать Dired буферы:
В результате, когда вы
RET
нажимаете (или щелкаете мышью) каталог в Dired,find-alternate-file
используется, поэтому оригинальный буфер Dired заменяется (удаляется) новым.Вы можете переключать это поведение в любое время, используя
C-M-R
(akaC-M-S-r
) в Dired.источник
Как-то так (прокрутите немного)?
источник
Вы также можете использовать
helm-mini
:M-x helm-mini
.*Di
(частичное слово дляDired
, не нужно вводить больше). По мере ввода буферы сужаются постепенно. Теперь остался толькоDired
буфер. Нажмите,M-a
чтобы отметить все.TAB
чтобы перейти в меню действий, и нажмите,K
чтобы выбрать действиеKill buffer(s)
.RET
чтобы выполнить действие.Хорошо то,
helm-mini
что он может заменить обычный EmacsC-x b
, поэтому вам не придется использовать две привязки клавиш, одну для переключения буфера и одну для фактического менеджера буфера.helm-mini
это все в одном. Читайте больше в моем руководстве по мини-рулю .helm-mini
может также нечеткий буфер совпадений и позволяет открывать несколько буферов, помечая ихC-SPC
илиM-a
(обозначать M ark a ll). Вы также можете сузить до буфера, содержащего определенную строку, добавив@
перед шаблоном, например,@test
означает, что выбранные только буферы содержат строку «test».источник
Я бы попробовал что-то вроде этого:
источник
-filter
требуетdash.el
от MELPA. Вы, вероятно, должны указать это как требование.На самом деле вы можете искать способ очистки ненужных буферов автоматически, и в этом случае вы должны проверить
midnight.el
, что является частью Emacs.Но, вообще говоря,
ibuffer
позволяет очень легко работать с большими буферами, как предложил Франциско.источник
Если вы используете Icicles , то можете использовать
C-x k
для уничтожения всех буферов Dired или всех буферов в любом заданном режиме.После нажатия
C-x k
используйте,C-x M +
чтобы сохранить только буферы с определенным режимом. Нажмите,TAB
чтобы увидеть режимы и выберитеdired-mode
. Затем используйте,C-!
чтобы убить все буферы в этом режиме.источник