1、【场景驱动学习】上一篇文章介绍了如何在Liunx系统中找到目标文件,那么找到文件后,如果我们需要修改文件内容,该如何操作呢?
答:常用有以下几种方法来对文件的内容进行修改;
- 方法1:使用编辑器【vi|vim】
- 方法2:使用shell脚本,常用的就是脚本导入、修改;其中导入:分为追加、覆盖
2、【场景驱动学习】如何使用这些方法来对文件进行操作呢?
【vi|vim的区别】
-
vi是Linux系统中最基本的文件编辑器,功能十分强大;但vi编辑器在某些地方还略显粗糙,比如说:使用vi编辑器编写脚本时,变量、常量和字符串等等统统是一种颜色的,使人容易视觉疲劳。
《如果你看到有人使用vi编辑器,那么很有可能此人是国内较早接触Linux的那批人,可以说是老前辈了》 -
人的懒惰为科技的进步做出了不可磨灭的贡献,vim就是为满足人对编辑器更多更复杂的要求而发明出来的【瞎编的】。简单说:Vim是vi的加强版,比vi更容易使用,并且vi的命令几乎全部都可以在vim上使用。所以对于刚学Linux的人来说,vim是不二之选。
接下来我也是只介绍vim编辑器的使用:
【Vim的安装】
- 安装Linux系统的时候,vim编辑器默认已经安装了的
- Liunx系统程序的安装将在后几章进行介绍,此处就默认系统已经安装Vim编辑器了
【Vim的设置】
- 在Linux世界中,有一条哲学核心思想:一切皆文件;
- 所以在接下来的文章中,我都会先对相关命令介绍它们的配置文件,帮助我们先从配置文件中了解命令的各种设置,然后再介绍命令如何使用。这也是曾经一位Linux大佬对我说的话【看论坛视频的时候】
- 与Vim相关的配置文件有两个:
- /etc/vimrc 这个文件是影响全局的Vim编辑器设置;
- [/home/username/.vimrc] 此文件需要手动创建,并只对个人有效
- 为什么需要对vim进行设置呢?
答:就是为了满足各种技术人员对编辑器的需求,比如显示行号【方便编程】、改变编辑器底色、是否需要自动缩进、自动补全等需求
【Vim的工作模式介绍】
Vim命令格式:
#vim [option] filename
此处的文件filename可以是已经存在的文件,
或者是尚未创建的文件。也就是说使用Vim命令可以创建新文件
#vim 100.sh
这命令就会使用Vim编辑器打开文件名为100.sh的文件,内容如下所示:
- Vim编辑文档有三种模式[命令模式|插入模式|末行模式],每一种模式都有特定的操作以满足不同的需求。
- 命令模式是三种模式中的连接桥梁,使用Vim打开文档就自动进入命令模式,再使用[i|I|a|A|o|o]就会进入插入模式,要想从插入模式转到末行模式,需要先从插入模式按"Esc"键,回退到命令模式,再从命令模式按冒号":"即可进入末行模式。下图显示了这三种模式之间的转换逻辑:
【Vim的操作】【场景驱动学习】
- 现在我们知道了如何使用Vim打开文件,并在三种模式之间如何切换,那么每种模式对应的需求是什么以及每种模式常用的操作有那些呢?下面将分别介绍三种工作模式及其常用的操作命令:
- 命令模式
- 需求:a.快速定位
在命令模式下,只需要在键盘按下以下内容即可快速定位到目标位置
<行的定位命令如下:>
gg 光标移动到行首
G 光标移动到行尾
ngg 光标移动到第n行
<某行中字符的定位命令如下:>
$ 光标移动到行尾
^|0 光标移动到为首,"|"为或的意思
- 需求:b.复制、剪切、粘贴
yy 复制当前行内容
nyy 复制当前行到下n行间的内容
dd 剪切当前行
ndd 剪切当前行到下n行之间的内容
D 剪切当前行到行尾间的内容
p 在当前行的下一行将复制或剪切的内容粘贴
P 在当前行的上一行将复制或剪切的内容粘贴
- 需求:c.快速替换
r 替换光标所在处的字符,需要键入新的字符,只能替换一个字符
R 从光标所在处的字符开始替换字符,直到按"Esc"键结束
需求:d.字符串查找
/string 操作文档中是否有string字符串,如有,则把此字符串高亮显示;按"n"是向下操作下一个目标字符串string;按"N"则是向上查找上一个目标字符串string;
- 需求:e.回退操作
:u 对上一步骤反悔,可连续按
- 编辑模式
- 需求:a.快速编辑文档
i 在光标所在字符前开始编辑
I 在光标所在行的行首开始编辑
o 在光标所在行的下一行开始编辑
O 在光标所在行的上一行开始编辑
a 在光标所在字符后开始编辑
A 在光标所在行的行尾开始编辑
- 末行模式
需求:a.保存、退出、另存、字符串替换
:q! 强制退出
:wq 写入并退出;在命令模式下按两次大写ZZ即可退出
:w newfilename 将内容保存到新文件中
:%s/old/new/g 将文档中所有old字符串替换为new字符串
:n1,n2s/old/new/g 将文档中第n1行到n2行之间所有old字符串替换为new字符串
注意:以上操作均为使用vim进入文档所进行的操作,其实在进入文档前,依然有选项配合Vim使用,快速达到目标效果
vim +n filename 进入文档后就定位到第n行行首
vim + filename 进入文档后就定位到行末