4

我想做一些类似填充区域的事情,除了我想选择一个矩形区域并只将文本包装在其中,并让它保持在矩形范围内。有没有办法做到这一点?

4

1 回答 1

7

编辑:啊,我知道我以前遇到过这种能力。

中的矩形编辑功能cua提供了此功能。

所以首先启用cua-selection-mode. 这是 CUA 中的好东西,无需更改复制/剪切/粘贴键,因此您可能希望它永久启用:

(cua-selection-mode 1)

然后C-RET标记一个角,将点移动到对角,并C-q照常进行填充。C-RET再次退出矩形模式。

CUA 的矩形编辑非常棒。在 的评论中阅读它M-x find-library RET cua-base RET。查找“CUA 矩形支持”标题。

原答案:

(defun my-fill-rectangle (start end)
  "`fill-region' within the confines of a rectangle."
  (interactive "*r")
  (let* ((indent-tabs-mode nil)
         (content (delete-extract-rectangle start end)))
    (goto-char start)
    (insert-rectangle
     (with-temp-buffer
       (setq indent-tabs-mode nil
             fill-column (length (car content)))
       (insert-rectangle content)
       (fill-region (point-min) (point-max))
       (goto-char (point-max))
       (move-to-column fill-column t)
       (extract-rectangle (point-min) (point))))))
于 2012-06-13T06:51:56.443 回答