是否有一种方法可以在Vim中删除一行末尾的换行符,以便下一行被追加到当前行?

例如:

Evaluator<T>():
    _bestPos(){
}

我想把这些都放在一行上,而不是复制和粘贴到前面的一行中。似乎我应该能够将光标放到每行的末尾,按下一个键,然后让下一行跳转到光标所在的同一行上。

最终结果:

Evaluator<T>(): _bestPos(){ }

这在Vim中可行吗?


当前回答

如果您不介意使用其他shell工具,

tr -d "\n" < file >t && mv -f t file

sed -i.bak -e :a -e 'N;s/\n//;ba' file

awk '{printf "%s",$0 }' file >t && mv -f t file

其他回答

如果你在第一行,按下(大写)J将把这一行和下一行连接在一起,删除换行符。你也可以把它和计数结合起来,所以按3J会把这3行合并在一起。

<CURSOR>Evaluator<T>():
    _bestPos(){
}

第一行光标

现在,在正常模式做

shift+v
2j
shift+j

or

V2jJ

:正常V2jJ

下面所有的操作都假设你的光标在第一行上:

使用正规映射:

3班+J

使用Ex命令:

:,+2j

是?的缩写

:.,.+2 join

也可以通过以下快捷方式进入:

3:j

一个更短的Ex命令:

:j3

在正常模式下的上一行,按Shift+j。

您还可以预先添加一个计数,因此顶部一行的3J将把所有这些行连接在一起。

当然可以。Vim将\n字符识别为换行符,因此只需搜索和替换即可。 命令模式类型:

:%s/\n/