Delete newline in Vim
有没有办法删除Vim中一行末尾的换行符,以便下一行附加到当前行?
例如:
1 2 3  | Evaluator< T >(): _bestPos(){ }  | 
我想将这一切都放在一行而不复制行并将它们粘贴到前一行。 看起来我应该能够将光标放到每一行的末尾,按一个键,然后让下一行跳转到光标所在的同一行。
最终结果:
1  | Evaluator< T >(): _bestPos(){ }  | 
这可能在Vim?
如果你在第一行,按(大写)J将连接该行和下一行,删除换行符。您还可以将其与计数结合使用,因此按
当然。 Vim将 n字符识别为换行符,因此您只需搜索和替换即可。
在命令模式下输入:
1 2  | :%s/ /  | 
在正常模式的上线,点击Shift + j。
您也可以添加一个计数,因此顶行的
如果您不想要这种行为,
正如其他提到的答案,(大写)
但是为了摆脱最后一行中的尾随换行符,你需要在Vim中执行此操作:
1 2  | :set noendofline binary :w  | 
以下所有假设您的光标位于第一行:
使用普通映射:
3Shift + J
使用Ex命令:
1  | :,+2j  | 
这是。的缩写
1  | :.,.+2 join  | 
也可以通过以下快捷方式输入:
3:j
一个更短的Ex命令:
1  | :j3  | 
1  | set backspace=indent,eol,start  | 
在.vimrc中,您可以在插入模式下在
1  | set whichwrap+=<,>,h,l,[,]  | 
将允许您使用
1 2 3  | <CURSOR>Evaluator< T >(): _bestPos(){ }  | 
光标在第一行
现在,在NORMAL MODE中
1 2 3  | shift+v 2j shift+j  | 
要么
1  | V2jJ  | 
:正常的V2jJ
这可能取决于您的设置,但我通常使用
其中
问题是不可见的倍数char 0A( n)可能会累积。
想要从第100行清理到最后:
键入ESC和:(终端指挥官)
1 2  | :110,$s/^ //  | 
在vim脚本中:
1 2  | execute '110,$s/^ //'  | 
说明:从110到结束
搜索以新行开头的行(为空白)
并删除它们
如果你不介意使用其他shell工具,
1 2 3 4 5 6 7  | tr -d" " < file >t && mv -f t file sed -i.bak -e :a -e 'N;s/ //;ba' file awk '{printf"%s",$0 }' file >t && mv -f t file  | 
我只需要在要删除换行符的行上按A(附加到行尾,使您进入插入模式),然后按删除。