Vim 基本命令入门


  1. 1. Vim 基本概念
  2. 2. 常用命令
    1. 2.1. 插入命令
    2. 2.2. 定位命令
    3. 2.3. 删除命令
    4. 2.4. 复制和粘贴
    5. 2.5. 替换和撤销命令
    6. 2.6. 搜索和搜索替换命令
    7. 2.7. 保存和退出命令
    8. 2.8. 其它使用技巧
    9. 2.9. 小问题记录
    10. 2.10. 总结

_ _20180628165722
最近在学习 Linux,前面的基础知识学习了一下,进入了 Vim 的学习环节。感觉这个编辑器还是可以的,有特色,鼠标都不用,蛮炫酷。对于基本
的使用来讲还是很方便的。下面是一些我的学习笔记,大致就是一些常用的命令吧。这个博客就是使用 Vim 写的一个 Markdown 文档,就当是给自己练练手,加深学习的印象了。

Vim 基本概念

Vim 是从 vi 发展而来的一个功能强大、高度可定制的文本编辑器,是一款开源的软件。Vim 的基本功能模式如下图:

Vim 工作模式图

由图可知,Vim 基本包括三种工作模式:命令模式、插入模式和编辑模式。在终端中通过 vi 命令即可使用 Vim 打开对应文件,从而进入命令模式,此时输入的任何文本信息都会被当做命令,回车即可执行输入的这些命令。要想编辑文本信息,需要进入编辑模式,此时输入命令 aoi都可以进入插入模式。其中,a 代表在当前光标位置的后方插入,o 代表在当前光标的下面一行插入,i 代表在当前光标位置的前面插入。此外,AOI也可以进入插入模式,但是它们意义与其小写模式正好相反。A 代表在行尾插入,O 代表在当前光标位置的上面一行插入,I 代表在行首开始插入。进入插入模式之后,按“ESC”键即可退出插入模式,回到命令模式。

常用命令

插入命令

命令 含义
a 在光标当前所在位置的后面开始插入
A 在光标所在行行尾开始插入
i 在光标当前所在位置的前面开始插入
I 在光标所在行行首开始插入
o 在光标所在行的下一行开始插入
O 在光标所在行的上一行开始插入

定位命令

命令 含义
:set nu 设置行号
:set nonu 取消行号
gg 跳转到第一行
G 跳转到最后一行
nG 跳转到第n行
:n 跳转到第n行
$ 跳转到行尾
0 跳转到行首

其中,值得注意的是,命令 :n 与命令 nG 具有同样的功能,从字面上看,:n 更容易记住,所以我一般使用 :n命令。
具体使用方法:

1
:100

在命令模式下,输入上方的命令,回车就回跳转到第一百行。

这些常用的跳转命令最好记住。

删除命令

命令 含义
x 将光标所在处的字符进行剪切(删除)
nx 将光标之后的n的字符进行剪切(删除)
dd 将光标所在行进行剪切(删除)
ndd 将光标所在行之后的n行进行剪切(删除)
dG 将光标所在行到文章末尾进行剪切(删除)
D 将光标所在处到行尾进行剪切(删除)
:n1,n2d 将n1到n2行内容进行剪切(删除)

常用的是 xnxddndd

复制和粘贴

命令 含义
yy 复制当前行
nyy 复制当前行以下的n行
dd 剪切当前行
ndd 剪切当前行之后的n行
p 粘贴在当前光标所在行下
P 粘贴在当前光标所在行上

替换和撤销命令

命令 含义
r 取代光标所在处的字符
R 进入替换模式,类似于 Windows 中的 insert
u 撤销上一次操作

注意点

  • r 只替换当前光标所在处的字符,命令模式下按 r 然后按新的字符。
  • R 进入替换模式,按 ESC 才能退出。

搜索和搜索替换命令

命令 含义
/string 搜索指定字符串,如果要忽略大小写,先输入命令 :set ic
n 搜索指定字符串的下一个位置
:%s/old/new/g 全文替换指定字符串
:n1,n2s/old/new/g 在指定范围内替换指定字符串

注意点

  • %s代表全文搜索。
  • n1,n2s代表在n1行到n2行范围内搜索。
  • g代表不会确认是否替换,如果最后是c的话,就回挨个询问是否替换。

保存和退出命令

命令 含义
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ 保存修改并退出的快捷键
:q! 不保存修改强制退出
:wq! 保存修改并强制退出

其它使用技巧

命令 含义
:r 文件名 将指定文件的内容导入到光标所在位置
:r !命令 将命令运行结果导入到光标所在位置
:map 快捷键 触发命令 自定义快捷键
:ab old new 在编辑时自动替换一些字符

注意点

  • :r !命令 是一个很好用的命令,比如:r !date可以把当前日期时间快速导入到当前光标位置。
  • :map 快捷键 触发命令用于自定义快捷键,在命令模式下,输入“:map ”然后输入“Ctrl+V+P”,会出现“^P”,代表快捷键为“Ctrl+P”。最后一部分触发命令是指按下快捷键后,触发的命令,比如“I#”,这代表快捷方式触发的命令为“I#”,然后按下“ESC”键。含义即为在行首添加“#”井号,快速注释。
  • 连续行注释:n1,n2s/^/#/g,代表将指定范围内的行首替换为“#”井号。其中,“^”代表行首。
  • :ab是编辑时快速替换命令,当你自定义替换字符串后,当你在编辑模式下输入要替换的字符串时,空格或者回车后,这个就字符串就回立即被你定义的新字符串替换掉,很方便。

小问题记录

  • 习惯了Ctrl+S保存修改,在 Vim 中也喜欢按,结果按了之后就出问题了,无法输入了。解决方法就是按Ctrl+Q,退出锁屏模式。
  • 编辑模式下按Ctrl+Z不是撤销更改,撤销更改应该进入命令模式,按u。编辑模式下按Ctrl+Z是强制将进程加入后台运行,会生成一个“.swap”交换文件。要正常编辑,可以手动删除交换文件,由于交互文件是隐藏文件,所以需要按ls -a查看。

总结

以上只是一些基本的 Vim 命令,学会使用这些命令还是能够大大地增强学习乐趣。另外要想学好 Vim,最好每个命令都自己试一试,亲身体验过后,还是觉得它非常方便的。