第八节.vim程序编辑器

最后更新于 2022-02-28 503 次阅读


1.vim的使用模式

vim具有三种使用模式,初始模式为一般命令模式,然后可以通过按键进入编辑模式命令行模式

(1)一般命令模式(command mode)

在一般命令模式下,我们只能使用【上下左右】等按键进行文件的【查看】、【删除字符】、【删除整行】、以及行与字符的【复制粘贴】功能。

一般命令行界面

(2)编辑模式(insert mode)

通过使用按键【i I a A o O r R】可以进入编辑模式,在编辑模式中,可以对文件的内容进行更改。要返回一般命令行模式,按下Esc键。

(3)命令行模式(command-line mode)

在vim一般命令行模式,使用按键【: / ?】可以进入命令行模式,在该模式中,可以使用【查找数据】,【进入多界面窗口】,【读取、保存、批量替换字符】【退出vi】【显示行号】等命令。

总之三种模式的关系可以用下图来表示,重点是编辑模式与命令行之间的转换必须要回到一般模式后,才能转换

vim三种模式的相互关系

2.vim的使用

命令格式:vim 文件名 文件名(vim可以同时打开多个文件,具体的在之后的多文件编辑中详细学习)

例如:vim /tmp/hosts /usr/hosts

(1)常用按键说明

①光标的移动

方向键←(h):光标左移

方向键↑(j):光标上移

方向键↓(k):光标下移

方向键→(l):光标右移

(可以配合数字来实现光标在多个字符间的移动,比如输入30→就可以让光标往右走30个字符)

pageup(ctrl+b):屏幕向上移动一页

pagedn(ctrl+f):屏幕向下移动一页

n+space:输入数字n后空格,表示光标向右移动n个字符

home键(0):光标往这一行的最右边移动

end键($):光标往最左边移动

G:移动到文件的最后一行

nG:输入数字n后再按G,前往第n行(例如10G,前往第10行)

gg:移动到文件的第一行

n+回车:光标下移n行

H:光标移动到屏幕最上方的那一行的第一个字符

M:光标移动到屏幕中央那一行的第一个字符

L:光标移动到屏幕最下方的那一行的第一个字符

②查找与替换

查找:

/word:向光标之下查找word这个字符串

?word:向光标之上查找

n/N:向下/上查找下一个字符串

替换:

:n1,n2s/word1/word2/g(c):在n1行与n2行之间查找word1并替换成word2,g后加入c参数后,会在替换前向用户确认(confirm)是否替换(例如::23,49s/man/MAN/gc,将23与49行之间的man替换成MAN)

:1,$s/word1/word2/gc:从第一开始到最后一行,寻找word1并替换成word2

③删除、复制、粘贴与合并撤销

删除:

x与X:向后/前删除一个字符

nx:n为数字,代表向后连续删除n个字符

dd:删除(剪切)光标所在的那一行

ndd:删除(剪切)光标所在的那一行向下的n行

d1G:删除光标所在行到文件的第一行的数据

dG:删除光标所在行到文件的最后一行的数据

复制:

yy:复制光标所在的那一行

nyy:复制光标所在的那一行起往下n行的数据

y1G:复制光标所在的那一行到文件第一行的数据

yG:同上,到最后一行

粘贴:

p(小写):将复制(剪切)的数据在光标所在的那一行的下一行粘贴(假设复制10行的数据,光标在第20行,则从21行开始复制,到30行)

P(大写):在光标所在的上一行粘贴(复制10行的数据,光标在20行,则复制后光标变成第30行)

合并:

J:将光标行和下一行合并成一整行

撤销及重复操作:

u:撤销一步,恢复前一个操作

ctrl+r:重复上一个操作(重做一次)

.:小数点“.“,也是重复前一个操作

(2)一般模式进入编辑模式的常用按键

①插入模式

i与I:i是【从当前光标处插入】,I是【从光标所在 ` 321·1、】【90 ;8咯iu652·12 345 89 =0的第一个非空格符处开始插入,一般开头没空格的话,就是从第一个字符那里插入】

a与A:a是【从当前光标处的下一个字符开始插入】,A是【从光标所在行的最后一个字符开始插入】

o与O:o是【在当前光标处的下一行插入新的一行】,O是【是在当前光标处的上一行插入新的一行】

②替换模式

r与R:r是【替换一次当前光标处的字符】,R是【一直替换光标所在处的字符,直到按下Esc退出】

(3)命令行模式常用按键

Vim环境修改:

:set nu :显示行号

:set nonu :不显示行号

保存、退出命令:

:w :写入数据(相当于保存)

:w filename :相当于另存为(例如:w /tmp/host_new 则为将当前文件另存为host_new文件)

:r filename:在当前编辑的文件的光标所在处的后边插入filename文件的内容

:n1,n2 w filename:将n1行到n2行的内容保存为filename这个文件

:q :离开

:wq :写入数据后离开

:! :!表示强制执行命令的意思

:w! :强制写入

:q! :不保存,强制离开

ZZ:大写的Z,若文件没修改则直接退出,若修改了则保存后再退出

:! command:暂时中止vim编辑器,执行command命令(例如:! ls -al /tmp,则为暂时中止vim编辑器,执行ls命令)

3.vim的缓存以及故障恢复

vim和word等软件一样,在进行内容修改时,都会在文件的当前目录下生成一个名为.filename.swp的缓存文件,该缓存文件在用户保存并关闭文档后就会写入数据并消失。但是当vim因为某些原因(1.多人同时编辑一个文档 2.不正常关闭vim)不正常中断时,就可以利用该缓存文件进行数据的恢复。

当重新打开该文件时,会弹出错误修复框,此时系统会提供几个选项给我们进行选择。

选项:

o:只是查看文件而不修改文件内容时输入这个

E:不需要恢复文件而直接编辑时输入这个

R:想要恢复文件时输入R,系统会从.swp文件里恢复数据,但是事后需要手动删除.swp文件

D:当确认不需要恢复文件时,可以输入D删除缓存文件

Q:直接退出

4.vim可视区块

上边的学习中,我们基本上都是以行为单位的操作,那如果我们想以列为单位来操作呢?

例如我想把下边的192.168.1.1的三行复制到第一行host1.class.net 的右边,我该怎么操作?

这时我们就要引入可视区块这个功能,那么啥是可视区块呢?这里我们使用windows里的一个例子就可以很好的理解了

windows里按住alt实现的可视区快效果

linux中也是一样,通过选择一个区块范围来达成我们的目的

可视区块常用按键:

v:字符选择,光标经过的字符会留白

V:行选择,以行为单位

可视模式

ctrl+v:可视区块模式,可以使用矩形的方式来进行数据选择

y:复制反白的区块

d:删除反白的区块

p:粘贴刚刚复制的区块

所以我们这就很好解决了,只要用v把192.168.1.1这三行选中,再复制过去就好

可视区快复制演示结果

5.多文件编辑

vim支持同时编辑多个文件,使用命令:vim 文件名 文件名 就能打开多个文件

例如:vim /etc/man_db.conf /tmp/man.conf

vim多文件编辑界面演示

常用命令:

:n :切换下一个文件

:N :切换上一个文件

:files :查看vim当前开启的文件

6.多窗口编辑

vim中也支持多个文件多个窗口的编辑功能

vim多窗口编辑界面演示

常用命令:

:sp {filename}:以多窗口的功能开启一个新文件,filename可以提供也可以不提供,不提供就默认开启新文件

ctrl+w(松开后)+↑(j)↓(k)键 :进行窗口间的切换

ctrl+w(松开后)+q或:q或:close:关闭窗口

7.vim命令补全功能

vim本身也有命令补全的功能,具体的命令补全方式有三种。

(1)补全当前文档中重复过的关键词

ctrl+x → +n(先ctrl+x进入模式后,再按字母n)

(2)以文件的扩展名为语法补充,以vim内置的关键词,补全语法命令

常用于编程过程中的某些命令的补齐,不过前提是文件的扩展名要正确,例如CSS文件的后缀名.php或.html。

ctrl+x → ctrl+o

(3)以当前目录内的【文件名】,进行补齐

ctrl+x → ctrl+f

8.vim环境设置

vim可以根据个人的喜欢设置初始的环境,比如是否自动缩进?是否显示行号?等。

我们本身在vim里所进行的操作,会保存在~/.viminfo这个文件里(自动生成)。

而如果我们想自己创建一个初始默认值,则可以手动建立~/.vimrc这个文件,然后在这个文件里输入我们想要的参数值。

设置参数文件.vimrc演示

常用的环境参数:

(1)行号

:set nu:设置行号

:set nonu:不设置行号

(2)高亮度查找

:set hlserch:查找的关键词高亮显示

:set nohlserch

(3)自动保存备份文件

:set backup:默认不backup

(4)设置状态栏

:set ruler:显示右下角状态栏

(5)设置退格键

:set backspace(0 1 2 ):一般进入编辑模式后,就可以通过backspace键删除任意值,但一些linux发行版不允许这样,所以可以通过这个参数值进行设置,0 1 代表仅能删除刚输入的字符,2 代表可以自由删除

(6)设置注释的颜色

:set bg=dark

:set bg=light(默认)

(7)设置根据语法的不同显示不同的颜色

:syntax on

:syntax off

(8)查看参数值的设置

:set all:显示当前所有环境参数设置值

:set :显示当前与系统默认参数不同的参数值(你变动过的参数值)

9.vim常用命令示意图