1

我想对sort-lines整个文件运行命令。

C-xhM-xsort-linesEnter

sort-lines我需要在运行命令之前标记该区域。

如何跳过C-xh. 我可以%为命令提供一个参数(如在 vim 中)sort-lines吗?

4

2 回答 2

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))))
于 2012-06-03T09:40:56.713 回答
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 的经验相当少,我确信有待改进。

于 2012-06-03T08:08:42.107 回答