三种常用模式的切换

  • vim启动属于普通模式,按ESC或Ctrl+[即可进入普通模式,
  • 普通模式中按i(插入)或a(附加)进入插入模式,编辑结束后

进入vim

  • 如果直接输入vim也可以打开vim编辑器,但是不会打开任何内容
  • 输入如下命令,可以打开用vim模式打开后门指定的文件,如果该文件不存在会自动创建为new file
vim test.txt
  • 输入如下命令,同样可以打开相应的文件
:e<filepath>

插入模式

在ESC之后进入普通模式,该模式下,可以通过如下按键控制光标的移动插入

命令说明
i在当前光标处进行编辑
I在行首插入
A在行末插入
a在光标后插入编辑
o在当前行后插入一个新行
O在当前行前插入一个新行
cw替换从光标所在位置后到一个单词结尾的字符

重复命令

  • 在普通模式下,.(小数点)表示重复上一次的命令操作
  • 普通模式下输入x,删除第一个字符,输入.会再次删除一个字符,除此之外也可以重复dd的删除操作
  • 执行指定次数相同的命令:
N<command>

练习:

10x//删除10个连续字符
3dd//删除3行文本

复制与粘贴

以下命令在普通模式中使用

y      //复制
yy     //复制游标所在的行,3yy表示复制3行
y^/y0  //复制到行首,y0不含光标所在字符
y$    //复制到行尾,含光标位置
yw    //复制一个单词
y2w   //复制两个单词
yG    //复制至文本末
y1G   //复制至文本开头
p     //粘贴(后)
P     //粘贴到光标前
ddp   //交换上下行

退出

  • 命令模式下退出 vim

命令说明
:q!强制退出,不保存
:q退出
:wq!强制保存并退出
:w <文件路径>另存为
:saveas 文件路径另存为
:x保存并退出
:wq保存并退出
  • 普通模式下的退出

普通模式下按下 Shift+zz 即可保存退出 vim。

删除

命令说明
x删除游标所在的字符
X删除游标所在前一个字符
Deletex
dd删除整行
dw删除一个单词(不适用中文)
d$D删除至行尾
d^删除至行首
dG删除到文档结尾处
d1G删至文档首部
  • 除此之外,你还可以在命令之前加上数字,表示一次删除多行,如:

2dd 表示一次删除 2 行。

替换与撤销

替换和撤销

替换和 Undo 命令都是针对普通模式下的操作:

命令说明
r+<待替换字母>将游标所在字母替换为指定字母
R连续替换,直到按下 Esc
cc替换整行,即删除游标所在行,并进入插入模式
cw替换一个单词,即删除一个单词,并进入插入模式
C(大写)替换游标以后至行末
~反转游标所在字母大小写
{n}u撤销一次或 n 次操作
U(大写)撤销当前行的所有修改
Ctrl+rredo,即撤销 undo 的操作

缩进

  • 普通模式下输入 15G,跳转到 15 行
  • 普通模式下输入 >> 整行将向右缩进(使用,用于格式化代码超爽)
  • 普通模式下输入 << 整行向左回退
  • 普通模式下输入 : 进入命令行模式下对 shiftwidth 值进行设置可以控制缩进和回退的字符数

shiftwidth 命令

shiftwidth 命令是指上一节 >> 命令产生的缩进(可以简写成sw),普通模式下输入 : 进入命令行模式下对 shiftwidth 值进行设置可以控制缩进和回退的字符数。

:set shiftwidth?
:set shiftwidth=10

调整文本位置

命令行模式下输入 :ce(center)命令使本行内容居中:

:ce

命令行模式下输入 :ri(right)命令使本行文本靠右:

:ri

命令行模式下输入 le(left)命令使本行内容靠左:

:le

查找

快速查找

普通模式下输入 / 然后键入需要查找的字符串,按回车后就会进行查找。?/ 功能相同,只不过 ? 是向上而 / 是向下查找。

进入查找之后,输入 nN 可以继续查找。n 是查找下一个内容,N 查找上一个内容。

高级查找

  • 普通模式下输入 \* 寻找游标所在处的单词
  • 普通模式下输入 \# 同上,但 \# 是向前(上)找,\* 则是向后(下)找
  • 普通模式下输入 g\*\*,但部分符合该单词即可
  • 普通模式下输入 g\#\#,但部分符合该单词即可

以上查找 nN 的继续查找命令依然可以用。