vim编辑器操作指南

1. 简介

vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows系统下的notepad(记事本)编辑器。vim(vi improved)是vi编辑器的加强版,比vi更容易使用,vi的命令几乎全部都可以在vim上使用。

2. 四种模式关系

  • 命令模式:vim编辑器的默认模式,在此模式下可以移动光标位置,通过快捷键对文件内容进行复制、粘贴、删除等操作。
  • 编辑模式或输入模式:命令模式下按小写字母a或i可进入。
  • 末行模式:命令模式下输入冒号:可进入,在此模式下可对文件进行查找、替换、保存、退出等操作。
  • 可视化模式:命令模式下按v(可视块)或ctrl+v(可视列)或V(可视行)可进入,在此模式下可做一些块/列/行选操作。
    在这里插入图片描述

3. 命令模式

命令模式下相关操作总结如下:

# 移动光标
gg 移动光标到首行
G  移动光标到末行
100gg 移动光标到第100行

# 翻屏
ctrl+b/PageUp    向上翻屏
ctrl+f/PageDown  向下翻屏

# 复制
yy  复制当前光标所在行
5yy 复制从当前光标所在行开始的多行

# 剪切(剪切不粘贴就是删除)
dd  剪切当前光标所在行
5dd 剪切从当前光标所在行开始的多行

# 粘贴
P(大P) 粘贴在光标所在行之前
p(小p) 粘贴在光标所在行之后

# 删除后,该行变成空白行
D

# 撤销
u # undo

# 恢复(这里的恢复是指恢复上一个撤销)
ctrl+r # redo

4. 末行模式

末行模式下相关操作总结如下:

# 保存与退出操作
:w  保存
:wq 保存并退出
:q! 强制退出但不保存

# 查找
命令模式下输入/ + 关键字即可高亮显示
在搜索结果中切换上/下结果使用N/n,其中N代表上一个结果,n代表下一个结果

# 替换光标所在行的关键词
:s/要替换的关键词/替换后的关键词 + 回车键  #只替换这一行第一个满足条件的结果
:s/要替换的关键词/替换后的关键词/g + 回车键  #替换这一行所有满足条件的结果,g=global

# 替换整个文档的关键词
:%s/要替换的关键词/替换后的关键词 + 回车键  #只替换每一行第一个满足条件的结果
:%s/要替换的关键词/替换后的关键词/g + 回车键  #只替换每一行所有满足条件的结果,g=global

# 显示行号
:set nu  # nu=number

# 取消行号
:set nonu

# 开启paste模式
:set paste

# 关闭paste模式
:set nopaste

补充说明:为什么需要使用paste模式?
答:终端复制来的文本会存入键盘缓存,而vim会把这些内容作为用户键盘输入来处理,这就导致在遇到换行符时,如果vim开启了自动缩进,就会默认把上一行缩进插入到下一行的开头,最终使代码变得混乱不堪。

5. 编辑模式

编辑模式下相关操作总结如下:

# 在光标之前插入内容
命令模式+i 

# 在光标之后插入内容
命令模式+a

6. 可视化模式

可视化模式下相关操作总结如下:

# 复制块内容
step1:命令模式+v进入可视化块模式 
step1:使用方向键选择要复制的块,然后按下y键
step2:再按两下ESC返回命令模式,移动光标到需要粘贴的位置
step3:按p(小p)键粘贴到光标之后,或者按P(大P)键粘贴到光标之前

# 为配置文件添加多行注释
step1:按两下ESC返回命令模式,移动光标到指定位置
step2:按下ctrl+v键进入可视化列模式 # 必须按ctrl+v,而不是v
step3:使用上下键选择需要注释的行
step4:按下I(大写的I键),进入插入模式,输入"#"号注释符
step5:按两下ESC返回命令模式,就可以看到多行注释后的效果了

# 为配置文件移除多行注释
step1:按两下ESC返回命令模式,移动光标到指定位置
step2:按下ctrl+v键进入可视化列模式 # 必须按ctrl+v,而不是v
step3:使用上下键选择需要取消注释的行
step4:直接按Delete键,就可以完成删除注释的操作,并且自动返回到命令模式

7. 其他说明

问题1:为什么有时候vim编辑器打开文件后提示有.swp异常文件?

在这里插入图片描述

答:这是因为在使用vim操作文件之后并没有正常去退出vim编辑器,而是突然关闭终端或者遇到断电等情况,就会出现上述问题。解决方法就是根据上面的提示按下D键删除交换文件就好了。

问题2:退出vim编辑器有几种方式,它们有什么区别?
答:有三种。:q!表示强制退出且不保存文件;:wq表示退出且保存文件;:x在文件没被修改时等价于:q!,在文件被修改时等价于:wq:wq:x有一个重要的区别就是,当文件没有被修改时,使用:wq退出,文件的修改时间会被更新,但是使用:x不会。

猜你喜欢

转载自blog.csdn.net/weixin_43934075/article/details/124722202
今日推荐