Emacs以所见即所得的方式插入换行符

最近碰到一个很小众的需求, 就是在Emacs中以所见即所得的方式给一个段落填充换行符, 查阅了Emacs自带的各种填充换行符的方式都找不到符合这个要求的. 我需要的是把在某个frame宽度下形成的auto wrap格局变成对应的hard wrap格局.

例如之前是这样

格式化之后的效果是

如果我们希望将这个很长的行黏贴到网页中, 但是又不希望被浏览器自动换行, 想要保持一个整齐和一致的外观, 就可以用这个格式.

如果Emacs和浏览器都使用等宽字体, 而且在网页中以pre标签的方式来显示的话, 就可以做到所见即所得.

下面是ELISP代码.

 
(defun insert-new-line-wysiwyg ()
  (interactive)
  (beginning-of-line)
  ; if condition is met we do the following two actions
  ; condition: the cursor pos less than the end of current line
  (let ((i 0))
    (while (< (+ i (point)) (line-end-position))
      (next-line)
      (newline-and-indent)
      (setq i (+ i 1))
    )
  )
)
 

将光标至于长行内部的任意位置, 然后M-x执行这个函数即可格式化.