1、移动光标
motion
——表示操作范围的指令
按键 | 含义 |
---|---|
h | ← |
j | ↓ |
k | ↑ |
l | → |
0 | 将光标定位到行首 |
^ | 同上 |
$ | 将光标定位到行尾的位置 |
b | 将光标定位到光标所在的单词的起始处(begin) |
e | 将光标定位到光标所在单词的结尾处(end) |
w | 将光标定位到下一个单词的起始处 |
gg | 将光标定位到文件的开头 |
G | 将光标定位到文件的末尾 |
H | 光标移动到这个屏幕最上方那一行的第一个字符 |
M | 光标移动到这个屏幕中央那一行的第一个字符 |
L | 光标移动到这个屏幕最下方那一行的第一个字符 |
n[Enter] | 光标向下移动n行 |
Ctrl + f | 屏幕【向下】移动一页 |
Ctrl + b | 屏幕【向上】移动一页 |
Ctrl + d | 屏幕【向下】移动半页 |
Ctrl + u | 屏幕【向上】移动半页 |
2、模式
2.1、基本模式
- 普通模式
- 插入模式:小写字母
i
进入插入模式,Esc
退出并进入普通模式
进入插入模式的各种方法
敲击按键 | 含义 |
---|---|
i | 在光标的前边进入插入模式 |
I(大写i ) | 在光标所在行的行首进入插入模式 |
a | 在光标的后边进入插入模式 |
A | 在光标所在行的行尾进入插入模式 |
o | 在光标所在行的下方插入空行并进入插入模式 |
O | 在光标所在行的上方插入空行并进入插入模式 |
s | 删除光标指定的字符并进入插入模式 |
S | 将光标所在行清除并进入插入模式 |
- 可视模式
- 选择模式
- 命令行模式
- Ex模式
2.2、派生模式
- 操作符等待模式
- 插入普通模式
- 插入可视模式
- 插入选择模式
- 替换模式
3、页面跳转
按键 | 含义 |
---|---|
[Ctrl]+[f] | 屏幕向下移动一页,相当于page down按键 |
[Ctrl]+[b] | 屏幕向下移动一页,相当于page up按键 |
4、查找与替换
按键 | 含义 |
---|---|
/word | 向下寻找一个名称为word的字符串。例如/mark |
?word | 向上寻找一个名称为word的字符串。例如?mark |
n | 向后查找下一个。如输入/mark后,再按下n,表示继续向下查找“mark”这个字符串 |
N | 向前查找前一个。如输入?mark后,再按下n,表示继续向下查找“mark”这个字符串 |
:n1,n2s/word1/word2/g | 在第n1和n2行之间寻找word1,并将word1替换为word2 |
1,$s/word1/word2/g | 在第1行和最后一行之间寻找word1,并将word1替换为word2 |
:1,$s/word1/word2/gc | 在第1行和最后一行之间寻找word1,并将word1替换为word2。且在替换前提示用户确认(confirm)是否需要替换 |
5、删除
按键 | 含义 |
---|---|
x,X | 在一行字中,x为向后删除一个字符,X为向前删除一个字符 |
nx | 连续向后删除n个字符 |
dd | 删除光标所在的那一整行 |
ndd | 删除光标所在的向下n行 |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d0 或 d^ | 删除从光标所在处到该行的最前面一个字符 |
d$ | 删除从光标所在处到该的最后一个字符 |
c | 重复删除多个数据,例如向下删除10行 【10cj】 |
6、复制
按键 | 含义 |
---|---|
yy | 复制光标所在的哪一行 |
nyy | 复制光标所在的向下n行 |
y1G | 复制光标所在行到第一行的数据 |
yG | 复制光标所在行到最后一行的数据 |
y0 或 y^ | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到改行行尾的所有数据 |
7、粘贴、合并、撤销
按键 | 含义 |
---|---|
p,P | p为将已复制的数据在光标下一行粘贴,P为粘贴在光标上一行。例如,目前光标在第20行,且已经复制了10行数据。则按下p后,那10行数据会粘贴在原本的20行之后,即由21行开始粘贴。但是如果按下P,那么原本的的第20行会被变成30行 |
J | 将光标所在行与下一行的数据合成同一行 |
u | 复原上一个操作 |
8、行号
按键 | 含义 |
---|---|
:set nu | 显示行号,设置之后,会在每一行的前缀显示该行的行号 |
:set nonu | 取消行号 |
9、可视区块(Visual Block)
需求:将文件hosts.txt中的每一行文本加上一列host[n]
例如192.168.1.1 host1.class.net host1
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
192.168.1.5 host5.class.net
192.168.1.6 host6.class.net
192.168.1.7 host7.class.net
192.168.1.8 host8.class.net
192.168.1.9 host9.class.net
在传统或现代的图形编辑器似乎不容易达到这个需求,但是Vim是办得到的,那就使用可视区块(Visual Block)。当我们按下v或V或【Ctrl】+ v,这个时候光标移动过的地方开始反白,这三个按键的意义分别是:
按键 | 含义 |
---|---|
v | 字符选择,会将光标经过的地方反白选择 |
V | 行选择,会将光标经过的行反白选择 |
[Ctrl] + v | 可视区块,可以用矩形的方式选择数据 |
y | 将反白的地方复制起来 |
d | 将反白的地方删除掉 |
p | 将刚刚复制的区块,在光标所在出粘贴 |
实践操作:
-
将光标移动到第一行的host的那个h上面,然后按下【Ctrl】+ v,左下角出现可视区块示意字样:
-
将光标移动到最底部,此时光标移动过的区域会反白
-
此时你可以按下【y】进行复制,反白的区块就会消失不见。
-
最后,将光标移动到第一行的最右边,并且在用编辑模式向右按两下空格键,回到一般命令模式后,再按下【p】后,即可完成。
10、多文件编辑
vim file1 file2
:files #查看编辑的文件数据
:n #切换文件
11、多窗口功能
:sp # 打开一个新窗口
12、配置
vim ~/.vimrc