第一种情况:只删除单行

如有文件如下:

[fanzf@SWserver ~/tmp]$ cat names.tmp
101     Nate    H.
102     John    M.
104     Cassy   T.
106     Mary    L.
107     Isaac   C.

要将第一行和第二行合并,在命令行模式下可将光标移动到第一行,输入J(john,大写)即可;另外一种办法也是在命令行模式下,光标也移动到第一行,输入命令  :s//n//

运行效果如下

101     Nate    H.  102 John    M.
104     Cassy   T.
106     Mary    L.
107     Isaac   C.
~

第二种情况:删除所有换行符

在命令行模式下,光标也移动到第一行,输入命令  :%s//n//g

101     Nate    H.102   John    M.g104  Cassy   T.g106  Mary    L.g107  Isaac   C.g

在以上命令中,

s 是替换,

/ 是间隔符,

/n 是换行负,即要替换的原串,

/n后面的//,是要指替换成的串,在这里表示无

两条删除命令的区别在于前面有无 % ,  有%则在全文中替换

后面的g,是在整行中替换,由于每行最多只有一个换行,所以g在这里没实际意义

摘自: http://bbs.chinaunix.net/viewthread.php?tid=248620

在命令状态下,在某一行上按"J"键将Join下一行

J合并当前行和下一行
合并多行可以用.重复上一J命令或用nJ合并从当前行起的n行

为什么vi在文本的每行末尾都加上换行\n?
答案:因为文本每行末尾都应该加上换行。参考: http://stackoverflow.com/questions/729692/why-should-files-end-with-a-newline
根据2011年ISO发布的C语言标准C11(ISO/IEC 9899:2011)和C++标准C++11(ISO/IEC 14882:2011),每行末尾都应该换行。

Windows换行为\r\n,unix为\n,mac为\r。
vi:新建文件每行末尾都有\n。

二进制文件最后不需要换行,所以vi使用以下设置时文件末尾不会加上换行。
set binary
set noeol

但是不建议这样使用,因为set binary与set softtabstop冲突

vi如何显示\n:
set binary会把\r显示成ᶺM,而不显示\n。注:~/.vimrc中set binary有效,vi打开以后set binary无效。
set list会在每一行尾显示一个$,与\r或者\n都无关。

在vi中,如果要删除行尾的换行符,可以用如下方法第一种情况:只删除单行如有文件如下:[fanzf@SWserver ~/tmp]$ cat names.tmp 101     Nate    H.102     John    M.104     Cassy   T.106     Mary    L.107     Isaac   C.要将第一行和第二行合并, 输入命令:gitupdate-index--assume-unchanged$(gitls-files|tr'\n''') 此时再查看自己的.nuxt文件就不在localchange 中 了
无意 中 发现 vi m 会自动追加一个 \n 到文本行末尾。去论坛问了一下,找到了答案: *'endofline'* *'eol'* *'noendofline'* *'noeol'* 'endofline' 'eol' boolean (default on) local to buffer {not in Vi } When writing a file and this option is off and...
公司的 Mac OSX 虚拟机有两个珍贵的文件: .bash_profile 顾名思义,这是bash的配置文件,每次打开Terminal是都会调用。该配置文件里有相当多便捷的命令、快捷方式。. vi mrc 这是 VI M的配置文件,里面是我最喜欢的 VI M布局。 我把两个文件复制到家里的Mac Book Pro,没想到出错了: 原来,笔记本的 VI M无法识别. vi mrc里的某个字符:\r (回
vi m 中 是默认换行的,如果一行的内容超过窗口的长度时,会自动换到下一行,如果我们使用ctrl+v编辑时,这样显示会有一点影响我们的操作,这时,我们设置不换行会好一些。 操作跟:set number类似,使用:set nowrap 即可。 4. 如果要查找整个文件 中 的所有匹配项,可以使用命令“:%s/要查找的文字/替换的文字/g”。 5. 如果只想查找当前行 中 的匹配项,可以使用命令“:s/要查找的文字/替换的文字/”。 希望对你有帮助!