跳到主要内容

05、Linux 教程:vim编辑器

vim编辑器

基本模式与命令

 

vi后加文件名就进入文件的命令模式,此时输入的信息都会被当做命令处理,按i/a/o就会进入插入模式,可以插入内容,按esc就会回到命令模式。在命令模式中按冒号加命令就能执行编辑模式的指令,如输入:set nu就能让内容出现行号,执行编辑模式的命令后就再次回到命令模式,最后执行:wq退出编辑。

下表说明了进入插入模式的几个命令,注意切换时必须先按esc回到命令模式:

 

 

 

 

 

 

 

:wq!可以强行保存,有的文件root没有使用权限时,root编辑该文件就可以使用这个进行保存并退出。

常用功能

1、 将指定文件内容导入光标处:r导入文件名

2、 在编辑模式下执行:!系统命令可以执行其他系统命令,不干扰编辑,按回车重新进入编辑状态;

3、 将命令执行结果导入文件光标处,如:r!date

4、自定义快捷键map:编辑文件时还可以自定义命令,如:map ^P I#<ESC>定义好了之后按ctrl+p就会在行首插入一个#,注意这里的^P不是数字6对应的尖角号,而是先按ctrl+v然后按ctrl+p,看到变色后表示输入成功,而I代表将光标移动到行首,#是插入内容,后面的ESC意思是插入完成后重新进入命令状态。而map ^B 0x代表吧行首第一个字符删掉,定义好了之后按ctrl+b就可以执行了。map ^H i925722935@qq.com<ESC>代表插入邮箱地址,可以用来定义插入一个常用信息的快捷键。

5、 插入连续行注释:;

:1,4s/^/#/g代表从1到4行在行首插入#,^代表在行首插入,#是插入内容

:1,4s/#//g代表将1到4行的#替换为空

:1,4s/^#//g代表1到4行的行首#替换为空

:1,4s/^/\/\//g代表从1到4行在行首插入//,插入的两个//linux无法识别是分隔符还是插入的内容,所以必须加反斜杠来声明。

6、 自定义自动替换:;

:ab mymail 925722935@qq.com执行后,文件中输入mymail后按空格或者回车就会自动变成邮箱。但是这种替换命令在关机后不会保存设置,需要在家目录下添加配置,如果是root用户就在/root下,如果是普通用户就在/home/用户名下,创建一个名为.vimrc的文件,输入:

 

保存后,打开任何一个文件都会有行号,且所有的自定义快捷键和替换都有效。

生成的文件

当某个用户使用过vim时,他的家目录就会自动生成一个文件/.viminfo,这就是每次打开总停留在上次的位置的原因,所有用户的设定值存在/etc/vimrc,但是对于单一用户来讲,想要修改配置文件使设定生效一般就要修改/.vimrc文件,这个文件预设不存在,需要手动建立,下面是一些常用设置:

 

vim的暂存档与救援

当用户使用vim编辑时,在vim编辑文件的目录下会建立一个名为.filename.swp的文件,该文件内记录了对源文件的编辑动作,如果系统因为某些原因崩溃导致新编辑的文件没有保存,此时就可以利用swp文件进行救援。

如果在编辑某文件时突然宕机,再次打开该文件时会有警告信息显示存在swp暂存档文件,这种情况出现的原因可能有两个:

第一、其他用户在编辑这个文件,此时用户应该通知此人结束vim然后再进入编辑,或者直接按o进入只读状态。

第二、本用户编辑文件时突然发生意外导致结束,此时可以按R就能载入swp文件进行修复,然后再决定是否存储,注意这种情况下该swp文件不会在退出vim后自动删除,要手动删除否则还会有警告信息出现。也可以按D直接放弃该暂存档,此时就会删除旧的swp文件建立一个新的swp文件继续编辑。

在打开文件产生警告页面后也可以按Q退出,不执行任何动作。

区块选择

进入命令模式后按ctrl+v就进入字符选择状态,此时光标经过的地方会反白选择,选择区域是区块状的矩形,然后选择好内容后按y复制,最后移动到想粘贴的地方按p即可粘贴。

更多的选择功能如下:

 

多文件编辑

如果想把一个文件内的内容复制到别的文件中,就可以用vim的多文件编辑功能。

首先先同时编辑两个文件:vim 文件1 文件2

多文件编辑状态下可以通过以下按键来切换:

 

这样就能粘贴到其他文件了。

多窗口功能

有时编辑一个大文件时需要前后对照着看,在进入vim后执行:sp就能开启该文件的第二个窗口,这样就可以轻松对照了。多窗口也可以开启其他文件,此时只需要执行:sp 文件名就能开启。

下图是在多窗口模式下的一些命令,可以来回切换: