是否有一种方法可以在Vim中删除一行末尾的换行符,以便下一行被追加到当前行?
例如:
Evaluator<T>():
_bestPos(){
}
我想把这些都放在一行上,而不是复制和粘贴到前面的一行中。似乎我应该能够将光标放到每行的末尾,按下一个键,然后让下一行跳转到光标所在的同一行上。
最终结果:
Evaluator<T>(): _bestPos(){ }
这在Vim中可行吗?
是否有一种方法可以在Vim中删除一行末尾的换行符,以便下一行被追加到当前行?
例如:
Evaluator<T>():
_bestPos(){
}
我想把这些都放在一行上,而不是复制和粘贴到前面的一行中。似乎我应该能够将光标放到每行的末尾,按下一个键,然后让下一行跳转到光标所在的同一行上。
最终结果:
Evaluator<T>(): _bestPos(){ }
这在Vim中可行吗?
当前回答
正如其他答案所提到的,(大写)J和搜索+替换\n通常可用于剥离换行符和连接行。
但是为了去掉最后一行末尾的换行符,你需要在Vim中这样做:
:set noendofline binary
:w
其他回答
正如其他答案所提到的,(大写)J和搜索+替换\n通常可用于剥离换行符和连接行。
但是为了去掉最后一行末尾的换行符,你需要在Vim中这样做:
:set noendofline binary
:w
<CURSOR>Evaluator<T>():
_bestPos(){
}
第一行光标
现在,在正常模式做
shift+v
2j
shift+j
or
V2jJ
:正常V2jJ
J删除额外的前导空格(如果有的话),用一个空格连接行。(有些例外:在/[.!?$/,可以插入两个空格;在/^\s*)/之前,不插入空格。)
如果您不想要这种行为,gJ只需删除换行符,并且根本不使用空格进行任何巧妙的处理。
如果您不介意使用其他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行合并在一起。