如何删除vim中特定列的回车?


How to remove carriage return at specific column in vim?

我在vim中有文本,我从pdf文件转换。

我得到的问题是段落中的每一行都以回车结束,而段落之间没有空行来区分每段的开头或结尾。因此,如果我将文本放在Microsoft Word中,我就无法使文本变小并将段落包裹起来。

如果段落之间有一个空行,那将很容易:

1
%norm vipJ

但是因为没有,我只想在最后一个字符是一个字母并且列是65或更多时删除额外的运输。我知道如何搜索和替换任何字母,

但我的问题是,如果行上的最后一个字符在列> 65上,我怎么能在vim中执行搜索和替换?

更新:到目前为止,我设法做到:

1
2
:%s/\%>65v
//g

问题是,当正则表达式从段落顶部替换到最后一行时,该行已经"换行",显然该列将超过65.我想出来我应该执行搜索并将正则表达式反向替换,从文本的底部到开头。我怎样才能做到这一点?


好吧,你可以在段落之间添加一行。

%s/\%<65c / /g为任何短于65个字符的行添加换行符。

PS。 n和 r之间的切换让我感到困惑,但显然它是正确的....
为什么 r n是Vim的换行符?


/\%>65c
匹配第65个字节字符后的所有回车符。

有关%c%v,请参阅:help。 另请注意
(CR)和
(EOL)之间的差异。