我想在整个文件上运行sort-lines
命令。
C-X ħ M-X 排序行 输入
我需要在运行sort-lines
命令之前标记该区域。
如何跳过 C-x h 。我可以在%
命令中提供参数(如vim中的sort-lines
)吗?
答案 0 :(得分:4)
这似乎是最简单的解决方案 - 如果没有区域处于活动状态,则将缓冲区的范围传递给sort-lines
:
(defun my-sort-lines (reverse begin end)
(interactive "P\nr")
(sort-lines reverse
(if (region-active-p) begin (point-min))
(if (region-active-p) end (point-max))))
答案 1 :(得分:2)
我不是专家,但我不相信sort-lines
可以接受行号作为参数。也就是说,编写一个函数来做这件事应该不难。这是我刚刚一起攻击的快速内容:
(defun my-sort-lines (start end)
(interactive "nStart: \nnEnd: ")
(save-excursion
(save-restriction
(goto-line start)
(mark)
(goto-line (1+ end))
(narrow-to-region (mark) (point))
(sort-lines nil (point-min) (point-max))
(widen))))
从我所做的有限数量的测试中,它似乎有效。鉴于我对emacs lisp的经验相当少,我确信还有一些改进。