原理介绍
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,是类Unix系统用户最喜欢的文本编辑器。
Vim特点
解放程序员的双手,这一点非常重要,使得程序员在编辑文档时可以不再依赖于鼠标
Vim具有高效率的移动,在行内,文件内可以随意的移动,可以节约大量时间。
Vim具有高效率的输入,可以有很多的插入方式,复制,粘贴,剪切都非常方便。
Vim关系图
Vim应用
进入Vim
在终端中输入vim filename 进入Vim,如果存在该文件则编辑该文件,如果不存在该文件则创建一个新文件并编辑该文件
插入
一般是由命令模式进入插入模式
符号 | 说明 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
光标移动
在命令模式下
符号 | 说明 |
---|---|
k | 光标向上移动一行 |
nk | 光标向上移动n行 |
j | 光标向下移动一行 |
nj | 光标向下移动n行 |
h | 光标向左移动一行 |
nh | 光标向左移动n行 |
l | 光标向右移动一行 |
nl | 光标向右移动n行 |
符号 | 说明 |
---|---|
b | 光标移动到前一个单词的首字母上 |
nb | 光标移动到前n个单词的首字母上 |
w | 光标移动到后一个单词的首字母上 |
nw | 光标移动到后n个单词的首字母上 |
ge | 光标移动到前一个单词的尾字母上 |
nge | 光标移动到前n个单词的尾字母上 |
e | 光标移动到后一个单词的尾字母上 |
ne | 光标移动到后n个单词的尾字母上 |
n |
光标移动到后n个字符上 |
符号 | 说明 |
---|---|
gg | 光标移动到第一行首 |
G | 光标移动到最后一行首 |
ngg或nG或:n | 光标移动到第n行首 |
- | 光标移动到上一行行首 |
n- | 光标移动到上n行行首 |
+ | 光标移动到下一行行首 |
n+ | 光标移动到下n行行首 |
0 | 光标移动到该行行首 |
$ | 光标移动到该行行尾 |
n$ | 光标移动到下n行行尾 |
^ | 光标移动到该行首字母 |
符号 | 说明 |
---|---|
Home | 光标移动到该行行首(可以在插入模式下使用) |
End | 光标移动到该行行尾(可以在插入模式下使用) |
删除(剪切)字符
在命令模式下
符号 | 说明 |
---|---|
x | 删除光标所在字符 |
nx | 删除光标处及后n-1个字符 |
X | 删除光标前一个字符 |
nX | 删除光标前n个字符 |
dd | 删除光标所在行 |
ndd | 删除光标所在行及后n-1行 |
dw | 删除光标所在处的单词 |
dnw | 删除光标所在处及后n-1个单词 |
dG | 删除光标所在行到文件末尾的所有行 |
dgg | 删除光标所在行到文件开始的所有行 |
d/word | 删除从光标所在处到单词word的所有文本 |
D | 删除光标所在处到该行尾的所有内容 |
:nd | 删除第n行 |
:n1,n2d | 删除n1行到n2行 |
复制
在命令模式下
符号 | 说明 |
---|---|
yy | 复制光标所在行 |
nyy | 复制光标所在行及后n-1行 |
yw | 复制光标所在处的单词 |
ynw | 复制光标所在处及后n-1个单词 |
yG | 复制光标所在行到文件末尾的所有行 |
ygg | 复制光标所在行到文件开始的所有行 |
y/word | 复制从光标所在处到单词word的所有文本 |
Y | 复制光标所在处到该行尾的所有内容 |
:ny | 复制第n行 |
:n1,n2y | 复制n1行到n2行 |
粘贴
在命令模式下
符号 | 说明 |
---|---|
p | 粘贴在当前光标下 |
P | 粘贴在当前光标上 |
可视
在命令模式下
符号 | 说明 |
---|---|
v | 进入可视(选择)模式 |
d | 删除光标内容 |
y | 复制光标内容 |
可视
在命令模式下
符号 | 说明 |
---|---|
v | 进入可视(选择)模式 |
y | 复制光标内容 |
d | 剪切光标内容 |
撤回和恢复
在命令模式下
符号 | 说明 |
---|---|
u | 复原前一次操作 |
Ctrl + r | 重做上个动作 |
翻页操作
在命令模式下
符号 | 说明 |
---|---|
Ctrl + f | 屏幕向下移动一页 |
Ctrl + b | 屏幕向上移动一页 |
Ctrl + d | 屏幕向下移动半页 |
Ctrl + u | 屏幕向下移动半页 |
设置行号
在命令模式下
符号 | 说明 |
---|---|
:set nu | 显示所有的行号 |
:set nonu | 取消显示行号 |
搜索
在命令模式下
符号 | 说明 |
---|---|
/word | 向光标之下寻找/word的字符串 |
?word | 向光标之上寻找/word的字符串 |
n | 继续向下查找下一个匹配的字符串 |
N | 继续向上查找下一个匹配的字符串 |
:noh | 取消高亮显示 |
:set ic | 查找忽略大小写 |
:set noic | 查找不忽略大小写 |
替换
在命令模式下
符号 | 说明 |
---|---|
r | 取代光标处的字符串 |
R | 从光标处开始替换字符,Esc结束替换 |
:n1,n2s/word1/word2/g | 在n1到n2行之间将word1换成word2 |
:%s/word1/word2/g | 将文档中所有的word1换成word2 |
:%s/word1/word2/g | 将文档中所有的word1换成word2,取代前询问 |
替换
在命令模式下
符号 | 说明 |
---|---|
r | 取代光标处的字符串 |
R | 从光标处开始替换字符,Esc结束替换 |
:n1,n2s/word1/word2/g | 在n1到n2行之间将word1换成word2 |
:%s/word1/word2/g | 将文档中所有的word1换成word2 |
:%s/word1/word2/g | 将文档中所有的word1换成word2,取代前询问 |
:ab word1 word2 | 文档中以后出现的word1字符自动转换为word2 |
定义快捷键
在命令模式下
:map ctrl+v+字符 命令 可以用来定义快捷键
符号 | 说明 |
---|---|
:map ctrl+v+p I# |
按ctrl+v+p则会在行首加#注释 |
:map ctrl+v+H iHello World ! |
按ctrl+v+H会插入Hello World ! |
连续行注释
在命令模式下
符号 | 说明 |
---|---|
:n1,n2s/^/xxx/g | 在n1到n2行的行首加xxx |
:n1,n2s/^xxx//g | 将n1到n2行行首的xxx删去 |
:n1,n2s/^////g | 在n1到n2行的行首加//,/代表/ |
保存和退出
在命令模式下
符号 | 说明 |
---|---|
:w | 保存修改 |
:w filename | 另存为filename文件 |
:Wq或:wq!或ZZ | 保存修改并退出 |
:q! | 不保存修改并退出 |
Vim小结
Vim作为一款古老的文本编辑器,但是它具有许多有用的功能,使其可以与现代文本编辑器竞争,也是作为Linux系统自带的文本编辑器Vi的升级版,可以完全解放双手,对于程序员来说,Vim是必不可少的技能之一。