Vi与Vim编辑器命令笔记的精髓

服务器

浏览数:42

2019-11-2

1、Vim & Emacs

1.1、神奇的传说

  • Emacs是神的编辑器
  • Vim是编辑器之神
  • Vim&Emacs

1.2 Vim的特点

Vim -无处不在的文本编辑器,Vim是一个高度可配置的文本编辑器,可以有效地创建和更改任何类型的文本。在大多数UNIX系统和Apple OS X中,它都被包含为“vi”。

  • Vim是岩石稳定,并不断发展成为更好
  • 持久的多级撤销树
  • 广泛的插件系统
  • 支持数百种编程语言和文件格式
  • 强大的搜索和替换功能
  • 与许多工具集成

1.3 10个突出的特点让你爱上vim编辑器

2、 Vi & Vim键盘蓝图

  • Vi&Vim键盘蓝图
  • vim代码图解

3、Vi & Vim工作模式蓝图

  • Vi & Vim工作模式蓝图

4、可视化命令

  • 可视化模式下,可以和移动命令连用,例如:ggVG能够选中所有内容
命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl + v 可视块模式 垂直方向选中文本

5、撤销和恢复撤销

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

6、删除文本

命令 英文 功能
x cut 删除关闭所在的字符,或者选中文字
d(移动命令) delete 删除移动命令对应的内容
dd delete 删除光标所在行,可以ndd复制多行
D delete 删除至行尾

提示:如果使用可视模式,已经选中了一段文本,那么无论使用 d 还是 x 都可以删除选中文本
删除命令可以和移动命令连用,以下是常见的组合命令

命令 功能
dw 从光标位置删除到单词末尾
d0 从光标位置删除一行的起始位置
d} 从光标位置删除段落结尾
d代码G 从光标所在行,删除到指定代码行之间的所有代码
ndd 从光标位置向下连接删除N行
d’a 从光标所在行,删除到标记a之间的所有代码

7、移动(程序)

7.1、 段落移动

  • vi 中使用空行来区分段落
  • 在程序开发时,通常一段功能相关的代码会写在一起–之间没有空格
命令 功能
{ 上一段
} 下一段

7.2、括号切换

  • 在程序中,(),[],{}使用频率很高,而且都是成对出现
命令 功能
% 括号匹配及切换

7.3、上、下、左、右

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

7.4、行内移动

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

7.5、行数移动

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

7.6、屏幕移动

命令 英文 功能
Ctrl+b back 向上翻页
Ctrl+f forward 向下翻页
H Head 屏幕顶部
M Middle 屏幕中间
L Low 屏幕底部

7.7、复制、黏贴

  • vi 中提供有一个被复制文本的缓存区
  • 复制命令会将选中的文字保存在缓冲区
  • 删除命令删除的文字会保存缓冲区
  • 在需要的位置,使用黏贴命令可以将缓冲区的文字插入到光标所在位置
命令 英文 功能
y(移动命令) copy 复制英文单词后面的y
yy copy 复制一行,可以nyy复制多行
p paste 黏贴

在其他软件中使用Ctrl+C复制的内容,都不能在vi中通过p命令黏贴,可以在编辑模式中使用鼠标右键黏贴

7.8、 替换

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

7.9 缩排和重复执行

命令 功能
>> 向右增加缩进
<< 向左减少缩进
. 重复上次命令

缩排命令在开发程序时,统一增加代码的缩排比较有用

  • 一次性在选中代码前增加4个空格,就叫做增加缩排
  • 一次性在选中代码前删除4个空格,就叫做减少缩排

可视模式下,缩排命令只需要使用一个 > 或 < ,在程序中,缩进通常用来表示代码的归属关系

  • 前面空格越少,代码的级别越高
  • 前面空格越多,代码的级别越低

8、 查找

8.1、 常规查找

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

8.2、 单词匹配查找

命令 功能
. 向后查找当前光标所在单词
# 向前查找当前光标所在单词
  • 在开发过程中,通过单词快速匹配,可以快速看到这个单词在其他的位置使用过

8.3、 查找并替换

  • 在vi中查找和替换命令需要在末行模式下执行
  • 命令格式为
:%s///g

8.4 全局替换

  • 一次性替换文件中的所有出现旧文本
  • 命令格式为
:%s/旧文本/新文本/g

8.5、 可视区域替换

  • 先选中,要替换文章的范围
  • 命令格式为
:s/旧文本/新文本/g

8.6、确认替换

  • 如果把末尾 g 改成 gc 在替换的时候,会提示 ! 推荐使用,有一歩确认动作
  • 命令格式为
:%s/旧文本/新文本/gc

参数描述

简称 英文 功能
y yes 替换
n no 不替换
a all 替换所有
q quit 退出替换
l last 最后一个,并把光标移动到行首
^E 向下滚屏
^Y 向上滚屏

9、插入命令

  • 在vi 中除了常用的 i 进入编辑模式外,还提供了以下命令,同样可以进入编辑模式
命令 英文 功能 说明
i insert 在当前字符前插入文本 常用
I insert 在行首插入文本 较常用
a append 在当前字符后添加文本
A append 在行末添加文本 较常见
o 在当前行后面插入——空行 常用
O 在当前行前面插入——空行 常用

10、分屏命令

  • 属于vi 的高级命令 ,可以同时编辑和查看多个文件

10.1 、末行命令扩展

  • 末行命令主要是针对文件进行操作的:保存、退出、保存&退出、搜索 & 替换 、另存、新建、浏览文件
命令 英文 功能
:e . edit 会打开内置的文件浏览器、浏览要当前目录下的文件
:n文件名 new 新建文件
:w文件名 write 另存为,但是仍然编辑当前文件,并不会切换文件

切换文件之前,必须保证当前文件以及被保存

10.2 、末行命令

命令 英文 功能
:w write 保存
:q quit 退出,如果没保存,不允许退出
:q! quit 强行退出,不保存退出
:wq write &quit 保存并退出
😡 保存并退出
:%s///gc 确认搜索并替换

11、开发工具

  • gVim Easy 8.1
  • gVim Read only 8.1
  • gVim 8.1

12、参考&推荐学习

作者:寅务