vim的全局替换[zz]&把字符替换成回车

本文出自   http://blog.csdn.net/shuangde800

本文是在学习《使用vi编辑器, Lamb & Robbins编著》时在所记的笔记。

本文内容:

基本全局替换

确认替换

上下文相关替换

本文约定:

$ + 命令 表示在普通的bash的命令行下

:  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入

------------------------------------------------------------------------------------------------


替换命令的基本语法

在全局替换中,ex编辑器使用指定的字符模式对文件中的每行进行检查。在所有行中发现模式的位置,ex使用新字符串来替换模式。

全局替换真正使用的是两个ex命令是 :g(global全局)和:s(switch替换)。

替换命令的语法如下:

:s / old / new /  

这将把当前中模式old的第一次出现修改为new。  /(斜杆)是命令不同部分之间的分隔符(当斜杆为该行的最后一个字符时,可不写)

下面这种形式的替换命令:

:s / old / new / g

把当前行old的每次出现改为new,而不只是该行的第一个old。:s命令允许替换串后面带有选项,上面语法中的g代表全局(g选项影响一行中的每个模式,不要把它与影响文件中所有行的:g命令混淆)

通过在:s命令前加上地址前缀,可以把它的范围扩展到多行。例如下面命令把50行到100行的old的每次出现都改为new:

:50, 100 s / old / new / g

下面的命令把整个文件中的old的每次出现都改为new:

:1, $s / old / new / g

我们知道%等价于1,$,所以上行命令也可以这样写:

:% s / old / new / g


确认替换

使用搜索替换命令有时候会出错,而得到不想要的结果。所以小心并确认文件中需要修改的内容是一个明智的做法

在替换命令尾部加上c (confirm用于确认),在替换每个old前都会提示并确认:

:1, 30 s /old/new/ gc

将会出现提示replace with hehe (y/n/a/q/l/^E/^Y)?

y替换,n不替换,a替换所有,q放弃,l替换第一个并进入插入模式,^E和^Y是提示你用Ctrl+e或Ctrl+y来滚动屏幕的。


上下文相关替换

除了直接使用一个单词(或短语)替换另一个,还有稍微复杂的全局替换语法。这些语法可以对一个模式进行搜索,一旦找到含有模式的行,就可以使用不同与模式的串进行替换,我们把这种替换叫做上下文相关替换。

语法格式如下:

:g /pattern/s/old/new/g    将会把包含pattern的行中,把所有old替换为new

第一个g表示是在文件的所有行上执行的命令,模式pattern识别要发生替换的行。在那些包含模式pattern的行上,ex将把old替换(s)为new。最后的g表示在该行上进行全部替换。

如果用来进行搜索的模式与想要修改的模式相同,那么就不必重复它:

:g/string/s//new/g  等价于  :g/string/s/string/new/g

还要注意:

:g/string/s//new/g  也等价于 :% s/string/new/g

可以用第二种方式少输一些字符

回车在vim的输入方法是ctrl+V,会得到^,此时再按回车.会得到^M这个就是回车了

因此把全文件所有str换成str回车的语句是:

: 1,$ s/str/str^M/g

^M用上面的方法输入

1,$表示从1到最后一行,s是switch,g是global

时间: 2024-10-06 14:00:41

vim的全局替换[zz]&把字符替换成回车的相关文章

vim的全局替换

来自  本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记. 本文内容: 基本全局替换 确认替换 上下文相关替换 本文约定: $ + 命令 表示在普通的bash的命令行下 :  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入 ----------------------------------------------------------------------------------

在VIM中进行快速的查找和替换

VIM是被誉为非常高效的文本编辑软件.但是掌握并高效的使用是件有难度的事情.在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法.下面是我在阅读VIM用户手册时整理的一些资料: 行内搜索. f命令可以进行行内搜索.输入fx可以找到下一个x字符. F命令可以在反方向进行行内搜索,输入Fx可以找到上一个x字符. t命令同样是进行行内搜索,但是光标停留在符合条件的字符的前面.输入tx使光标停留在下一个x字符的前面. T命令可以在反方向进行行内搜索,但是光标停留在符合条件的字符的下一个字符上.输

Vim高手,从来不用鼠标2——替换、撤销、缩进、查找

本文章原创首发于公众号:编程三分钟 vim 替换.撤销.缩进.查找 上一次我们掌握了移动.跳转.定位.操作(删除.复制.粘贴),基本使用vim脱离鼠标完全是可以做到的了.速记如下: 移动: h,l,j,k,w,b 跳转:G nG f/F+字母 定位:G代表尽头, $代表行尾,^代表行首,w代表下一个单词,b上一个单词,e当前单词末尾 操作:y d p 知识点 字符替换 缩进与调整文本位置(居左.居中.居右) 字符查找 字符的替换及撤销 查找和替换是编辑器中最常用的功能之一,在普通编辑器当中查找替

字符替换

题目描述 把一个字符串中特定的字符用给定的字符替换,得到一个新的字符串. 输入要求 输入有多行,第一行是要处理的字符串的数目n.其余个行每行由三个字符串组成,第一个字符串是待替换的字符串(不含空格),字符串长度小于等于30个字符;第二个字符串是一个字符,为被替换字符;第三个字符串是一个字符,为替换后的字符. 输出要求 有多行,每行输出对应的替换后的字符串. 假如输入 1 hello-how-are-you o O 应当输出 hellO-hOw-are-yOu 1 #include<stdio.h

字符替换问题

问题描述:输入两个字符串str1和p,将str1中的某个字符替换为字符串p. 分析:这个问题其实就是编程语言里的字符替换库函数,我们需要自己去实现,需要找出一种高效的办法,对于这道题存在两种解法. 解法一:从头开始扫描字符串str1,每次遇到空格后,插入字符串P,再插入字符串P之前,需要先将空格后面的字符往后挪位,然后在将P插入即可. 此方法很直观,也很容易想到,但是时间复杂度却达到了O(n^2),效率很低. 解法二:从尾到头扫描,刚看到这里读者会以为是一样的,只不过是从后面开始而已,其实不然,

[2012山东ACM省赛] n a^o7 !(模拟,字符替换)

n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my inst

SAS: 字符替换

substr(s,p,n) 以字符位置命令 功能:SAS字符的替换与提取. 语法: 1. 提取:new=substr(old,p,n) 从变量old的第p个字符开始提取n个长度的字符,命名为变量new. 如:new=substr(old,2,3);old="abcdefg";new="bcd"; 2. 替换:substr(old,p,n)="XXX" 将变量old的第P个字符开始替换n个字符,替换内容为“XXX”. 如:old="abc

开源THxG 2.0 多字符替换修改软件

前段时间在编辑文章时,需要在文章中替换多个字符,于是业余时间写了这个软件~! 软件使用易语言编写的,360可能会有一些提示..你懂的.有空你自己优化一下. @软件发烧友 扩展开的样子: 软件编写没什么技术含量,只是工作用到了就顺便写了这个软件. 软件成品下载:链接: http://pan.baidu.com/s/1kTFv04f 密码: xjiu 源码地址:链接: http://pan.baidu.com/s/1bn4MyF9 密码: g3rs

C#隐私字符替换

class Program { static void Main(string[] args) { string str = ReplaceWithSpecialChar("221282188801019662", 4, 4); Console.WriteLine(str); Console.ReadKey(); } /// <summary> /// 将传入的字符串中间部分字符替换成特殊字符 /// </summary> /// <param name=