• vi和 vim都是文本编辑器,vim是vi的升级版

  • vim会高亮显示,而vi不会

 

1、命令行模式

h

光标向左移动

j

光标向下移动

k

光标向上移动

l

光标向右移动

yy

复制一行,复制10行:10yy

p

粘贴到光标所在的下一行,10p就是把复制的内容粘贴10次

P

粘贴到光标所在的上一行

dd

剪切光标所在行,100dd,剪切光标以下100行

d1G

从光标所在行,删除到第一行

dG

从光标所在行,删除到最后一行

D

从光标处剪切到行尾,这时,p,会在光标后面粘贴

d$

同上

gg

光标回到第一行行首

G

光标到最后一行行首

$

移动光标到当前行尾

0

数字零,移动光标到当前行首

x

删除光标所在字符,2x,从光标往后删除2个字符

X

往前删

r

替换光标处单个字符,r2,把光标处字符替换成2

R

进入替换模式,一直替换,除非按esc,回到命令行模式

u

撤消上一次操作

ctrl+r

恢复上一次的撤消操作

.

重复上一次操作

ctrl+f

向下一页

ctrl+b

向上一页

 

2、编辑模式

从命令行模式进入编辑模式的方式:

i

在光标当前位置的前面插入字符

I

光标移动当前行的行首

a

光标往后退一个字符

A

光标移动到行尾

o

光标所在行下一行新起一行

O

上一行新起一行

 

回到命令行模式,按esc键,切换到其它模式必须先回到命令模式,再切换

图形化下用鼠标复制粘贴内容,要先进入编辑模式,否则会掉东西

 

3、末行模式

进入vim内置的命令行接口

:help

查看帮助

:wq

保存退出,或:x

:wq!

强制保存退出,对一个只读文件

不过到底能不能写入,还是跟权限有关

:w f1

另存到f1这个文件

:q

退出

:q!

强制不保存退出

:set nu

显示行号

:set nonu

取消行号

:9

光标移动到第9行行首

:1,9d

删除第一行到第9行

:1,3 >

1到3 行缩进,默认8个空格,可定义sw定义缩进值

:1,$s/root/hehe/g

从第一行到最后一行,全局把root替换成hehe

l 1,$,表示第一行到最后一行,可用%替代

l s///g,替换表达式,s/查找字符/替换为的字符/修饰符

 

修饰符:

l i,忽略大小写;

l g,全局替换,默认情况下,每一行只替换第一次查找到的字符。

:.,$s/r\(..\)t/R\1T/g

从当前行到最后一行中的root替换为RooT

l .,$,表示当前行到最后一行

l r\(..\)t,表示查找r和t中间只有两个字符的字符

l R\1T,表示将前面查找的内容,替换为R开头,T结尾,中间字符按前面第一个\(\)查找到的内容

:%s/bash/s&/g

将所有的bash,替换为sbash

l &,表示前面查找到的内容

:%s@/bin@/sbin@g

将全局的/bin替换为/sbin

将表达式的分隔符用@代替,因为/和要查找和替换的字符冲突

:%s/^[[:space:]]\+//

将所有行前面的空白字符替换为无

:! ls /boot

叹号,表示会暂时离开vim,然后去执行叹号后面的命令

:r /etc/passwd

把r后面的文件,读取到当前vim编辑器

:r ! ls /boot

把ls /boot命令的输出,读取到当前vim编辑器

/

往光标所在行之下搜索关键字

?

往光标所在行之上搜索关键字

n

下一个关键字

N

上一个关键字

 

4、visual可视模式

最主要的功能:可以分区块的选中文件内容

v

选中连续字符,然后可以用x删除,d剪切,y复制

V

选中整行

ctrl+v

选中区块,注意:XShell不支持

 

注意:

  • 正在编辑的文件,会在文件当前目录产生一个.swp缓存文件,如果这时,意外退出vim,可通过这个缓存文件找回之前编辑的内容。

  • 比如:将一个正在用vim编辑的文件,ctrl+z,将该操作放到后台;jobs,查看后台运行程序,找到刚才的命令编号;kill -9 %1,杀掉该命令,模拟意外中断

  • 这时,再用vim打开该文件,会有提醒:1.有多人打开这个文件;2.这个文件上次编辑时,意外中断。

  • 可以按提示,按R恢复文件,D删除缓存文件等

 

5、同时编辑多个文件

vim f1 f2

:files

列出打开的所有文件

:n

切换到下一个文件

:N

切换到上一个文件

:wall

保存所有

:qall

退出所有

 

#-o,多个文件同时打开,水平分割显示

#-O,多个文件同时打开,垂直分割显示

vim -o file1 file2

  • ctrl+方向键,切换光标

 

vim f1

:sp

把当前文件在一个新窗口再打开一次

:sp f2

在新窗口打开f2这个文件

ctrl+w+j

ctrl+w,松开,再按j,移动光标到下一个文件

ctrl+w+k

ctrl+w,松开,再按k,移动光标到上一个文件

 

6、定制vim

配置文件:

  • /etc/vimrc

  • ~/.vimrc

 

注意:用户家目录下的.vimrc,默认没有,需要自己创建

 

vim ~/.vimrc

#默认开启行标

set nu

 

#开启括号匹配,高亮显示

set showmatch

 

#开启自动缩进

set ai

 

#开启高亮搜索

set hlsearch

 

#语法高亮

syntax on

 

#忽略大小写  

set ic

 

#一个tab的宽度为4个空格宽度

set ts=4

 

#用space代替tab

set expandtab

 

#缩进时,使用4个空格,默认8个空格

set sw=4

 

实例1:配置vim,使用tab缩进,自动转换成2个空格

 

vim ~/.vimrc

set ai ts=2 sw=2 et