一 (正则表达式)
正则表达式(REGEXP)是由一类特殊字符和文本字符所编写的模式,其中有些字符(元字符)不表示字符字面的意义,而表示控制或通配的功能。
分为两类: 基本正则表达式:BRE 扩展正则表达式: ERE
元字符分类:字符匹配,匹配次数,位置锚定,分组。
字符匹配: · 表示匹配的单个字符
. 转义,表示(·)的字符本意
【】 表示匹配指定范围内的任意单个字符,【】里的·表示本意,不用转义
【托字符】 表示匹配指定范围外的任意单个字符
【:alnum:】 字母和数字 【:alpha:】 代表任何英文大小写字符
【:lower:】 小写字母 【:upper:】 大写字母
【:blank:】 空白字符 【:space:】 水平和垂直的空白字符(比blank范围大)
【:punct:】 标点符号
匹配次数: 用于在要指定次数的字符后面,是表示前面字符出现的次数。
- 表示匹配前面的字符重复的次数,包括0次
·* 任意长度的任意字符
\? 匹配前面的字符0次或1次
+ 匹配前面的字符至少1次
{n} 匹配前面的字n次,是指定m次
{n,m} 匹配前面的字符最少n次,最多m次
{,n} 匹配前面的字符最多n次
{n,} 匹配前面的字符最多n次
位置锚定: 定位出现的位置。
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
\> 词尾锚定,用于单词模式的最右侧
\< 词首锚定,用于单词模式的最左侧
\b 单词的边界
分组: () 将一个或多个字符捆绑在一起,当做一个整体进行处理。
二, VIM的基本命令操作
VIM 的文本编辑器
+# 打开文件后,让光标处于第#的行首
-d 可以比较多个文件
-m 只读的方式打开文件,避免误操作
-e 进入ex模式(编辑模式)
三种主要模式
命令模式:默认模式
插入模式:编辑模式
扩展命令模式:ex模式
可以让命令模式进入插入模式的,按ESC退出的一些操作:
按 i 光标不懂
按 I 光标移动到行首
按 a 光标往后移动一个字符
按 A 光标移动到本行的行尾
按 o 在光标下行切换新行
按 O 在光标上行切换新行
在命令模式下按: 就进入ex模式了
在ex模式下:
Wq 存盘退出 q 退出
Q! 强行退出,修改的不算
W 空格 跟文件 就可以把VIM的内容传送到文件
R 空格 跟文件 就可以把文件的内容读入VIM
在命令模式下的一些常用的用法:
字符间的跳动: h 左 l 右 j 下 k 上
前面加上数字# ,配合其他按键进行跳动
单词间的跳动: w 跳动到下一个单词的词首
e 跳动到下一个单词的词尾
b 跳动到前一个单词的词首
也可以配合#进行跳动
当前页面跳动: H 跳动到当前页面的页首
M 跳动到当前页面的中间
L 跳动到当前页面的页底
行首行尾的跳动: ^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
行间移动: G 直接跳动到整个文件的最后一行
gg 直接跳动到整个文件的第一行
一些快捷键: ctrl +f 向文件尾部翻一页
Ctrl+b 向文件首部翻一页
Ctrl+d 向文件尾部翻半页
Ctrl+u 向文件首部翻半页
命令模式的字符编辑: x 删除(剪切)光标处的字符
#x 前面加上数字,表示删除几个字符
Xp 交换光标处字符跟后面字符的位置
J 删除当前行后的换行符
~ 转换大小写
替换命令: r 替换光标所在处的字符
R 切换成REPLACE 模式,批量替换字符
删除命令: d 删除字符,可以结合光标跳转字符实现范围删除
d$ 删除到行尾
d^ 删除到非空白字符行首
d0 删除到行首,不包括光标处
dd 删除光标所在行 (配合数字批量删除)
D 从当前光标处一直删除到行尾
复制命令: (复制完可以按P粘贴)
y 复制
y$ 复制到行尾
y0 复制到行首
y^ 复制到非空白字符行首
yy 复制光标所在行
#yy 配合数字实行多行复制
Y 复制整行
改变命令: c 修改后切换成插入模式,配合d进行相应操作
100i wang [esc] 粘贴wang 100次 复制wang 100次
扩展命令模式: (ex)模式
地址定界:
:# 输入数字几,跳到第几行
#,#:从第几行到第几行,后配合相应命令
· 表示当前行
$ 表示最后一行
% 表示全文件内容
S 在扩展模式下完成查找替换操作
格式: s/要查找的内容/替换为的内容/修改符
修改符: i 忽略大小写
g 修改的全局替换(默认情况只替换每行第一次改的)
gc 全局替换时每次前询问
命令模式下: (小写)u 撤销 #u 撤销之前多次修改
(大写)U 撤销光标落在此行后所有的更改
按ctrl -r 重做最后撤销的更改(倒回去)
· 重做前一个操作
n. 重做前一个操作N次
VIM的寄存器
有26个命名的寄存器 (可以在不同窗口进行)
名称以a b c ….z 来表示
格式: 寄存器放在数字和命令之间
如: “ ayy 表示把当前光标所在行复制到a寄存器
“ap 表示把a寄存器的内容粘贴
VIM “F1 F2”一次处理多个文件
刚进去默认在第一个文件
:next 下一个
: prev 前一个
: qall 退出所有
: wqall 保存退出所有
VIM 使用多个窗口
VIM -o 上下分屏
VIM-O 左右分屏
在窗口间来回切换 ctrl+w
完成后 wqall
在VIM里加行号
显示 set nu
取消 set nonu
要想行号永久有效,必须保存配置文件:(用VIM改)
全局:/etc/vimrc 个人:~/.vimrc
在VIM里设置文本宽
启用 set textwidth =65
禁用 set wrapmargin =15
在VIM里设置光标所在的标识线
启用 set cursorline (cul)
禁用 set no cul
更详细用法请查:VIM help
原文地址:http://blog.51cto.com/13786575/2123870