der*_*ann 257 unix vi vim ssh shell
有没有办法删除Vim中一行末尾的换行符,以便下一行附加到当前行?
例如:
Evaluator<T>():
_bestPos(){
}
Run Code Online (Sandbox Code Playgroud)
我想将这一切都放在一行而不复制行并将它们粘贴到前一行.看起来我应该能够将光标放到每一行的末尾,按一个键,然后让下一行跳转到光标所在的同一行.
最终结果:
Evaluator<T>(): _bestPos(){ }
Run Code Online (Sandbox Code Playgroud)
这可能在Vim?
Xha*_*tar 562
如果您在第一行,按(大写)J将连接该行和下一行,删除换行符.您还可以将其与计数结合使用,因此按下3J将所有3条线组合在一起.
Tin*_*ank 77
当然.Vim将\n字符识别为换行符,因此您只需搜索和替换即可.在命令模式下输入:
:%s/\n/
Run Code Online (Sandbox Code Playgroud)
eph*_*ent 32
J删除额外的前导间距(如果有),使用单个空格连接线.(除了一些例外:之后/[.!?]$/,可以插入两个空格;之前/^\s*)/,不插入空格.)
如果您不想要这种行为,gJ只需删除换行符,并且根本不用空格做任何事情.
Nes*_*dyd 26
正如其他提到的答案,(大写)J和搜索+替换\n可以使用一般剥离换行符和连接行.
但是为了摆脱最后一行中的尾随换行符,你需要在Vim中执行此操作:
:set noendofline binary
:w
Run Code Online (Sandbox Code Playgroud)
kzh*_*kzh 10
以下所有假设您的光标位于第一行:
使用普通映射:
3Shift+J
使用Ex命令:
:,+2j
Run Code Online (Sandbox Code Playgroud)
这是.的缩写
:.,.+2 join
Run Code Online (Sandbox Code Playgroud)
也可以通过以下快捷方式输入:
3:j
一个更短的Ex命令:
:j3
Run Code Online (Sandbox Code Playgroud)
set backspace=indent,eol,start
Run Code Online (Sandbox Code Playgroud)
在您的.vimrc文件中,您可以在插入模式下使用backspaceand deleteon \n(换行符)。
set whichwrap+=<,>,h,l,[,]
Run Code Online (Sandbox Code Playgroud)
将允许您使用X(在第1列中)在正常模式下删除以前的LF 。