05 文本编辑器之神 vim (一)
在Linux中我们经常编辑修改文本文件,即由ASCII, Unicode 或其它编码的纯文字的文件。之前介绍过 nano,实际工作中我们会使用更为专业,功能强大的工具
1.1vi和vim简介
文本编辑种类:
全屏编辑器:nano(字符工具), gedit(图形化工具),vi,vim
行编辑器:sed
vi
Visual editor,文本编辑器,是 Linux 必备工具之一,功能强大,学习曲线较陡峭,学习难度大
vim
VIsual editor iMproved ,和 vi 使用方法一致,但功能更为强大,小化安装时不是必安装软件,需要 自行安装
官网:www.vim.org
其他相关编辑器:gvim 一个Vim编辑器的图形版本
1.2 三种主要模式和转换
vim 是 一个模式编辑器,击键行为是依赖于 vim的 的“模式”
三种常见模式:
命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
插入(Insert)或编辑模式:用于修改文本
扩展命令(extended command )或命令(末)行模式:保存,退出等
(小提示wq退出,x等价于wq,但是不建议使用x,如果输入成X,就变成了加密)
1.2.1命令模式 --> 插入模式
i insert, 在光标所在处输入 I 在当前光标所在行的行首输入 a append, 在光标所在处后面输入 A 在当前光标所在行的行尾输入 o 在当前光标所在行的下方打开一个新行 O 在当前光标所在行的上方打开一个新行
1.3 扩展命令模式基本命令
w 写(存)磁盘文件 wq 写入并退出 x 写入并退出 X 加密 q 退出 q! 不存盘退出,即使更改都将丢失 r filename 读文件内容到当前文件中 w filename 将当前文件内容写入另一个文件 !command 执行命令 r!command 读入命令的输出
1.4地址定界
# #具体第#行,例如2表示第2行 #,# #从左侧#表示起始行,到右侧#表示结尾行 #,+# #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行 . #当前行 $ #后一行 .,$-1 #当前行到倒数第二行 % #全文, 相当于1,$ /pattern/ #从当前行向下查找,直到匹配pattern的第一行,即:正则表达式 /pat1/,/pat2/ #从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 #,/pat/ #从指定行开始,一直找到第一个匹配patttern的行结束 /pat/,$ #向下找到第一个匹配patttern的行到整个文件的结尾的所有行
1.4.1地址定界后跟一个编辑命令
d #删除
y #复制
w file #将范围内的行另存至指定文件中
r file #在指定位置插入指定文件中的所有内容
1.5查找并替换
格式:s/要查找的内容/替换为的内容/修饰符
说明:要查找的内容:可使用基末正则表达式模式 替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查 找到的整个内容
修饰符:
i #忽略大小写 ;
g #全局替换,默认情况下,每一行只替换第一次出现 ;
gc #全局替换,每次替换前询问;
查找替换中的分隔符/可替换为其它字符,如:#,@
范例:
s@/etc@/var@g
s#/boot#/#i