vim编辑器快速上手(更新中)

一、vi 和 vim

1. vi 简介

  • vi 是 versual interface 的简称,是 Linux 中最经典的文本编辑器
  • vi 的核心思想——让程序员的手始终保持在键盘的核心区域,就能完成所有的编辑操作

2. vi 的特点

  • 没有图形界面功能强大的编辑器;
  • 只能编辑文本内容,不能改变字体或排版;
  • 不支持鼠标操作
  • 没有菜单
  • 系统管理服务器管理编辑文件时,其功能永远不是图形界面编辑器所能比拟的

3. vim

  • 在很多 Linux 发行版中,把 vi 做成 vim 的软连接
  • vim 是从 vi 发展而来的一个文本编辑器,支持代码补全编译错误跳转等功能,被称为编辑器之神

二、vi打开文件

1. 打开或者新建文件

vi 文件名

  • 如果文件已经存在则会直接打开,否则会新建一个文件

2. 打开文件并且至制定行

  • 至制定行

vi 文件名 +行号

  • 至文件开头

vi 文件名

  • 至文件结尾

vi 文件名 +

a.扩展

  • vi 中显示行号

:set nu 或者 :set number

  • vi 中永久现实行号

在终端输入vim ~/.vimrc
在配置文件中输入set nu 或者 set number 就可以了

3. 删除交换文件

  • 进入 vi 编辑器后提示存在交换文件的异常,解决办法是直接按英文输入法的 d/D删除掉即可

三、vi 的三种基本工作方式

1. 命令模式

  • 打开文件首先进入命令模式,是 vi 的入口
  • 通过命令对文件进行常规的编辑操作,如定位、翻页、复制、粘贴、删除等

2. 末行模式

  • 执行保存、退出等操作
  • 是 vi 的出口
  • 末行模式命令
命令 英文 功能
w write 保存
q quit 退出,如果没有保存则会提示保存
q! quit 强制退出,不保存
wq write & quit 保存并退出
x 保存并退出

3. 编辑模式

  • 正常编辑文本
  • 不支持鼠标操作

vim编辑器快速上手(更新中)

四、vi命令

1. 移动命令

1) 方向和行内移动

a. 方向移动

命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 无名指

b. 行内移动

命令 英文 功能
w word 向后移动一个单词
b back 向前移动一个单词
0 zero 首行
^ 行首,第一个不是空白字符的位置
$ 行尾

2)行数跳转和上下翻页

a. 行数移动

命令 英文 功能
gg go 文件顶部
G go 文件末尾
数字gg go 移动到 数字 对应行数
数字G go 移动到 数字 对应行数
:数字 移动到 数字 对应行数

b. 上下翻页

命令 英文 功能
Ctrl + b back 向上翻页
Ctrl + f forward 向下翻页
H head 光标至 屏幕顶部
M middle 光标至 屏幕中间
L low 光标至 屏幕底部

3)段落切换和括号切换

a. 段落移动

  • vi 中使用空行来区分段落
  • 在程序开发时,通常一段功能相关的代码写在一起
命令 功能
{ 光标移动至 上一段
} 光标移动至 下一段

b. 括号切换

命令 功能
% 括号匹配及切换

4)标记

命令 英文 功能
mx mark 添加标记x,x 是 a-z 或 A-Z 之间的任意一个字母
'x 返回x标记的位置
  • 添加标记的行如果被删除,标记同时被删除
  • 如果其他行添加了相同的标记,则之前添加的标记就会被替换掉

2. 选中命令

  • 选中文本,可视模式
  • esc键放弃选中文本,返回至命令模式
命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl + v 可视块模式 垂直方向选中文本
  • 可视模式下可以和移动命令连用

3. 撤销和删除

1)撤销和恢复撤销

命令 英文 功能
u undo 撤销上次的命令
Ctrl + r redo 恢复撤销的命令

2)删除文本

命令 英文 功能
x cut 删除光标所在字符或选中的文字
d(移动命令) delete 删除移动命令对应的内容
dd delete 删除光标所在行,可以ndd复制多行
D delete 从光标位置删除至行尾
  • 删除命令可以和移动命令连用,列如下:
命令 功能
dw 从光标位置删除到单词末尾
d0 从光标位置删除到一行的开头
d} 从光标位置删除到段落的结尾
ndd 从光标位置向下连续删除 n 行
d代码行G 从光标所在行 删除到 限定代码行 之间的所有代码
d'x 从光标所在行 删除到 标记a 之间的所有代码

4. 复制和粘贴

  • 在 vi 中提供一个被复制文本的缓存区
    • 复制命令将选中的文本保存在缓存区
    • 删除命令将删除的文本保存在缓存区
    • 在需要的位置使用粘贴命令将复制的文本插入
命令 英文 功能
y(移动命令) copy 复制
yy copy 复制一行,可以 nyy 复制多行
p paste 粘贴
  • 提示
  • 命令d, x类似于图形界面的剪切操作——Ctrl + x
  • 命令y类似于图形界面的复制操作——Ctrl + c
  • 命令p类型于图形界面的粘贴操作——Ctrl + v
  • vi 的文本缓存区只有一个,如果后续做了复制、剪切操作,之前缓存区中的内容会被替换
  • 注意
  • vi 中的文本缓存区与系统的剪切板不是一个
  • 在其他软件中Ctrl + c复制的内容在 vi 中粘贴只能使用鼠标

5. 查找和替换

1)替换

命令 英文 功能 工作模式
r replace 替换当前字符 命令模式
R replace 替换当前行光标后的字符 替换模式
  • 替换命令的作用是不用进入编辑模式,对文件进行轻量级的修改

2)查找

a. 常规查找

命令 功能
/str 查找str
  • 查找到制定内容之后,使用next查找下一个出现的位置
  • n #查找下一个
  • N #查找上一个
  • 如果不想看到高亮显示,随便查找一个不存在的字符串即可

b. 单词快速匹配

命令 功能
* 向后 查找当前光标所在单词
# 向前 查找当前光标所在单词
  • 在开发中,使用单词快速匹配可以快速看到这个单词在什么位置被使用过

6. 缩进和重复执行

命令 功能
>> 向右增加缩进
<< 向左减少缩进
. 重复上次命令
  • 缩进一次增加或删除4个空格
  • 可视模式下,缩进只需要一个 ><