在Emacs中用美元符号($)包围区域

在Emacs中用美元符号($)包围区域,emacs,editing,surround,Emacs,Editing,Surround,有一个内置的emacs函数用于用括号包围一个区域,正如我在这里发现的那样:。有没有类似的方法用美元(美元)包围一个地区 C-h f insert pair告诉我们,这个函数可以用任何字符包围sexp,那么如何像链接答案中那样用$toM-$绑定包围 My Emacs:GNU Emacs 24.3.1(i686 pc linux GNU,GTK+版本3.10.7)有一个工具包,它与一系列相关的工具包一起提供此功能 它被称为ar美元区域atpt 在这里获取: 通过查看插入括号函数,您可以复制M-(所做

有一个内置的emacs函数用于用括号包围一个区域,正如我在这里发现的那样:。有没有类似的方法用美元(美元)包围一个地区

C-h f insert pair
告诉我们,这个函数可以用任何字符包围sexp,那么如何像链接答案中那样用$to
M-$
绑定包围


My Emacs:GNU Emacs 24.3.1(i686 pc linux GNU,GTK+版本3.10.7)

有一个工具包,它与一系列相关的工具包一起提供此功能

它被称为
ar美元区域atpt

在这里获取:

通过查看插入括号函数,您可以复制M-(所做的操作。它所做的只是使用硬编码参数调用插入对,因此您可以方便地将M-$绑定到以下函数:

    (defun insert-dolla-dolla-bills-yall (&optional arg)
      (interactive "P")
      (insert-pair arg ?\$ ?\$))

将变量
插入对列表
设置为包含
(?\$?\$)

然后将密钥绑定到
插入对
,以执行所需操作:

(global-set-key (kbd "M-$") 'insert-pair)
如果使用该库,它内置支持在选定区域的任一端使用自定义代码包装环绕区域:

注意:YASnippet的最新版本似乎已将函数名称从
yas/selected text
更改为
yas selected text
。但是,似乎还有向后兼容的版本

#-*-模式:代码段-*-
#名称:美元环绕
#关键词:美元环绕
#绑定:C-I$
# --
$`yas/所选文本`$

尝试:将这两行粘贴到scratch,然后执行“M-x eval current buffer”。结果:“M-$”在标记的区域后仅产生一个$字符。我是否做错了什么?抱歉,当我打算键入
?\?\?
时,不知何故我键入了
?\$
。上面已更正。出于某种原因,软件包需要sh-beg-end.el文件,但没有获取它(在评估(require‘thing at point utils)’时,emacs说‘无法打开加载文件:sh beg end’)。在我从所有东西下载了sh beg end之后,一切都很好。致电ar region dollar atpt完成了任务,谢谢:)@danek抱歉,这是一个bug。您可以放心地指出“(需要…-这只会影响在sh脚本模式下的编辑。将尽快在下一版本中上载修复。@danek发布了新版本,该版本不应存在此错误:使用yasnippet版本20141017.736---提供了正确的剪切作品。谢谢:)是的,就是这样!)但是你是如何找到函数代码的呢?我尝试了所有的,但没有找到任何
.el
或其他包含源代码的文件
C-h f insert圆括号
也不能告诉您在哪里查找。有趣的是,您的linux发行版可能在默认情况下不安装elisp源代码,只安装字节编译版本。如果您有elisp源代码,当您执行M-x description函数时,帮助缓冲区有一个指向源代码位置的链接,我在这里找到了insert对的源代码。您可以尝试在包存储库中搜索您的发行版,以查看是否有Emacs elisp源代码包。@neal-是否可以使用(插入对参数?\$\$?\$\$)执行此操作。使用insert pair?@Neail-No来插入双美元符号,这段代码似乎无论如何都不起作用,但它确实起作用了,因为它意识到,so可能会添加到您的答案中,(defun jj/insert double double dollar dollar dollar dollar sign(&optional arg)(交互式“P”)(保存标记和偏移(insert pair arg?\$?\$?\$)(let((paren需要空格nil))(insert pair arg?\$?\$)(forward char))@neal-您的不适用于我,因为我认为insert pair只接受一个字符参数。不管怎样,我试着输入了不止一个字符,但我发现了错误。例如…“$$$”。我上面的工作适合你吗?
(global-set-key (kbd "M-$") 'insert-pair)