我想对sort-lines
整个文件运行命令。
C-xhM-xsort-linesEnter
sort-lines
我需要在运行命令之前标记该区域。
如何跳过C-xh. 我可以%
为命令提供一个参数(如在 vim 中)sort-lines
吗?
我想对sort-lines
整个文件运行命令。
C-xhM-xsort-linesEnter
sort-lines
我需要在运行命令之前标记该区域。
如何跳过C-xh. 我可以%
为命令提供一个参数(如在 vim 中)sort-lines
吗?
这似乎是最简单的解决方案——如果没有区域处于活动状态,则将缓冲区的范围传递给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))))
我不是专家,但我不相信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 的经验相当少,我确信有待改进。