Linux的文件编辑器
vim
是Linux中重要的文本编辑器,我们使用vim
可以在Linux中编辑文件,vim
可以看做是之前vi
编辑器的升级版本
2. 文件编辑过程中的三种模式
一般模式(无法编辑):通过按键控制VIM工作
编辑模式(可以编辑无法保存):可以自由输入
指令模式(可以执行保存、查找等操作):通过执行指令完成一些特殊操作
3. 一般模式下的按键操作
vim 要编辑的文件路径
可以进入到一般模式,此时我们无法自由编辑文件,但是可以进行整行的复制、粘贴、删除
-
yy
复制光标所在行 -
p
在下方粘贴一行 -
dd
删除光标所在行 -
u
撤销前一步操作 -
Ctrl + r
重做刚刚撤销的操作 -
r
替换光标所在位置的一个字符,第一步:按一下r键,第二步:输入新的字符 -
gg
将光标移动到第一行的开头 -
G
将光标移动到最后一行的开头 -
行数G
将光标移动到指定行的开头
4. 进入编辑模式
因为一般模式下我们无法自由编辑内容,所以需要进入编辑模式来进行文件的编辑,进入编辑模式的方式有如下一些:
按键 | 大小写 说明 | 光标动作 |
---|---|---|
i | 小写 | 不动,就在当前位置,开始输入 |
I | 大写 | 移动到行的开头,开始输入 |
a | 小写 | 光标向后移动一格,然后开始输入 |
A | 大写 | 光标移动到行的末尾,然后开始输入 |
o | 小写 | 先在光标所在行的下面插入空行 然后把光标移动到空行的开头,再开始输入 |
在编辑模式下我们可以进行自由编辑,如果想回退到普通模式进行操作,则需要按Esc
按键,编辑模式下我们无法进行查找、保存等等操作,需要进入指令模式才能完成。而进入指令模式需要从一般模式进入,所以需要先Esc
退回一般模式
5. 指令模式下的操作
5.1 进入指令模式
5.1.1 进入特殊指令操作的指令模式
在一般模式下输入英文的:
,其实就是同时按Shift
和:
就可以看到文档最下方出现了一个:
,并且光标也出现在了:
后面,就表示进入了指令模式,此时我们就可以输入指令进行一些操作
5.1.2 进入用于全文搜索的指令模式
在一般模式下输入/
,可以进入用于全文搜索的指令模式
5.2 在全文搜索的指令模式下进行搜索
5.2.1 搜索的具体步骤
-
在
/
的光标处输入搜索关键字,然后按回车按钮进行搜索,搜索出来匹配关键字部分的内容,会高亮显示 -
遍历匹配内容: 输入
n
向下遍历查找,输入N
向上遍历查找 -
取消高亮显示:
:noh
5.3 指令模式下常用的指令操作
5.3.1 显示行号
set nu
指令可以显示文本的行号
5.3.2 保存已编辑的内容
w
指令可以保存已编辑的内容
5.3.3 退出vim编辑器
q
指令可以退出vim编辑,但是当部分修改还没有保存,那么会看到下面的提示:
当我们想要放弃对文件的修改,不保存直接退出就使用:q!
来代替q
进行退出
5.3.4 保存当前编辑并退出
wq
指令可以先保存当前编辑的内容,然后再退出vim编辑器
5.3.5 全文替换
-
准备文本内容
TIP Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily? Oh,hello tom!Do you think this is a good time for me to say hello to Lily?
执行替换:将hello
替换成hi
:
%s/hello/hi
,替换后的效果是:
这时我们看到每一行只有第一个匹配的内容被替换了,后面的没有被替换。这是因为对正则表达式来说,它是以行为单位查找匹配的内容。每一行只要找到第一个匹配那么就可以判断这一行就是匹配的,没有必要继续向后查找了。如果我们需要将一行中的每一个匹配都替换,可以在指令后加/g
6. 常见的问题
6.1 提示存在交换文件
6.1.1 错误示例
6.1.2 错误原因
vim在打开一个文件的时候会同时创建一个临时文件,命名方式是“.原文件名.swp”,这就是所谓的交换文件。而当vim正常退出时,这个交换文件会被删除。所以如果正常操作我们是看不到这个提示界面的。
而之所以会出现上面的提示,是因为当前的vim命令在创建新的交换文件之前就已经检测到了已存在的交换文件。
再往前推理一步,为什么会有交换文件残留?
-
可能原因1:其他窗口正在使用vim打开同一个文件
-
可能原因2:非正常关机等原因导致vim没有正常退出
6.1.3 解决方法
先根据最下面的提示输入Q退出,然后检查是否在其他窗口已经用vim打开了这个文件:
-
是:继续在这个vim中编辑文件。
-
否:删除交换文件,重新编辑。
6.2 屏幕被锁
在Windows环境下大家已经习惯了使用Ctrl+s保存文档,但是在Linux环境下Ctrl+s是锁屏。如果是因为Ctrl+s锁屏那么可以使用Ctrl+q解锁,然后继续操作。