一、熟练使用vim编辑器
vim有三种基本模式:编辑模式、插入模式和命令模式。
1.编辑模式下
进入vim之后,首先进入的是编辑模式。进入编辑模式之后,vim等待编辑命令输入而不是文本输入。也就是说,这时输入的字母都将作为编辑命令来解释。
1.1编辑模式下光标的移动
| n为数字。光标向下移动n行 |
| n表示数字,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符 |
| 这是数字0:移动到这一行的首字符处 |
| 移动到这一行的末字符处 |
| 移动到文件的最后一行 |
| n为数字。移动到文件的第n行。例如输入20G则会移动到文件的第20行(可配合 |
| 移动到文件的第一行,相当于1G |
1.2编辑模式下查找与替换的命令说明
| 向下/向上寻找名称为word的字符串。 |
| 这个n是英文按键。代表重复前一个查找的动作。 |
| 这个N是英文按键。与n刚好相反,为反向进行前一个查找动作。 |
| 在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2 |
| 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2, |
| 全部替换,且在取代前显示提示字符给用户确认是否需要取代 |
取消高亮:noh
1.3编辑模式下删除、复制与粘贴的命令说明
| 删除光标所在的那一整列 |
| n为数字。删除光标所在的向下n列,例如,20dd是删除20列 |
| 复制光标所在的那一行 |
| n为数字。复制光标处向下n行,例如20yy是复制20行 |
| p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行! |
| 这是大写的Z。若文件没有更改,则不储存离开;若文件已经被更动过,则储存后离开 |
| 复原前一个动作 |
| 重复前一个动作的意思。如果你想要重复删除、重复粘贴等动作,按下小数点就可以 |
x,X | 在一行字中,x为向后删除一个字符(相当于“del”键),X为向前删除一个字符(相当于backspace) |
nx | n为数字,连续向后删除n个字符。 |
y1G/d1G | 复制/删除光标所在到第一行的所有数据 |
yG/dG | 复制/删除光标所在到最后一行的所有数据 |
y$/d$ | 复制/删除光标所在处,到该行的最后一个字符 |
y0/d0 | 那个数字是0,复制/删除光标所在行的前一个字符到该行的首个字符之间的所有字符 |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除10行,输入10cj |
Ctrl+r | 重做上一个动作 |
2.插入模式下
在编进模式下按下相应的键可以进入插入模式:插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都将被vim编辑器当作文件内容保存下来,并显示在屏幕上。在文本输入过程中(插入模式),若想回到编辑模式下,按“ Esc ”键即可。
2.1进入插入模式命令说明
| 从光标所在位置前开始插入文本 |
| 该命令是将光标移到当前行的行首,然后插入文本 |
| 用于在光标当前所在位置之后追加新文本 |
| 将光标移到所在行的行尾,从那里开始插入新文本 |
| 在光标所在行的下面新开一行,并将光标置于该行行首,等待输入 |
| 在光标所在行的上面插入一行,并将光标置于该行行首,等待输入 |
| 退出编辑模式或回到编辑模式中 |
3.命令模式下
如果是插入模式,先按“Esc”键回到编辑模式。在编辑模式下按“:”进入命令模式。
3.1命令模式下的按键说明
:w、:wq、:wq!、:q 、:q!、:x | 保存、保存退出、强制保存退出、退出、强制退出 |
| 读取其他文件内容追加到当前文档中 |
| 恢复到文件打开后,没有进行修改时的状态 |
| 将编辑的数据储存成另一个文件(类似另存为新文件) |
| 将n1到n2的内容储存成filename这个文件 |
| 暂时退出vim到命令列模式下执行command的显示结果。例如,“ |
| 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
| 与 |
| 取消搜索标注的高亮 |
| 将window中文件格式转换为unix文件格式,主要是换行符不一样 |
:e! | 还原 |
二、grep
grep 是行过滤
工具,用于根据关键字进行行过滤
-i:对匹配模式不区分大小写
• -w: 按单词搜索
• -n:每个匹配行只按照相对的行号显示
• -v:排除指定信息
• -A: 显示匹配行及后面多少行
• -B:显示匹配行及前面多少行
• -C: 显示匹配行及前后多上行
• -E: 表明要应用正则表达式,egrep 等价于 grep -E
• -o: 只显示匹配的字符串
三、正则表达式
单地说,正则表达式就是处理字符串的方法,它以行
为单位来进行字符串的处理。正则表达式通过一些特殊符号的辅助,可以让使用者轻易完成查找/删除/替换某些特定字符串的工作。
| 匹配指定字符串( |
| 匹配以指定字符串开头的值 |
| 匹配以指定字符串结尾的值 |
| 匹配中括号中的任意一个字符,它们之间是或者关系 |
| 匹配不在中括号中指定的任意字符 |
| 匹配列出的选取范围! |
| 匹配任意一个字符 |
| 转义字符,将特殊符号的特殊意义去除 |
| 管道,表示或者关系 |
| 表示字符串分组 |
| 匹配数字 |
| 匹配字母数字下划线 |
| 匹配空格、制表符、换页符 |