一.vim介绍
vim发展过程:
1969年,[Ken Thompson](https://baike.baidu.com/item/Ken Thompson)(后被称为UNIX之父)和Dernis Ritchie将“星际旅行”的运行到PDP-7上,到了1970年,PDP-7当时运行的MULTICS操作系统被戏称为:“UNIX”
到了1976,[Bill Joy](https://baike.baidu.com/item/Bill Joy)一开始开发了对用户更友好、支持更多命令的ed——ex(ed extended)。紧接着,他同Chuck Haley一起为ex开发了ex的visual interface [3] ,也就是后来的vi。1979年,vi正式采用了vi这个名字,并沿用至今。
Bram Moolenaar 在 80 年代末购入他的Amiga计算机时,Amiga 上没有他最常用的编辑器vi。Bram 从一个开源的 vi 复制 Stevie 开始,开发了 Vim 的 1.0 版本。最初的目标只是完全复制 vi 的功能,那个时候的 Vim 是Vi IMitation(模拟)的简称。1991 年 Vim 1.14 版被 “Fred Fish Disk #591” ——Amiga 用的免费软体集收录了。1992 年 1.22 版本的 Vim 被移植到了 UNIX 和MS-DOS上。从那个时候开始,Vim 的全名就变成 Vi IMproved(改良)了。
二.vim使用
1.vim三种模式
命令模式下还有很多其他的命令:
^ 非空格行首
0 行首
$ 行尾
w 下个单词词首
e 下个单词词尾
b 上个单词词首
( ) 句子移动
{ } 段落移动
H 屏幕顶部
M 屏幕中间
L 屏幕底部
% 跳转到匹配的括号
^f 向下移动一屏
^b 向上移动一屏 (^代表 ctrl 键)
^d 向下移动半屏
^u 向上移动半屏
^e 向屏幕顶端多滚动一行
^l 向屏幕底端多滚动一行
. 执行上一条命令
末行模式下的替换:
语法规则:
:[range]s/{pattern}/{string}/[flags]
range 表示范围
1 表示文件第一行
$ 表示文件最后一行
. 表示光标所在行
% 整个文件(:1,$ 的简写)
flags 标识
g 表示全局范围
c 表示选择替换(y 替换、n 不替换、q 退出替换过程、l 替换此处后退出、a 替换此处和之后所以的地方)
n 不会替换,只返回替换的次数
例如:
:%s/^/#/g 快速全文注释
:%s/$/;/g 每行末加上 ;
2.vim增删改查
增
基本命令:
yy 复制当前行
3yy 复制3行
p 粘贴
yw 复制一个单词
y$ 复制当前到行尾
y0 复制当前到行首
:x,ycoz
:x,ymz
x,y,z都是行号。x到y被复制或移动,插入到z行的下面
:m删除源行,:co不删除原始行
删
基本命令:
dd 删除当前行
ndd 删除n行
dw 删除一个单词
x 删除当前字符
X 删除前一个字符
D 删除当前到行尾
J 删除换行符
改
基本命令:
r 替换一个字符
R 替换多个字符
s
替换当前字符,并进入插入模式
C
替换当前行到末尾的所有字符
S 或 CC
以插入的方式替换当前行
查
基本命令:
空格 向前搜索
? 向后搜索
n 重复/或?,方向相同
N 重复/或?,方向相反
* 向下搜索光标所在字符串
# 向上搜索光标所在字符串
% 搜索与当前花括号、圆括号、方括号成对的符号
3.vim寄存器
Vim有多个寄存器:
:reg 查看寄存器内容
这个寄存器就相当于多个粘贴板, Vim提供了 a-z 26个命名寄存器, 0-9 10个数字寄存器,还有一些特殊寄存器
使用寄存器:
复制:
“{register}y 来复制内容到寄存器 {register} 中 例如: 3”ayy 复制3行到寄存器 a 中
粘贴:
“{register}p 来粘贴寄存器 {register} 中的内容 例如:”ap
特殊寄存器:
匿名寄存器: ”a-”z 使用复制删除等命令时,都会放入匿名寄存器
编号寄存器: “0-”9 0保存复制的字符串, “1-”9保存着删掉的内容
4.vim设置
:set all 显示所有选项的值
:set option? 显示一个选项的值,例: :set fileencoding
常见设置:
:set nu 显示行号
:set ai 自动缩进
:set list 显示非打印字符,如tab、空格、行尾
如果是永久的配置,可以在用户的家目录下修改 .vimrc
Vim打开文件:
vim –u NONE –N 出厂配置,其中 –u NONE 不加载vimrc,-N不进入兼容模式
vim +[num] file 打开文件,并将光标置于第n行首
vim + file 打开文件,并将光标置于最后一行首
vim –R file 只读模式打开文件