我正在寻找一种快速投放< %%>的方法标记区域上的标记。 我正在使用rinari和rhtml模式。我想做这样的事情(我是在rhtml模式下):
我有一个ruby代码,例如
a.each do |e|
puts e
end
我正在选择区域选择它,放一些魔法键并且我有:
<% a.each do |e| %>
<%= puts e %>
<% end %>
我要求它应该聪明,例如,如果我选择混合了一些HTML标签的ruby代码,它应该应用&lt; %%&gt;只有ruby代码,其余的安然无恙。另外,如果我什么都不选,那么它应该放在&lt; %%&gt;只是在中间点,等待我的输入。我想知道像emacs函数或软件包那样存在吗?
我试图这样做,作为YAsnippet mod的片段,但它远非我喜欢它。
答案 0 :(得分:1)
如果您使用内置GNU Awk的操作系统,您可以使用这个简单的单行脚本:
(defun make-it-erb (begin end)
"Add <%=? %> for each string"
(interactive "r")
(shell-command-on-region begin end "gawk '/^[ \t]*(puts)|(print)/{ printf \"<%=\" $0 \"%>\"; next } // { printf \"<%\" $0 \"%>\" } '" nil ""))
(global-set-key [f7] 'make-it-erb)
您应该将其添加到.emacs文件中并评估上述功能。
答案 1 :(得分:0)
有一个很好的小实用程序,称为wrap region,您可能会发现它很有用。
P.S。在Emacs中使用嵌入式ruby代码通常是一个痛苦的屁股 - 我尝试过rhtml和mumamo,但没有发现它们特别精致。最后,我决定使用HAML和Slim - 更好的模板语言和强大的Emacs支持。