一、匹配查找
在normal模式下按下/即可进入查找模式。
输入要查找的字符串并按下回车,vi会跳转到第一个匹配。 按n下查,按N反向向上查找。
跳转到指定位置: 跳转到文件末尾:G 跳转到指定行: 9G 跳转到第9行
1.1 正则匹配
vi查找支持正则表达式, 如 "/vim$" 匹配行尾的"vim"。
查找特殊字符需要转义, 如 "/vim\$"匹配"vim$"。
1.2 大小写敏感查找
在查找模式中,使用\c表示大小写不敏感查找,\C表示大小写敏感查找。默认大小写敏感。
/foo\c 将会查找到"foo"、"FOO"、"Foo"、"foobar"等字符串。
1.3 调整大小写不敏感查找
[root@cl-backup ~]# cat .vimrc ### 设置默认大小写不敏感查找 set ignorecase ### 如果查找的字符串中有一个大写字母,则切换到大小写敏感 set smartcase
如: /aa 能查找到 "aa" / "aA" / "AA" / "Aa" / "aabb" 等。 /Aa 只能查找到"Aa"、"Aavv"等字符串。
1.4 查找当前单词
在normal模式下,按下*即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。
例如当前为foo,可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。
按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo bar和foobar中的foo均可被匹配到。
二、替换
2.1 语法
:s(substitute)命令用来查找和替换字符串
语法: :{作用范围}s/{目标}/{替换}/{替换标志}
例: :%s/foo/bar/g 在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)
2.2 作用范围
当前行: :s/aa/AA/g
全文: :%s/aa/AA/g
特定行: :5,12s/aa/AA/g
当前行到后面的5行: :.,+5s/aa/AA/g
选中的范围: 在Visual模式下选择区域后, 输入:, vi自动补全为 :'<,'>
:'<,'>s/aa/AA/g (s/aa/AA/g 是输入的内容)
2.3 g 表示 全局global替换
:%s/aa/AA 只替换全文的每一行第一次出现的匹配项
:%s/aa/AA/i i表示大小写不敏感,I表示大小写敏感
:%s/aa\c/AA
:%s/aa/99/gI 全文匹配,大小写敏感; 等同于 :%s/aa\C/99/g
:%s/aa/99/gc c表示确认,查找到的每一个位置,回车后vi会将光标移动到每一个位置,提示 replace with 99 (y/n/a/q/l/^E/^Y)?
y表示替换,n不替换,a替换所有,q退出查找模式,l替换当前位置并退出。^E 和 ^Y 是光标移动快捷键。
三、删除
删除当前行到最后一行 命令模式 dG 末行模式 :.,$d
删除指定范围的行 :1,10d
删除匹配到的行 :g/{pattern}/d
删除指定范围内匹配到的行 :1,10g/{pattern}/d
保留匹配到的行 :v/{pattern}/d
删除所有内容: :1,$d
删除指定行到当前行: :1,.d
行内删除字符:
- x: 删除当前光标处的字符
- nx: 删除多个字符
- X: 删除光标左边的字符
- D: 删除从当前光标到本行末尾的字符
- J: 删除两行之间的换行符 (亦可用于合并两行)
- dd: 删除当前行
- dw: 删除从当前位置到下一个空格的字符
- d3w: 删除从当前位置到后三个空格的字符
删除行尾多个空格: :%s/\s\+$//g
删除行首多个空格: :%s/^\s*//g
删除所有数字: :%s/\d//g
删除重复行: :sort u
四、恢复与复制
u: 撤销上一命令对编辑缓冲区的修改
U: 恢复当前行(一次性撤销对当前行的全部修改,不包括删除)
.: 重复上一命令对编辑缓冲区的修改
p: 复制上一次删除的内容,插入到光标的后面
P: 复制上一次删除的内容,插入到光标的前面
标签:aa,AA,删除,vi,vim,查找,大小写,Linux,foo From: https://www.cnblogs.com/kingdomer/p/9410475.html