Как я могу воздействовать на большее количество буферов Emacs одновременно?

Изменить для обновленного вопроса:

df.groupby('z').agg({'x':'sum','y':lambda r: r.reindex(i).sum()})

Вывод:

    x   y
z        
a   6   7
b  15  22

Используйте reindex, чтобы выбрать только эти индексы из i, затем dropna, чтобы удалить все эти наны. из-за того, что индексы в я не в дф. Затем groupyby и agg:

df.reindex(i).dropna(how='all').groupby('z').agg({'y':'sum'})

или, вам действительно не нужно падать:

df.reindex(i).groupby('z').agg({'y':'sum'})

Вывод:

      y
z      
a   7.0
b  22.0
5
задан tshepang 27 February 2014 в 08:55
поделиться

3 ответа

Вы также можете проверить ibuffer , он позволяет помечать буферы, с которыми вам нравится работать, с помощью m , а затем Вы можете выполнить что-то на нем с E . Также доступны другие общие операции, например запрос-замена на Q . Просто посмотрите меню или описание режима ( Chm ).

Кстати, подобные вещи также возможны из dired , хотя, похоже, он не дает eval команда.

6
ответ дан 18 December 2019 в 09:52
поделиться

В зависимости от того, какая у вас команда, вы можете сделать:

M-: (mapc (lambda (b) (set-buffer b) (*command*)) (buffer-list))

Но у меня такое чувство, что вы хотите чего-то не такого шепелявого. Взгляните на макросы клавиатуры . А именно, решите, что вы хотите сделать:

C-x ( <do-your-command> C-x )
M-: (mapc (lambda (b) (set-buffer b) (kmacro-end-and-call-macro)) (buffer-list))

Возможно, вы захотите определить эту последнюю часть как функцию, если вы часто ее используете:

(defun bufdo ()
   "execute last macro on all buffers, ala bufdo from vi"
   (interactive)
   (mapc (lambda (b) 
            (with-current-buffer b
              (kmacro-end-and-call-macro)))
         (buffer-list)))

Примечание: код не протестирован

9
ответ дан 18 December 2019 в 09:52
поделиться

Взгляните на список-буферов (функцию). Он возвращает список всех открытых буферов (объекты BUFFER). См. руководство для простого примера использования его с mapcar (который работает с каждым элементом списка и накапливает результаты). Вы, вероятно, также найдете полезным set-buffer, который программно устанавливает текущий буфер из Emacs Lisp.

2
ответ дан 18 December 2019 в 09:52
поделиться