1 什么是vi及vim?
vi是文本编辑器;vim是程序开发工具。
2 vi的几种模式
1 一般模式:vi <fileName> 就进入命令模式,可以删除或者复制粘贴
2 编辑模式:修改内容
3 命令行模式:最下面一行,保存、替换、退出等。
3 vi3种模式间切换
1 一般模式->编辑模式
1 插入
Aa或Ii或Aa
2 替换:
Rr
2 编辑模式->一般模式:ESC
3 一般模式->命令行模式:支持3种,可以将光标移到最下面一行。
:
/
?
4 命令行模式->一般模式:ESC
5 注意:编辑模式和命令行模式不能互相切换。
4 一般模式常用快捷键 (光标移动、复制粘贴、查找替换)
1 光标移动
1 单个光标移动
需求 | 快捷键 |
向左移动一个字符 | 向左箭头或h |
向下移动一个字符 | 向下箭头或j 向下30行:30j或者30向下箭头 |
向上移动一个字符 | 向上箭头或k |
向右移动一个字符 | 向右箭头或l 向右20个:20l或者20向右箭头或者20<space> |
2 整个屏幕移动
需求 | 快捷键 |
向下移动一个屏幕 | Ctrl+f或PgDn |
向上移动一个屏幕 | Ctrl+b或PgUp |
向下移动半个屏幕 | Ctrl+d |
向上移动半个屏幕 | Ctrl+u |
3 常见的本行最左最右移动
需求 | 快捷键 |
---|---|
移动到本行最最左边 | 数字0 |
移动到本行最左边非空字符 | Ctrl+6 |
移动到本行最右边 | $ |
移动到本行下一个单词的开头 | w 移动到第8个单词的开头8w |
移动到本行下一个单词的结尾 | e |
移动到本行上一个单词的开头 | b |
我的需求:移动到第5行,把domain里的301a改成301b | 1 5G:跳转到第5行 2 $:跳转到第5行的最后 3 4b:往左走4个单词的头 |
4 常见的上下移动
移动到当前屏幕的第一行的第一个字符 | H |
移动到当前屏幕的中间行的第一个字符 | M |
移动到当前屏幕的最后一行的第一个字符 | L |
移动到文件的最后一行 | G |
移动到文件的第一行 | gg |
移动到文件的第20行 | 20G |
基于当前位置,向下移动10行 | 10<enter> |
2 查找及替换
需求 | 快捷键 |
---|---|
向下找某个字符,比如throughput | /throughput |
重复查找这个字符,还是继续向下查找 | n |
重复查找这个字符,朝上找 | N |
向上找某个字符,比如domain | ?domain |
重复查找这个字符,还是继续向上查找 | n |
重复查找这个字符,但是相反方向,比如之间?是想上找,现在N就是相反的,朝下找 | N |
从100到200行间,找到test,替换为TEST | :n1,n2s/word1/word2/g :100,200s/test/TEST/g |
从第一行对最后一行,找到test,替换为TEST | :1,$s/word1/word2/g |
从第一行对最后一行,找到test,替换为TEST且替换前需要确认 | :1,$s/word1/word2/gc |
3 删除与复制粘贴
需求 | 快捷键 |
---|---|
向前删除一个字符 | Backspace或者X |
向后删除一个字符 | Delete或者x 向后删除10个字符:10x |
剪切光标所在的整行 | dd 剪切光标所在的向下10行:10dd |
剪切光标所在行到第一行 | d1G |
剪切光标所在行到最后一行 | dG |
剪切本行:[光标处,本行最后一个字符] | d$ |
剪切本行:[本行第一个字符,光标处] | d0 |
复制光标所在行 | yy 向下复制10行:10yy |
复制光标所在行到第一行 | y1G |
复制光标所在行到最后一行 | yG |
复制本行:[光标处,本行最后一个字符] | y$ |
复制本行:[本行第一个字符,光标处] | y0 |
将复制内容粘贴在光标下一行 | p |
将复制内容粘贴在光标上一行 | P |
恢复前一个操作 | u |
重复前一个操作 | . |
4 操作一行中的一部分数据
需求 | 快捷键 |
---|---|
user="xiaomingxiaohua@email" 想把“”中的内容快速删掉 | delete inside: di 删除符号内的信息 光标在""或者内部,按di" 就可以把双引号中间的内容清理掉 |
test={aaaaaa} | 按di{ 或者di} |
test='11111111' | 按di' |
<domain>localhost.domain.list</domain> 想把中间这段快速删掉 | 光标在local中的l上,按 dt< 就会删掉从当前字符开始,<之前的所有字符 |
5 一般模式切换到编辑模式
需求 | 快捷键 |
---|---|
插入:到当前字段的前面 | i |
插入:从所在行的第一个非空字符插入 | I |
插入:到当前字段的后面 | a |
插入从光标行的最后一个字符插入 | A |
插入:在光标行的下一行插入一个新行 | o |
插入:在光标行的上一行插入一个新行 | O |
替换:替换光标所在的字符一次 | r 先输入r,马上输入要替换的另一个字符 |
替换:一直替换光标处的字符,直到按下ESC | 按下R 代表开始替换 然后输入要替换的信息,比如把18000替换成32000 最后按ESC退出替换模式 |
ESC | 退出编辑模式,回到一般模式 |
6 一般模式切换到命令行模式 : / ?
需求 | 操作 |
---|---|
将编辑的数据写入硬盘 | :w |
退出vi | :q |
强制退出不保存 | :q! |
保存后退出 | :wq |
强制保存后退出 | :wq! |
把修改的东西另存为新文件 | :w 新文件名 |
把当前文件的n1-n2行,保存到新文件 | :n1,n2 w 新文件名 |
显示行号 | :set nu |
不显示行号 | :set nonu |
7 其他常用
1 vi XX 不小心窗口关闭,下次每次vi这个文件都会提醒要不要保留?
答:
ls -al
rm -f XX.swap
把这个文件删除,下次再vi进来就不会报错了。