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

时间:2014-07-28 19:39:37

标签: vim

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

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

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

%norm vipJ

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

但我的问题是,如果行上的最后一个字符位于列> 65

,我将如何执行搜索并在vim中替换

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

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

问题在于,当正则表达式从段落顶部替换到最后一行时,该行已经被包裹了#39;显然该列将超过65.我弄清楚我应该执行搜索并将反向替换正则表达式,从文本的底部到开头。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

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

:help%c%v。另请注意\r(CR)和\n(EOL)之间的差异。

答案 1 :(得分:1)

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

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

PS。 \ n和\ r之间的转换让我感到困惑,但显然它是正确的.... Why is \r a newline for Vim?