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

如何移除vim中特定列的回车?,vim,Vim,我在vim中有从pdf文件转换的文本 我遇到的问题是,段落内的每一行都以回车结尾,在段落之间没有空行来区分每一段的开头或结尾。因此,如果我把文本放在MicrosoftWord中,我就不能缩小文本并将段落环绕在它周围 如果段落之间有一条空行,这将很容易: %norm vipJ 但因为没有,所以我只考虑在最后一个字符是字母且列为65或更多时删除额外的回车。我知道如何查找和替换任何信件 但我的问题是,如果行中的最后一个字符位于第65列,我如何才能在vim中执行搜索和替换? 更新:到目前为止,我设法做

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

我遇到的问题是,段落内的每一行都以回车结尾,在段落之间没有空行来区分每一段的开头或结尾。因此,如果我把文本放在MicrosoftWord中,我就不能缩小文本并将段落环绕在它周围

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

%norm vipJ
但因为没有,所以我只考虑在最后一个字符是字母且列为65或更多时删除额外的回车。我知道如何查找和替换任何信件

但我的问题是,如果行中的最后一个字符位于第65列,我如何才能在vim中执行搜索和替换?

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

:%s/\%>65v\n//g

问题是,当正则表达式从段落顶部替换到最后一行时,该行已经“换行”,显然该列将超过65。我想我应该执行搜索并将regex替换为相反的形式,从文本的底部到开头。我该怎么做?

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


有关
%c
%v
的信息,请参见
:帮助。还要注意
\r
(CR)和
\n
(EOL)之间的区别。

好的,您可以在段落之间添加一行


%s/\%I刚刚更新了我的问题,我到目前为止尝试了什么,与您的答案类似。我现在真正需要做的是从下到上反向执行搜索,有什么想法吗?使用
tac>tempfile&&vim tempfile
并在那里工作怎么样?@sjas我认为应该有一种方法在vim中实现这一点。是否有任何东西可以区分段落?“\n”是换行符,不是回车。发布一个数据样本以及它应该转换成的所需格式可能不是一个坏主意。