Wrapping selecting text in enclosing characters in Emacs

后端 未结 9 1759
情书的邮戳
情书的邮戳 2020-12-24 07:06

In Textmate I can wrap enclosing characters (\'(\', \'[\', \'\"\', etc.) around text by selecting it and hitting the opening character. For example, if I select word<

相关标签:
9条回答
  • 2020-12-24 07:36

    For parens you can do M-(. For brackets/braces/quotes you could do:

    (global-set-key (kbd "M-[") 'insert-pair)
    (global-set-key (kbd "M-{") 'insert-pair)
    (global-set-key (kbd "M-\"") 'insert-pair)
    

    Note that if you don't have a region highlighted, it will just insert the pair of whatevers and put the cursor in between them. Also handy for deleting matching whatevers is

    (global-set-key (kbd "M-)") 'delete-pair)
    

    EDIT:

    Good point in the comments about overriding backward-paragraph. You could bind it to C-{, which might interfere with something in a major mode. insert-pair takes the last key and does a lookup to see what pair to insert, so if you don't want to bind it to something-{ you could bind to this function instead:

    (defun my-insert-braces ()
      (interactive)
      (if (region-active-p)
          (insert-pair 1 ?{ ?})
        (insert "{}")
        (backward-char)))
    
    0 讨论(0)
  • 2020-12-24 07:38

    I'd take a look also at skeleton-mode http://ggorjan.blogspot.com/2007/05/skeleton-pair-mode-in-emacs.html

    It's very flexible expecially for parentheses.

    0 讨论(0)
  • 2020-12-24 07:42

    There's now Corral as well. Its "do what I mean" behavior makes this process a lot faster than manually selecting the text and hitting the key.

    (disclaimer: I'm the author)

    0 讨论(0)
提交回复
热议问题