dgg*_*dst 15 vim carriage-return newlines
假设您在 vim 中输入了一个自动换行的长文档,所以所有的行都被换行了,比如 79 个字符。您甚至可能已将格式应用于整个文档以按该长度断开所有行。
段落在文档中由空行分隔。
现在您决定根本不希望在段落内换行。
如何在不完全消除段落边界的情况下删除段落中的所有换行符?
我已经做了这个快速而愚蠢的黑客攻击,但我正在寻找正确的方法。
:%s/^\s*$/@@@@@ - replace blank lines with @@@@@
ggVGgJ - join all lines in the file
:%s/@@@@@/\r\r/g - replace @@@@@ with line breaks
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 12
我认为这可以满足您的要求:确保文件末尾有一个空行,然后加入每个段落(以空行结尾)。
G:a
.
:g/^./ .,/^$/-1 join
Run Code Online (Sandbox Code Playgroud)
说明:首先转到文件末尾并附加一个额外的空行:a
(也许有更优雅的方法来做到这一点;交互地,您可以用 替换前三行o<ESC>
)。然后,对于尚未考虑的每个非空行 ( :g/^./
),将join
命令应用于从所选行 ( .
) 开始到下一个空行 ( /^$/-1
)之前的一行结束的范围。
或者,:g/^$/d
如果您不希望保留任何空行(那么您可以去掉-1
)。
gar*_*ohn 12
这应该这样做:
:set tw=99999
gggqG
Run Code Online (Sandbox Code Playgroud)
tw
设置为至少与最长段落中的字符数一样大的某个值。gg
将光标移动到第一行;gq
是重新格式化的命令;G
将光标移动到最后一行,告诉gq
从当前光标位置重新格式化到最后一行。
归档时间: |
|
查看次数: |
6149 次 |
最近记录: |