关于vim中搜索替换的换行问题『小经验自我记录贴』

Vim、Emacs配置和使用
回复
头像
kaji331
帖子: 565
注册时间: 2009-04-27 6:33

关于vim中搜索替换的换行问题『小经验自我记录贴』

#1

帖子 kaji331 » 2011-06-19 18:26

因为是用vim的搜索替换可以完成很多重复工作,所以一直在学习,上次知道了匹配任意字符

搜索中用

代码: 全选

\(.*\)
替换中用

代码: 全选

\1 \2
对应替换前面的标记


这次学会了搜索替换中遇到换行符的情况,一开始以为直接用\n就可以了,C语言的思维啊,没想到替换里面有问题,听依云高手说225补丁修好了这个问题,不过我都用10.04系统的vim,最多弄点vimrc和gvimrc就完了。解决方法最后总结

搜索部分换行符用\n或者\_s,推荐第二个
此外还可以使用

代码: 全选

\_s\+
来同时匹配下一行开头的任意多个空格(也就是匹配缩进)

替换部分高手说换行符用\r,我没有试验
网上好不容易搜索出来的是使用^M标记表示换行符

vim中

代码: 全选

ctrl + v, enter
gvim中

代码: 全选

ctrl + q, enter
目前还不懂这种ctrl组合键在vim中属于什么东东,vim给我的印象不是一贯爱用一个键完成工作的么~\r和^M有什么不同呢?

替换里面怎么匹配任意空格呢?这也还是问题!

有空继续学习……感谢高手相助:)
知道base64解密的女生请看

5oiR5Zyo5p2t5bee5rWZ5aSn57Sr6YeR5riv6K+75Lmm77yM5aaC5p6c5L2g5a+C5a+e5oOz6KaB54Ku5Y+L77yM6K+357uZ5oiR55WZIOiogOWQp++8mu+8iQo=
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#2

帖子 lilydjwg » 2011-06-19 19:59

\r 和 ^M 是一样的,前者是转义写法,后者是不可打印字符的表示法。

打了最新的补丁后,替换部分也可以用 \n 了。
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#3

帖子 自由建客 » 2011-06-19 20:37

lilydjwg, 什么补丁?一直比较郁闷非要用 \r
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#4

帖子 lilydjwg » 2011-06-19 21:27

自由建客 写了:lilydjwg, 什么补丁?一直比较郁闷非要用 \r
官方的啊,你都打上就是了。
头像
kaji331
帖子: 565
注册时间: 2009-04-27 6:33

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#5

帖子 kaji331 » 2011-06-20 21:37

lilydjwg 写了:\r 和 ^M 是一样的,前者是转义写法,后者是不可打印字符的表示法。

打了最新的补丁后,替换部分也可以用 \n 了。
多谢啦~\_s\+在替换部分也不能用是不是也有补丁啦?
知道base64解密的女生请看

5oiR5Zyo5p2t5bee5rWZ5aSn57Sr6YeR5riv6K+75Lmm77yM5aaC5p6c5L2g5a+C5a+e5oOz6KaB54Ku5Y+L77yM6K+357uZ5oiR55WZIOiogOWQp++8mu+8iQo=
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#6

帖子 fanhe » 2011-06-20 21:59

我只对楼主的头像有兴趣
有种子吗
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#7

帖子 lilydjwg » 2011-06-20 22:54

kaji331 写了:
lilydjwg 写了:\r 和 ^M 是一样的,前者是转义写法,后者是不可打印字符的表示法。

打了最新的补丁后,替换部分也可以用 \n 了。
多谢啦~\_s\+在替换部分也不能用是不是也有补丁啦?
~\_s\+在替换部分怎么用/有什么用?
头像
kaji331
帖子: 565
注册时间: 2009-04-27 6:33

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#8

帖子 kaji331 » 2011-06-21 17:00

fanhe 写了:我只对楼主的头像有兴趣
有种子吗
我都找不到原图了,呵呵~硬盘大系统多也有坏处:)
知道base64解密的女生请看

5oiR5Zyo5p2t5bee5rWZ5aSn57Sr6YeR5riv6K+75Lmm77yM5aaC5p6c5L2g5a+C5a+e5oOz6KaB54Ku5Y+L77yM6K+357uZ5oiR55WZIOiogOWQp++8mu+8iQo=
头像
kaji331
帖子: 565
注册时间: 2009-04-27 6:33

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#9

帖子 kaji331 » 2011-06-21 17:02

lilydjwg 写了:
kaji331 写了:
lilydjwg 写了:\r 和 ^M 是一样的,前者是转义写法,后者是不可打印字符的表示法。

打了最新的补丁后,替换部分也可以用 \n 了。
多谢啦~\_s\+在替换部分也不能用是不是也有补丁啦?
~\_s\+在替换部分怎么用/有什么用?
我就是想替换中保留空格,比如一行前有缩进,替换时保留缩进的空格或者制表符,但是替换后面的部分内容
知道base64解密的女生请看

5oiR5Zyo5p2t5bee5rWZ5aSn57Sr6YeR5riv6K+75Lmm77yM5aaC5p6c5L2g5a+C5a+e5oOz6KaB54Ku5Y+L77yM6K+357uZ5oiR55WZIOiogOWQp++8mu+8iQo=
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#10

帖子 lilydjwg » 2011-06-21 17:35

kaji331 写了: 我就是想替换中保留空格,比如一行前有缩进,替换时保留缩进的空格或者制表符,但是替换后面的部分内容
正则里有个概念叫后向引用
头像
kaji331
帖子: 565
注册时间: 2009-04-27 6:33

Re: 关于vim中搜索替换的换行问题『小经验自我记录贴』

#11

帖子 kaji331 » 2011-06-21 18:56

lilydjwg 写了:
kaji331 写了: 我就是想替换中保留空格,比如一行前有缩进,替换时保留缩进的空格或者制表符,但是替换后面的部分内容
正则里有个概念叫后向引用
god, 正则……各种悲剧,好吧,看了下,似乎就是前面变成\(\_s\+\), 后面变成\1……各种浮云~ :em06
知道base64解密的女生请看

5oiR5Zyo5p2t5bee5rWZ5aSn57Sr6YeR5riv6K+75Lmm77yM5aaC5p6c5L2g5a+C5a+e5oOz6KaB54Ku5Y+L77yM6K+357uZ5oiR55WZIOiogOWQp++8mu+8iQo=
回复