Vim特定行行尾追加

python print 替换 logging

1、print语句最后追加")"。

:%s/\(.*\)print \(.*\)/\1print \2)/g

2、"     print "替换“logger.info(”

:%s/\(.*\)print \(.*\)/\1print \2)/g

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

转载地址:http://www.cnblogs.com/PegasusWang/p/3153300.html

Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作。

如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节。

一、使用正则表达式的命令

使用正则表达式的命令最常见的就是 / (搜索)命令。其格式如下:

/正则表达式

另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。

:s/正则表达式/替换字符串/选项

在学习正则表达式时可以利用 / 命令来练习。

二、元字符

元字符是具有特殊意义的字符。使用元字符可以表达任意字符行首行 尾某几个字符等意义。

元字符一览

元字符 说明
. 匹配任意一个字符
[abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,
[a-z0-9]匹 配小写字母和阿拉伯数字。
[^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
\d 匹配阿拉伯数字,等同于[0-9]
\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]
\x 匹配十六进制数字,等同于[0-9A-Fa-f]
\X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
\w 匹配单词字母,等同于[0-9A-Za-z_]
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\t 匹配<TAB>字符。
\s 匹配空白字符,等同于[ \t]
\S 匹配非空白字符,等同于[^ \t]

另外,如果要查找字符 *、.、/等,则需要在前面用 \ 符号,表示这不是元字符,而只是普通字符而已。

元字符 说明
\* 匹配 * 字符。
\. 匹配 . 字符。
\/ 匹配 / 字符。
\\ 匹配 \ 字符。
\[ 匹配 [ 字符。

表示数量的元字符

元字符 说明
* 匹配0-任意个
\+ 匹配1-任意个
\? 匹配0-1个
\{n,m} 匹配n-m个
\{n} 匹配n个
\{n,} 匹配n-任意个
\{,m} 匹配0-m个

表示位置的符号

元字符 说明
$ 匹配行尾
^ 匹配行首
\< 匹配单词词首
\> 匹配单词词尾

使用例

/char\s\+[A-Za-z_]\w*;                 " 查找所有以char开头,之后是一个以上的空白,                                             " 最后是一个标识符和分号/\d\d:\d\d:\d\d                        " 查找如 17:37:01 格式的时间字符串:g/^\s*$/d                             " 删除只有空白的行:s/\<four\>/4/g                        " 将所有的four替换成4,但是fourteen中的four不替换

三、替换变量

在正规表达式中使用 \( 和 \) 符号括起正规表达式,即可在后面使用\1\2 等变量来访问 \( 和 \) 中的内容。

使用例

/\(a\+\)[^a]\+\1                                          " 查找开头和结尾处a的个数相同的字符串,                                                                  " 如 aabbbaa,aaacccaaa,但是不匹配 abbbaa:s/\(http:\/\/[-a-z\._~\+%\/]\+\)/<a href="\1">\1<\/a>/   " 将URL替换为<a href="http://url">http://url</a>的格式:s/\(\w\+\)\s\+\(\w\+\)/\2\t\1                            " 将 data1 data2 修改为 data2 data1

四、函数式

在替换命令 s/// 中可以使用函数表达式来书写替换内容,格式为

:s/替换字符串/\=函数式

在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1\2 等的内容,而submatch(0)可以引用匹配的整个内容。

使用例

:%s/\<id\>/\=line(".")                              " 将各行的 id 字符串替换为行号:%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1)    " 将每行开头的单词替换为 (行号-10).单词 的格式,                                                           " 如第11行的 word 替换成 1. word

五、与Perl正则表达式的区别

元字符的区别

Vim语法 Perl语法 含义
\+ + 1-任意个
\? ? 0-1个
\{n,m} {n,m} n-m个
\(和\) (和) 分组

六、vi 正则表达式练习

闲言碎语不要讲…例子说明一切,比如下面这段我需要换成 ubb 标签

vim 命令模式,输入

:%s/.*src=”([^"]*)”[^>]*>/[img]1[/img]/g

替换为

[img ]gu.jpg[ /img]

[img ]os.jpg[ /img]

[img ]hu.jpg[ /img]

[img ]ang.jpg[ /img]

解释如下:

:

命令执行状态

%s

表示查找并替换

%s/a/b/g

a 被查找的字符串(正则匹配);b 要替换成的文字;g 表示全局搜索替换(否则只处理找到的第一个结果)

([^"]*)

表示非引号的字符N个;外面 () 表示后面替换要用(用 1,…,9等引用)

[/img]

/ 需要被 转义

与其它工具正则不一样的地方在于 () 也必须 (),怪不得我老是弄不出来。

相关资料:

via http://net.pku.edu.cn/~yhf/tao_regexps_zh.html

vi 命令 作用

:%s/ */ /g 把一个或者多个空格替换为一个空格。

:%s/ *$// 去掉行尾的所有空格。

:%s/^/ / 在每一行头上加入一个空格。

:%s/^[0-9][0-9]* // 去掉行首的所有数字字符。

:%s/b[aeio]g/bug/g 将所有的bag、beg、big和bog改为bug。

:%s/t([aou])g/h1t/g 将所有tag、tog和tug分别改为hat、hot和hug(注意用group的用法和使用1引用前面被匹配的字符)。

Sed

Sed是Stream EDitor的缩写,是Unix下常用的基于文件和管道的编辑工具,可以在手册中得到关于sed的详细信息。

这里是一些有趣的sed脚本,假定我们正在处理一个叫做price.txt的文件。注意这些编辑并不会改变源文件,sed只是处理源文件的每一行并 把结果显示在标准输出中(当然很容易使用重定向来定制):

sed脚本 描述

sed ’s/^$/d’ price.txt 删除所有空行

sed ’s/^[ ]*$/d’ price.txt 删除所有只包含空格或者制表符的行

sed ’s/”//g’ price.txt 删除所有引号

时间: 2024-10-24 19:53:54

Vim特定行行尾追加的相关文章

在文本每一行的行首和行尾都插入特定的相同字符或文本

这个问题也可以说成是如何在长文本每一行的前面和后面都插入特定的相同字符或文本?例如原始txt文档为: 1 2 3 4 床前明月光, 疑是地上霜. 举头望明月, 低头思故乡. 要在每一行的前面和后面都插入特定的相同字符或文本,就要变成如下效果: 1 2 3 4 123abc 床前明月光, 456xyz 123abc 疑是地上霜. 456xyz 123abc 举头望明月, 456xyz 123abc 低头思故乡. 456xyz 这个例子只是短了点,可以手动复制粘贴,但如果是长文本又该如何快捷操作?

linux中的vim 编辑一行内容,如何使光标快速移动到行首和行尾以及行中间某处啊?

光标定位G 移至行行首nG 移至第n行行首n+ 移n行行首n- 移n行行首n$ 移n行(1表示本行)行尾0 所行行首$ 所行行尾^ 所行首字母h,j,k,l 左移移移右移H 前屏幕首行行首M 屏幕显示文件间行行首L 前屏幕底行行首 更参考原文移行道两0 ^ (shift+6)行首第字符空白字符点区别移行尾 $ (shift+4) 追问 请问如何移动到某行的中间字符处啊

vim编译器中 行首行尾的一些操作

一 ,替换每行行首的文字或字符为空::%s/^\s*[0-9]*\s*//gc 其中,^表示行首,$表示行尾,\s表示空格,[0-9]表示0~9的数字,*表示0或多个,%s/^\s*[0-9]*\s*//gc的意思是将每行以0或多个空格开始中间包含0或多个数字并以0或多个空格结束的字符串替换为空. 二.添加内容 在每行行首添加相同的内容: :%s/^/要添加的内容 在每行行尾添加相同的内容: :%s/$/要添加的内容 未完待续 原文地址:https://www.cnblogs.com/byne-

VIM常用指令

1.光标移动 上:k 下:j 左:l 『字母L小写』 右:h 上一行行首:- 『减号』 下一行行首:+ 行首:0 『数字0』 行尾:$ 单词词尾或后一个单词词尾:e 后一个单词词首:w 单词词首或前一个单词词首:b 跳转到特定行::行号 ( :5 :跳转到第5行 ) 上一屏:ctrl + b 下一屏:ctrl + f 上半屏:ctrl + u 下半屏:ctrl + d 向上滚屏:ctr + y 向下滚屏:ctr + e 跳到文件头:gg 跳到文件尾:G 2.搜索 向后模式搜索:/ + 搜索模式

vim、bash等

使用vim编辑多个文件 vim file1 file2 file3 ... :next查看或编辑后一个文档的内容 :prev查看或编辑前一个文档的内容 :first查看或编辑第一个文档的内容 :last查看或编辑最后一个文档的内容 vim -o|-O file1 file2 file3 -o:水平显示多个文件 -O:垂直显示多个文件 Ctrl+w arrow(箭头) 光标移动 Ctrl+w,s讲一个文件水平分屏显示 Ctrl+w,v将一个文件垂直分屏显示 :qa 全部退出 :wa 全部保存 将其

vim常用命令(复习版)(转)

原文链接:http://blog.csdn.net/love__coder/article/details/6739670 1.光标移动 上:k 下:j 左:l 『字母L小写』 右:h 上一行行首:- 『减号』 下一行行首:+ 行首:0 『数字0』 行尾:$ 单词词尾或后一个单词词尾:e 后一个单词词首:w 单词词首或前一个单词词首:b 跳转到特定行::行号 ( :5  :跳转到第5行 ) 上一屏:ctrl + b 下一屏:ctrl + f 上半屏:ctrl + u 下半屏:ctrl + d 向

Vim常用命令(转)—默写版

1.光标移动 上: 下: 左: 『字母小写』 右: 上一行行首: 『减号』 下一行行首: 行首: 『数字0』 行尾: 单词词尾或后一个单词词尾: 后一个单词词首: 单词词首或前一个单词词首: 跳转到特定行::行号 ( :5  :跳转到第5行 ) 上一屏: 下一屏: 上半屏: 下半屏: 向上滚屏: 向下滚屏: 跳到文件头: 跳到文件尾: 2.搜索 向后模式搜索: 向前模式搜索: 注意:结合n和N向前向后查找 3.追加或插入 光标右侧追加: 光标行尾追加: 光标左侧追加: 光标行首追加:『i的大写』

[转]vim常用命令

http://www.cnblogs.com/sunyubo/archive/2010/01/06/2282198.html http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx 好文 下面是我常用的一些命令, 放在这里供我备忘: 新学习到的命令:  1. 重复最近的文本操作:使用点号键(.) 2. 筛选功能:在vi 中按 Escape,输入 :!command(其中的 command 是要执行的 UNIX 命令),然后按回车,就可

vim使用手册

1. 关于Vim 1.1 Vim的几种模式 2. 启动Vim 3. 文档操作 4. 光标的移动 4.1 基本移动 4.2 翻屏 4.3 标记 5. 插入文本 5.1 基本插入 5.2 改写插入 6. 剪切复制和寄存器 6.1 剪切和复制.粘贴 6.2 文本对象 6.3 寄存器 7. 查找与替换 7.1 查找 7.2 替换 7.3 正则表达式 8. 排版 8.1 基本排版 8.2 拼写检查 8.3 统计字数 9. 编辑多个文件 9.1 一次编辑多个文件 9.2 多标签编辑 9.3 缓冲区 10.