%s/vivian/sky/g # (等同于 g/vivian/s//sky/) 替换每一行的每一个 vivian 为 sky
s#vivian/#sky/# # 替换当前行第一个 vivian/ 为 sky/(可以使用 #或+作为分隔符,此时中间出现的 / 不会作为分隔符)
s/p1/p2/g # 将当前行中所有p1均用p2替代
n1,n2s/p1/p2/g # 将第n1至n2行中所有p1均用p2替代
g/p1/s//p2/g # 将文件中所有p1均用p2替换
寄存器
“?nyy # 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyw # 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyl # 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
“?p # 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd # 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
选项设置
set number # 显示行号
set number! # 不显示行号,其它选项同理加!号
set all # 列出所有选项设置情况
set term # 设置终端类型
set ignorance # 在搜索中忽略大小写
set list # 显示制表位(Ctrl+I)和行尾标志($)
set report # 显示由面向行的命令修改过的数目
set terse # 显示简短的警告信息
set warn # 在转到别的文件时若没保存当前文件则显示NO write信息
set nomagic # 允许在搜索模式中,使用前面不带“”的特殊字符
set nowrapscan # 禁止vi在搜索到达文件两端时,又从另一端开始
set mesg # 允许vi显示其他用户用write写到自己终端上的信息
插入命令
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
查找命令
/text #查找text,按n健查找下一个,按N健查找前一个。
?text #查找text,反向查找,按n健查找下一个,按N健查找前一个。
vim #中有一些特殊字符在查找时需要转义 .[]^%/?~$ :set ignorecase #忽略大小写的查找 :set noignorecase #不忽略大小写的查找。查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按或#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。
:set hlsearch #高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch #关闭高亮搜索显示
:nohlsearch #关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch #逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan #重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
替换命令
ra #将当前字符替换为a,当期字符即光标所在字符。
s/old/new/ #用old替换new,替换当前行的第一个匹配
s/old/new/g #用old替换new,替换当前行的所有匹配
%s/old/new/ #用old替换new,替换所有行的第一个匹配
%s/old/new/g #用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g #在第10行知第20行每行前面加四个空格,用于缩进。
ddp #交换光标所在行和其下紧邻的一行。
移动命令
h 左移一个字符
l 右移一个字符,这个命令很少用,一般用w代替。
k 上移一个字符
j 下移一个字符
以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,在当前位置后插入3个!,3a!,这里的Esc是必须的,否则命令不生效。