VIM 替换 \n 换行符

vim字符串替换命令substitute是Vim常用命令之一(简写s)。

通过指定将被替换的源字符串以及目标字符串,以及替换操作的执行范围等信息,可以指示Vim在特定范围进行字符串匹配和替换操作。

下面我们介绍vim把字符串替换成换行符的命令

在某些场景下,需要将当前文件中的某些语句进行换行显示,以达到对文件排版等目的。

例如我们希望将如下的文本内容进行逐句按行显示:

Vim教程网(https://vimjc.com)是由一个小女生苦苦支撑和维护的Vim相关网站。虽然一直没什么人气,但是她仍然坚持更新了6年的博文。目前已经写了100+篇vim命令和技巧相关的文章。希望能给有需要的同学提供一点点帮助。

如果您是一个Vim入门者,您最先想到的命令可能是在Vim命令行模式下执行替换命令::%s/。/。\n/g。不过很遗憾,这条命令并不会如你所愿,并不能将当前文件中的所有“。”替换成换行的效果。

这里主要涉及到Vim下的换行符以及Vim替换命令。

首先,Vim替换命令substitute的语法格式为::[range]s/源字符串/目标字符串/[option];其次,换行符在替换命令的 源字符串 和 目标串 分别具有不同的含义。

替换命令的 源字符串 部分,用于指定搜索目标,要在替换命令的源字符串部分匹配行尾,需要使用 \n;

替换命令的 目标字符串 部分,用于指定要替换出的目标,如果要通过替换命令插入新行,需要使用 \r。

因此,对于本文举例的文本使用以下Vim命令 

:%s/。/。\r/g 

可对其实现逐句按行显示的效果,如下所示。

Vim教程网(https://vimjc.com)是由一个女生苦苦支撑和维护的Vim相关网站。

虽然一直没什么人气,但是她仍然坚持更新了6年的博文。

目前已经写了100+篇Vim命令和技巧相关的文章。

希望能给有需要的同学提供一点点帮助。

反之,如果需要将上面逐句按行显示的文本转换成本文开头描述的文本,可以使用下面的Vim命令

:%s/。\n/。/g。

vim替换新行

一句话总结上述内容就是:对于Vim替换命令s来说,如果要vim替换掉换行符,需使用 \n 作为搜索串;如果要vim替换字符串生成新行,请使用 \r 作为目标串。

vim删除换行

可以用以下命令删除换行符:

:%s/\n//g

可以用以下命令删除DOS文件中的回车符“^M”:

:%s/\r//g

可以用以下命令转换DOS回车符“^M”为真正的换行符:

:%s/\r/\r/g

可以用以下命令删除行尾的空格以及DOS回车符。它没有使用“/”字符作为替换命令各个参数间的分隔符,而是使用了“#”字符。命令还使用了“\?”正则表达式,用来匹配它前面出现的字符0次或1次。

:%s#\s*\r\?$##

可以用以下命令删除三行空行:

:%s/^\n\{3}//

可以用以下命令将连续的两个空行替换成一个空行:

:%s/\n\n/\r/g

vim删除空行

:g/^s*$/d

简单解释一下:

g :全区命令

/ :分隔符

^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。连起来就是匹配只有空字符的行,也就是空行。

/d :删除该行

vim删除行尾空格:

:%s= *$==

该命令全局查找文本文件的行尾空格并删除。

解释:

%s全局查找替换

=为%s命令的分隔符,如果把=换为/,则该命令可以写为:%s/ *$//

” *$”, $表示行尾,*匹配前面0个到n个字符,*前面是空格,因此此正则表达式匹配行尾的0个到n个字符。

==,分隔符没有中间没有内容,表示删除匹配空格, 在这里表示删除行尾空格。

vim换行方式

在早期的打印机时代,开始新的一行要占用两个字符的时间。如果到了一行的结尾处,你要快速回到新的一行的开头,需要打印针头在纸面上飞快地掠过,常常会在纸面上留下污点。解决这个问题的办法就是,用两个字符:一个字符<Return>来移到第一列,另一个字符<Line feed>来新增一行。计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的意见。UNIX人认为在到达一行的结尾时新增一行<Line feed> (LF),而Mac人则认同<Return> (CR)的解决办法,MS则坚持古老的<Return><Line feed> (CRLF)的方法。这就意味着如果你将一个文件从一个系统转移到另一个系统,就面临着回车换行的问题。而Vim编辑器则会自动的认出这种文件格式方面的区别,并做出相应处理。



作者:i林筱程
链接:https://www.jianshu.com/p/e2f4618e9abd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

<think>在Vim中,换行操作有多种方式,具体取决于使用场景(插入模式、命令模式等)。以下是主要方法:</think>在 Vim 编辑器中,实现换行操作有以下几种常用命令: ### 1. 插入模式换行(最常用) | 命令 | 功能描述 | |------------------|----------------------------------| | `i` → `Enter` | 在光标前插入新行 | | `a` → `Enter` | 在光标后插入新行 | | `o` | 在当前行下方插入新行并进入插入模式 | | `O` (大写字母o) | 在当前行上方插入新行并进入插入模式 | ### 2. 命令模式换行 | 命令 | 功能描述 | |----------------|-----------------------------| | `:s/$/\r/` | 在当前行末尾添加换行 | | `:%s/$/\r/g` | 在所有行末尾添加换行 | | `:set wrap` | 启用自动换行显示(不修改文件)| | `:set textwidth=80` → `gq` | 按80字符宽度自动重排换行 | ### 3. 可视模式换行 ```vim 1. 按 V 进入行选择模式 2. 选择多行 3. 按 J 合并所选行(删除换行符) 4. 按 gJ 合并但不保留空格 ``` ### 4. 特殊换行场景 - **长行拆分**:在插入模式直接输入内容,Vim 会自动换行(需设置 `:set wrap`) - **代码块换行**:在 `{` 后按 `Enter` 会自动缩进并添加新行 - **替换换行符**:`:s/\n//g`(删除所有换行符)或 `:s/,/\r/g`(将逗号替换为换行) ### ⚠️ 注意事项 1. Windows/Linux 换行符差异:Windows 用 `\r\n`,Linux 用 `\n` 2. 查看换行符:`:set ff?` 3. 转换换行符:`:set ff=unix`(转Linux格式)或 `:set ff=dos`(转Windows格式)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值