所有的 Unix/linux 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。
Vim是从 vi 发展出来的一个文本编辑器。提供了代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和末行模式(Last line mode)
1. 如何进入插入模式
命令 | 说明 |
i | 光标前一个字符插入 |
I | 行首插入 |
a | 光标后一个字符插入 |
A | 行末插入 |
o | 向下新开一行,插入行首 |
O | 向上新开一行,插入行道 |
2. 如何进入命令模式
按ESC 从插入模式或末行模式进入命令模式
在命令模式下移动光标:
3. 不同模式间的互相转换
命令模式->末行模式 | 输入冒号 : |
末行模式->命令模式 | 输入两次 ESC |
4. 命令模式的命令:
命令 | 说明 |
0 | 移动至绝对行首 |
^ | 移动至相对行首 |
$ | 移动至行尾 |
j | 向下移动 |
k | 向上移动 |
h | 向左移动 |
l | 向右移动 |
M | 移动至中间行 |
L | 移动至最后一行的行首 |
行号+G | 移动至指定行 |
G | 移动至文件末尾 |
gg | 移动至文件开头 |
w/W | 向后移动一个字 |
b | 向前移动一个字 |
{ | 按段移动,上移 |
} | 按段移动,下移 |
ctl+d | 向下翻半屏 |
ctl+u | 向上翻半屏 |
ctl+f | 向下翻一屏 |
ctl+b | 向上翻一屏 |
4.1 关于删除
1
2
3
4
命令 | 说明 |
x | 删除光标后一个字符 |
X | 删除光标前一个字符 |
dd | 删除光标所光标所在行 |
n | dd删除光标后指定行数 |
D | 删除光标后本行所有内容,包含光标所在字符 |
d0 | 删除光标前本行所有内容,不包含光标所在字符 |
全部删除 | 按esc后,然后dG |
dw | 删除光标开始位置字符,包含光标所在字符 |
4.2 关于撤销命令
4.3 关于重复命令
4.4 关于文本行移动
4.5 关于选择行
v 进入“可视”,按键盘选择行
4.6 关于复制/粘贴
命令 | 说明 |
yy | 复制当前行 |
n yy | 复制n行 |
yw | 复制单词 |
p | 在光标所在位置向下新开辟一行,粘贴 |
4.7 关于复制多行
任务:将第9行至第15行的数据,复制到第16行
:9,15 copy 16 或:9,15 co 16
由此可有:
:9,15 move 16 或 :9,15 m 16 将第9行到第15行的文本内容到第16行的后面
复制多行,然后粘贴。
1. 将光标移动到要复制的文本开始的地方,按v
进入可视模式。
2. 将光标移动到要复制的文本的结束的地方,按y复制。此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式。
3. 移动光标到文本结束的地方,按p
粘贴。
全部删除:按esc后,然后dG
全部复制:按esc后,然后ggyG
4.8 关于可视模式
命令 | 说明 |
v | 按字符移动,选中文本 |
V | 按行移动,选中文本可视模式可以配合 d,y,>>,<<实现对文本块的删除,复制,左右移动 |
4.9 末行模式下 . 点号表示当前行; $ 表示末行
例如,在末行模式下输出
命令 | 说明 |
1,.-3y | 表示复制第1行至光标所在位的前3行 |
1,.+3y | 表示复制第1行至光标所在位的后3行 |
.,.+3d | 表示删除光标所在行至光标往行3行 |
4.10 关于替换操作
4.11 关于查找命令
命令 | 说明 |
/str | 光标位置开始向下查 |
?str | 光标位置开始向上查找 |
n | 下一个 |
N | 上一个 |
例如,查找Sock
4.12 关于替换命令s
把abc 全部替换成123
末行模式下,将光标所在行的abc替换成123
:%s/abc/123/gi % 表示全部,整个文档;
g 表示全部替换,
i 表示忽略大小写,不加i表示区别大小写
末行模式下,将第一行至第10行之间的abc替换成123
:1,10s/abc/123/g
末行模式下,感叹号!+命令可以在vi模式下执行命令,例如
:!cp /root/abc.txt /root/abcd.tx
4.13 关于保存退出
所处模式 | 命令 |
末行模式下 | :wq 或 :x |
命令模式下 | ZZ |
4.14 关于不保存退出
5. 其它说明
如何显示行号
1. 末行模式输入: set number/set nu 可以显示行号
2.修改当前用户vimrc文件:
arvindeMacBook-Air:~ arvin$ vi ~/.vimrc
set nu 显示行号
set ts=4 TAB缩进字符数
或
Set tabstop=4
Set shiftwidth=4
【其中】:~/ 表示当前用户的家目录
当用vi编辑文件时,非正常退出时将产生一个隐藏文件,原文件将不能修改,需要将隐藏文件删除后才可以修改
扫码关注5G通信官方公众号,免费领取以下5G精品资料
1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》》
2、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书》
3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解》
4、回复“YDSL”免费领取《中国移动算力并网白皮书》
5、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1》
6、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用》
7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书》
8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书》