vi 三种模式
1) 默认是命令行模式。
命令行模式下, i 是 insert 输入,a 是append 输入,o 是新增加一行输入,r 替换光标所在的那一个字符一次。(输入模式-->按ESC键 切成命令模式)
2) 输入模式-->按ESC键 切成命令模式。
dd 删除游标所在的那一整行(常用)
yy 复制游标所在的那一行(常用),
p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行
u 撤销上一个操作(常用)
[Ctrl]+r 重做一次,就是还原上1个操作(常用)
3) 输入冒号,进入底线命令模式
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq 储存后离开
wq! 则为强制储存后离开 (常用)
:w [filename] 将编辑的数据另存为另一个文档
:r [filename] 将另一个文档的内容加到当前游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 另1个文档
:set nu 显示行号
:set nonu 与 set nu 相反,为取消行号
查找替换
:%s/word1/word2/g 全文查找 word1 后用 word2替换 (常用)
:%s/word1/word2/gc 全文查找 word1 后用 word2替换,且在替换前提示字符给用户确认 (confirm) 是否需要取代(常用)
:100,200s/word1/word2/g 在100 到 200 行之间查找 word1 后用 word2替换
命令模式的时候输入/ 就是查找的意思
/s 查找字母 s
/\s 一次匹配1个空格(点击n就是1个空格到到下一个空格)
/\s\+ 一次匹配1片空格(点击n就是1块空格到到下一块空格)
/\n 查找回车键
%s 在整个文件范围查找并替换(或者使用1,$s 也是整个文件范围查找)
/ 分隔符
+ 表示重复1次或多次,加在一起表示一个或多个空格。
\r 换行符
\s 匹配任意的空格(空白符)
/g 全局替换
匹配1到多个空格
/\s\+
替换一个或多个空格,替换为换行符
:%s/\s\+/\r/g
删除文章中的空行
:g/^s*$/d
把空格替换为换行
:%s/ /\r/g
把空行删除
:g/^$/d
替换一个或多个空格,替换为逗号,
:%s/\s\+/,/g 注意 vi 就是用这个命令,把空格替换成逗号,
替换后是:
Linux vim字符串替换 (原文)
处理大文件不用vi,要sed -i 出马
sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!
sed -i '100i # This is a test' filename.txt