是否有一种方法可以在Vim中删除一行末尾的换行符,以便下一行被追加到当前行?
例如:
Evaluator<T>():
_bestPos(){
}
我想把这些都放在一行上,而不是复制和粘贴到前面的一行中。似乎我应该能够将光标放到每行的末尾,按下一个键,然后让下一行跳转到光标所在的同一行上。
最终结果:
Evaluator<T>(): _bestPos(){ }
这在Vim中可行吗?
是否有一种方法可以在Vim中删除一行末尾的换行符,以便下一行被追加到当前行?
例如:
Evaluator<T>():
_bestPos(){
}
我想把这些都放在一行上,而不是复制和粘贴到前面的一行中。似乎我应该能够将光标放到每行的末尾,按下一个键,然后让下一行跳转到光标所在的同一行上。
最终结果:
Evaluator<T>(): _bestPos(){ }
这在Vim中可行吗?
当前回答
在正常模式下的上一行,按Shift+j。
您还可以预先添加一个计数,因此顶部一行的3J将把所有这些行连接在一起。
其他回答
在正常模式下的上一行,按Shift+j。
您还可以预先添加一个计数,因此顶部一行的3J将把所有这些行连接在一起。
当然可以。Vim将\n字符识别为换行符,因此只需搜索和替换即可。 命令模式类型:
:%s/\n/
正如其他答案所提到的,(大写)J和搜索+替换\n通常可用于剥离换行符和连接行。
但是为了去掉最后一行末尾的换行符,你需要在Vim中这样做:
:set noendofline binary
:w
<CURSOR>Evaluator<T>():
_bestPos(){
}
第一行光标
现在,在正常模式做
shift+v
2j
shift+j
or
V2jJ
:正常V2jJ
如果你只是想快速连接文本文件中的所有行,对TinkerTank的解决方案有一个非常微小的改进,就是在你的.vimrc中有这样的东西:
nnoremap <leader>j :%s/\n/\ /g<CR>
这将全局地用空格替换换行符,这意味着您不会将一行的最后一个单词连接到下一行的第一个单词。这非常适合我的典型用例。
如果你想保持有意的段落间隔,V):join可能是最简单的解决方案。