Vim 的几种模式

之前记录的部分笔记:Vim

  • 正常模式:可以使用快捷键命令,或按 : 输入命令行。
  • 插入模式:可以输入文本,在正常模式下,按 iao 等都可以进入插入模式。
  • 可视模式: 在可视模式下,移动光标可以选择文本。
    • 正常模式下按 v 可以进入可视模式,
    • V 进入可视行模式, 总是整行整行的选中。
    • ctrl + v 进入可视块模式。
  • 替换模式:此时新输入的文本将直接替代/覆盖已经存在的内容,直至点击ESC键返回常规模式
    • 正常模式下,按R进入。

移动光标

以下移动都是在正常模式下。

1、基本移动

上下左右移动除了方向键以外,还可以通过以下操作进行

也可以配合数字使用,比如在正常模式下输入3h, 则光标向左移动3个字符。

命令说明
h或退格左移一个字符
l或空格右移一个字符
j下移一行
k上移一行
+或Enter把光标移至下一行第一个非空白字符
-把光标移至上一行第一个非空白字符

移动定位

命令说明
0移动到行首
$移动到行尾
:n移动到第n行( :set number 显示行)
:$移动到最后一行
gg到文件头部
G到文件尾部
^移动到本行第一个非空白字符
W移动到下一个单词开头,但忽略一些标点
B移动到上一个单词开头,但忽略一些标点

2、翻屏

命令说明
ctrl+f下翻一屏
ctrl+b上翻一屏
ctrl+d下翻半屏
ctrl+u上翻半屏
ctrl+e向下滚动一行
ctrl+y向上滚动一行
zz将当前行移动到屏幕中央
zt将当前行移动到屏幕顶端
zb将当前行移动到屏幕底端

3、标记

使用标记可以快速移动。到达标记后,可以用 Ctrl + o 返回原来的位置。

Ctrl + oCtrl + i 很像浏览器上的后退和前进。

命令说明
m{a-z}标记光标所在位置,局部标记,只用于当前文件
m{A-Z}标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效
`{a-z}移动到标记位置
:marks显示所有标记
:delmarks a c-f删除标记 a 以及 c、d、e、f

比如说:

1
2
3
4
5
vim test.py  // 打开 test.py
:16 // 跳转到第 16 行
mp // 在当前行做标记为 p
G // 跳转到文件的最后一行
`m // `是反引号,跳转到 p 标记处

复制粘贴

命令说明
y复制在可视模式下选中的文本
yy 或者 Y复制整行文本
m,ny复制m行到n行的内容( :set number 显示行)
y$从光标当前位置复制到行尾
y0从光标当前位置复制到行首
yG复制光标以下的所有行
p(小写)在光标之后粘贴
P(大写)在光标之前粘贴

查找和替换

首先需要按 : 进入命令行

1、查找

命令说明
/something在后面的文本中查找something
?something在前面的文本中查找something
n向后查找下一个
N向前查找下一个

2、替换

首先需要按 : 进入命令行

命令说明
s/old/new用new替换当前行第一个old
s/old/new/g用new替换当前行所有的old
%s/old/new/g用new替换文件中所有的old
%s/^/xxx/g在每一行的行首插入xxx,^表示行首
%s/$/xxx/g在每一行的行尾插入xxx,$表示行尾

所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/igc,加上 i 则忽略大小写(ignore)