http://www.perlmonks.org?node_id=442036


in reply to Desparately seeking a bilingual vim/Emacs expert

I'm not sure there are exact mappings between vim and emacs, since they use different concepts.

  1. I have several macro-like functions which I've defined for Perl programming convenience. For example, this creates a new sub:

    (defun perl-sub (name) "Insert a new subroutine" (interactive "*sName: ") (insert "sub {\n\n\n\n}\n") (previous-line 4) (indent-for-tab-command) (insert "my () = @_;") (search-backward "sub ") (goto-char (match-end 0)) (insert name) (search-forward "("))

    It prompts for the sub name, then outputs a bare subroutine with "my () = @_;" on the first line and putting the cursor inside the `my' list. You can then call this function with `ESC x perl-sub'; you could also bind it to key command, for example (global-set-key [f3] 'perl-sub), then you can just hit the F3 key to do it. Modifying this to output Data::Dumper stuff (good idea) would be straight-forward.

  2. I'm not sure what document templates are for. You could easily include a file with `C-x i', though, or use the above "macro" technique.

  3. For indenting, I have this inside (custom-set-variables):

    '(cperl-close-paren-offset -4) '(cperl-continued-statement-offset 2) '(cperl-indent-level 4) '(cperl-indent-parens-as-block t) '(cperl-label-offset 0) '(cperl-tab-always-indent t)

    That gets pretty close to (tab) indenting consistently with what I think is the style seen in most Perl books and documentation.