我需要重新排序(反向)的div的长列表。
我需要对此进行转换(仅为了清晰起见才添加编号标题):
DOTALL
进入这个:
<div class="some-classes">
<h2>Title 3</h2>
<!-- other html contents but not divs -->
</div>
<div class="some-classes">
<h2>Title 2</h2>
<!-- other html contents but not divs -->
</div>
<div class="some-classes">
<h2>Title 1</h2>
<!-- other html contents but not divs -->
</div>
是否可以使用Emacs执行此操作?
答案 0 :(得分:1)
在Emacs中实现这一点肯定有多种方法。例如,您可以执行以下操作。 CAVEAT :您已确保不犯任何错误,即按照以下说明操作时不会出现拼写错误,否则您可能无法获得结果
div
&#39;的文档区域,然后键入 M-x narrow-to-region 这将使以下编辑更容易一些,并确保您不会意外更改您不想更改的部分文档。
<div class=...>
条目的 last 行的开头。确保没有标记任何区域。因此,您应该在迷你缓冲区中看到消息Defining kbd macro...
。
您现在应该在迷你缓冲区中看到I-search backward:
<div
,然后按 Enter 。当您键入该字符串时,point
应该已移至上一行 div
行的开头,即前一行<{em>}之上的行。div
。当您标记包含它的区域时,倒数第二个div
的整个主体应该突出显示。 (这个区域的自动标记是我们上面第4步的原因。)
div
部分。point
div
现在应该回到div
的开头,这是我们开始时缓冲区中的最后一个Keyboard marco defined
。
最后一步应该在迷你缓冲区中给你一条消息div
。现在来了魔术:
Emacs将自动为您重复步骤4-10,将另一个$PWD/constant/gmtDicts
部分移动到缓冲区的末尾。
最后,获取文件的其余内容以进行编辑:
答案 1 :(得分:0)
甲。手动(如果您要排序许多此类元素,则会很慢):
private
def user_params
params.require(:user).permit(:name, :avatar)
end
M-x nxml-mode RET
M-x set-variable nxml-sexp-element-flag t RET
M-<
C-M-t
C-M-t
C-M-t
C-M-b
C-M-b
C-M-b
{{1} }
或
C-M-t
C-M-t
M-<
C-M-f
C-M-t
C-M-t
C-M-b
或
C-M-b
C-M-t
M-<
C-M-f
C-2
C-M-t
C-2
或
C-M-b
C-M-t
M-<
C-M-k
C-M-f
C-M-t
或
RET
C-y
M->
C-M-<backspace>
C-M-b
C-M-b
C-M-t
C-M-b
或
C-M-b
C-y
M-<
C-M-f
C-M-k
C-M-t
C-M-b
或
C-y
RET
M-<
C-M-f
C-M-t
C-M-k
C-M-b
C-M-b
等
步骤2允许sexp命令将完整元素视为sexp(否则,它仅将标记(例如C-y
或RET
)视为sexp)。
<div class="some-classes">
和</div>
移动性别(在这种情况下为元素)。
C-M-f
转换点之前和之后的元素。
C-M-b
杀死下一个元素。 C-M-t
会杀死上一个元素。
B中。执行此操作的命令:C-M-k
:
C-M-<backspace>
请参阅Elisp手册,节点Sorting。