This kind of repeated command seems to be a good application for hydra.

On Sunday, March 29, 2015, Kyle Meyer <kyle@kyleam.com> wrote:
Jacob Gerlach <jacobgerlach@gmail.com> wrote:
> Hi List,
>
> I often find myself wanting to move up by several headings:
>
> C-c C-p, C-c C-p, C-c C-p...
> (I don't usually know ahead of time how many I want to move, so I
> can't use a numeric prefix arg)
>
> I like how `set-mark-command' works with non-nil `set-mark-repeat-pop'
> to avoid the need to repeat a prefix key and wanted to try something
> similar for C-p. I came up with the following:
>
> (define-key org-mode-map
>  (kbd "C-p")
>  (lambda (arg)
>    (interactive "p")
>    (if (not (eq last-command 'org-previous-visible-heading))
>        (previous-line arg)
>      (org-previous-visible-heading arg)
>      (setq this-command 'org-previous-visible-heading))))
>
> So now I can do:
> C-c C-p, C-p, C-p...
> And repeatedly move by headlines.

With org-use-speed-commands set to t, this could be "C-c C-p p p".

--
Kyle



--
John

-----------------------------------
Professor John Kitchin 
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu