既然我知道如何在 Emacs 中右对齐数值列,那么这个解决方案有两个问题:
- 很难记住
- 它不灵活
例如,当第一列中的某些值包含数字时,它不起作用。
不幸的是,它插入了标签。
现在我经常使用矩形函数 ( C-xrk)。这让我想到:是否有可能拥有一个右对齐所选矩形中所有文本的功能?
既然我知道如何在 Emacs 中右对齐数值列,那么这个解决方案有两个问题:
例如,当第一列中的某些值包含数字时,它不起作用。
不幸的是,它插入了标签。
现在我经常使用矩形函数 ( C-xrk)。这让我想到:是否有可能拥有一个右对齐所选矩形中所有文本的功能?
(defun right-justify-rectangle (start end)
(interactive "r")
(apply-on-rectangle (lambda (c0 c1)
(move-to-column c1 t)
(let ((start (- (point) (- c1 c0)))
(end (point)))
(when (re-search-backward "\\S-" start t)
(transpose-regions start (match-end 0)
(match-end 0) end))))
start end))
为避免Tab,自定义变量indent-tabs-mode
。
这是一个处理indent-tabs-mode
更合理的版本:
(defun right-justify-rectangle (start end)
(interactive "r")
(let ((indent-tabs-mode nil))
(apply-on-rectangle (lambda (c0 c1)
(move-to-column c1 t)
(let ((start (- (point) (- c1 c0)))
(end (point)))
(when (re-search-backward "\\S-" start t)
(transpose-regions start (match-end 0)
(match-end 0) end))))
start end))
(when indent-tabs-mode (tabify start end)))