在VI中删除行尾的换行符

在vi中,如果要删除行尾的换行符,可以用如下方法

第一种情况:只删除单行

如有文件如下:

[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都无关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用c语言构建二叉树(重点)

结点创建 二叉树创建 我们以‘#’为NULL,我们要把输入进来的一个字符串转变为二叉树,所以我们要记住递归的每一步走到数组了哪个位置 所以我们要记住创建过程中用掉的前序个数,并返回,除此之外,还要加上当时的那个结点…

linux 同步IO: sync msync、fsync、fdatasync与 fflush

最近阅读leveldb源码,作为一个保证可靠性的kv数据库其数据与磁盘的交互可谓是极其关键,其中涉及到了不少内存和磁盘同步的操作和策略。为了加深理解,从网上整理了linux池畔同步IO相关的函数,这里做一个罗列和对比。大部分为copy&a…

二叉树的广度优先遍历(层序遍历)

先定义一个二叉树的结点 再创建二叉树,这里就不写了,之前的有创建二叉树的博客。 层序遍历 用到栈的思想, 1 先让根 节点进队列,2 然后读队顶元素,3 让他出队列4 打印它的值5 让队顶元素的左右子树进栈&#xff0…

用前序中序创建二叉树(用中序后序创建二叉树)

定义二叉树结点 比如就拿这个二叉树 前序中序创建 因为前序遍历的顺序是 根 , 左 ,右。 中序的遍历是 左 根 右。 我们会很不好想,但我们可以用前序和中序把上面那个二叉树的遍历一边 前序遍历:ABDEHCFG中序遍历:D…

Epoll详解及源码分析

文章来源:http://blog.csdn.net/chen19870707/article/details/42525887 Author:Echo Chen(陈斌) Email:chenb19870707gmail.com Blog:Blog.csdn.net/chen19870707 Date:Jan.7th, 2015 1…

非递归实现二叉树(前序,中序,后序)c/c++实现

这里还是用到栈的思想,为了方便用了c的一些内容,把出栈,进栈,读栈顶元素用一个个函数封装起来了,前面做了一些处理来使用这些函数。 前序非递归 思想:一直走左边,依次进栈。等左边为空的时候&…

Linux 中统计一个进程的线程数

如果你想看到 Linux 中每个进程的线程数,有以下几种方法可以做到这一点。 方法一: /proc proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数。 /proc 目录以可读文本文件形式输出,提供现有进程和系…

Linux_linux基础命令(增删查,权限,Linux下的重要目录,重要命令(. du, df, top, free, pstack, su, sudo).安装gcc/g++, gdb, vim )

r:表示可读w:表示可写x:表示可执行也可以用数字表示这一点我们会在修改文件权限说明。对于文件夹的rwx表示:r表示可读及可以查看文件夹内容可以ls查看w表示可写及可以向文件夹中传送内容如文件x表示可执行及可以向文件夹中可以cd进…

pthread_create会导致内存泄露

这几天一直在调试一个系统,系统的功能就是定时发送数据、接收数据然后解析收到的数据,转换成一定的格式存入数据库中。我为了并发操作,所以每接收到一个数据包,就调用pthread_create函数创建一个默认属性的线程进行处理。 系统…

Linux_linux常用工具之make/makefile详解

make/makefile make/makefile: 项目自动化构建工具 makefile:普通文本文件,记录了项目的构建流程规则。 make: 一个解释程序,到当前执行make命令的目录下寻找makefile文件,并且对makefile 中记录的项目构建规则进行解释执行。makefile: 编写…

Linux_linux常用工具(git,vim ,gcc ,gdb,权限)超详解

git :项目版本控制工具 项目克隆:git clone项目提交:git add(本地仓库提交) git commit -m “bak msg”(-m 备注信息)同步到服务器:git push origin master(提交到主分支&…

T20调试札记

最近在调试T20的内存,使用的指令在此记录一下 1. pmap指令查看指定进程中的内存分布。该指令需要在busybox中开启 pmap -x 111 2.应用与so需要执行strip操作,可以减小存储空间的大小 mips-linux-gnu-strip libsysutils.so 3.nm指令和file指令可以查…

samba 2.2.7a 编译

今天在君正T20上编译samba 2.2.7a 遇到了一些问题,特此记录一下 1.自己写一个build.sh脚本,方便后续的再次编译 #!/bin/sh # export CFLAGS"-O2 -muclibc" export CPPFLAGS"-O2 -muclibc" export CXXFLAGS"-O2 -muclibc&qu…

Linux_linux常用工具------进度条程序

缓冲区对文件读写的影响:数据并没有直接写入文件,而是写入到缓冲区(内存)中,等到缓冲区中数据写满或者刷新缓冲区的时候,才会将数据真正的写入文件 fflush(stdout)刷新。 回车与换行…

Ubuntu下QT的安装详细教程

本文转自:http://blog.chinaunix.net/uid-7945126-id-4987195.html 经测试完美解决 ------------------------------------------------------------- 最近需要在Ubuntu下开发桌面软件,想起了QT。书上介绍的方法太老了,网上找了一大堆安装方法…

Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)

vim自行查找资料, 自行配置插件. 借鉴别人的 " 显示相关 “”""""""""""""""""""""""""""""""""&…

ubuntu14.04下安装qt4.8.6 +qt creator

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://248341.blog.51cto.com/238341/1438867以前安装时没太注意,安装qt后发现在qt creator下无法输入中文,或者中文无法…

网络基础一(协议的概念,网络应用程序设计模式)

协议的概念 什么是协议? 从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。 假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK…

ubuntu修改root密码

sudo passwd root [sudo] password for you :---> 输入你的密码,不会显示 Enter new UNIX password: --- > 设置root 密码 Retype new UNIX password: --> 重复

linux 消息队列机制

现在我们来讨论第三种也是最后一种System V IPV工具:消息队列。在许多方面看来,消息队列类似于有名管道,但是却没有与打开与关闭管道的复杂关联。然而,使用消息队列并没有解决我们使用有名管道所遇到的问题,例如管道上…