vi编辑器

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。

由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

vim

vi的多模式

  1. 正常模式(Normal-mode)

启动vim后默认处于正常模式,其他模式都可以用ESC键直接转换到正常模式。在这个模式我们键盘所敲的任何按键都是对vim所下的命令,如何进行复制如何进行粘贴都是要在这个模式下进行的。

  1. 命令模式(Command-mode)

是指可以在界面最底部的一行输入控制操作命令,主要用来进行一些文字编辑的辅助功能,比如字串搜寻、替代、保存文件,以及退出vim等。
在命令行模式下输入”:”,或者是使用”?”和”/”键,就可以进入命令模式了。
命令模式下输入的命令都会在最底部的一行中显示,按Enter键vim便会执行命令。

  1. 插入模式(Insert-mode)

插入模式用来修改文件内容的,只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

  1. 可视模式(Visual-mode)

有一些情况我们要进行一个高级编辑,比如对一块文件进行插入操作,就需要进入此模式。相当于高亮选取文本后的普通模式。在命令模式按下v, V, +v,ctrl+v可以进入可视模式。

vim编辑器

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在,但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

vim正常模式

首先使用vim命令进入正常模式,使用方法如下:

vim [文件]

文件可以不写,类似于我们Windows记事本一样,可以点击一个文本文档打开,或者直接打开记事本进行编写内容。

正常模式常用命令

  1. 在正常模式下可以使用 i、I、a、A、o、O 命令进入到插入模式

i 表示从光标当前位置进入插入模式

I 表示从光标当前所在行的行首进入插入模式

a 表示从光标当前位置的下一位进入插入模式

A 表示从光标当前所在行的行尾进图插入模式

o 表示从当前光标所在行的下一行并插入一行进入插入模式

O 表示从当前光标所在行的上一行并插入一行进入插入模式

  1. v命令

正常模式下输入 v 命令可以进入可视模式

  1. :命令

可以进入命令模式,也称为末行模式

  1. esc命令

在其他模式下可以使用 esc 返回到正常模式

  1. h、j、k、l

h 光标向左移动

l 光标向右移动

j 光标向下移动

k 光标向上移动

  1. y复制命令

yy:复制光标所在行到缓冲区

nyy:注意n表示行数,表示复制当前行向下n行的内容

y$:复制当前光标所在位置到行尾的内容

yw:与y$效果一致

ny$:注意n表示字数,表示复制当前光标所在位置后n个字符

  1. d剪切命令

dd:剪切光标所在行到缓冲区

ndd:注意n表示行数,表示剪切当前行向下n行的内容

d$:剪切光标所在位置到行尾的内容

dw:与d$效果一致

  1. p粘贴命令

将复制或剪切的内容粘贴到光标所在位置

  1. u撤销命令

撤销命令,可以将失误的操作进行撤销,如果我们连续失误了很多个命令,就多次使用u命令,一条一条撤销

  1. Ctrl + r 重做撤销命令

就是将使用u命令撤销的命令重做,类似于撤回撤销

  1. x命令

删除光标所在的单个字符

  1. r命令

替换光标所在单个字符,使用时先按r键,再输入新的字符

  1. n + G命令

n表示行数,G是大写,既将光标移动到指定的行

如果不指定 n 则直接将光标跳转到文件的最后一行

  1. ^命令

将光标移动到所在行的行尾

  1. $命令

将光标移动到所在行的行首

vim命令模式

下面介绍命令模式常用命令操作

  1. :w [文件名]

如果是新建文件,则使用 :w 文件目录+文件名 来将编辑好的内容保存为指定的文件

如果是修改文件,则直接使用 :w 命令保存文件

  1. :q

使用 :q 退出vim

w和q命令可以组合起来使用,直接 :wq 来保存并退出vim

注意::wq 也可以使用快捷键 shift + z z 来实现

  1. :q!

不保存退出

注意:可以使用快捷键 shift + z + q 来实现

  1. :!

有时候我们在打开vim的时候,需要临时执行一条命令,并查看命令执行的结果,就可以使用 ! 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
:!ifconfig

root@CHJ-20190520VPS:/# vim /tmp/test.txt

eth3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.34.113 netmask 255.255.255.240 broadcast 172.31.34.127
inet6 fe80::4c47:3429:b72c:5130 prefixlen 64 scopeid 0x0<global>
ether 7e:15:d8:27:73:38 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
  1. / + 字符

向下搜索字符,例如使用 /h 可以在文本中查到h出现的地方,并将光标移动到第一次出现的位置

在查找到的时候,我们还可以使用 “n” 键来将光标移动到下一个此字符出现的位置

还可以使用 “shift + n” 来向上查到此字符出现的位置

  1. ? + 字符

向上搜索字符,例如使用 /h 可以在文本中查到h出现的地方,并将光标移动到第一次出现的位置

在查找到的时候,我们还可以使用 “n” 键来将光标移动到下一个此字符出现的位置

还可以使用 “shift + n” 来向上查到此字符出现的位置

  1. :s/旧的字符/新的字符

此命令的作用是将文本中旧的字符替换成新的字符,模式只是将光标当前所在行的字符替换

我们还可以将文本中每一行第一次出现的指定字符替换,可以使用命令 “:%s/旧的字符/新的字符”

如果我们需要将文本跟中所有的指定的字符替换为新的字符,就需要使用命令 “:%s/旧的字符/新的字符/g” ,命令中的g表示global

1
2
3
4
5
6
7
8
9
10
11
sdaaaaaaaaaaaaaaaaaaaaaasdf
sdaaaaasd
dsaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaag

:%s/a/0/g

sd0000000000000000000000sdf
sd00000sd
ds0000000000000000000000
0000000000000000000000g

有的时候我们需要替换指定的行的特定字符,则需要使用命令 “:3,5/s/旧的字符/新的字符/g”, 表示将第3-5行中的旧的字符替换

  1. :set命令

:set nu: 表示设置显示文本的行号

:set nonu: 表示关闭显示文本的行号

:set hlsearch 在使用查找字符命令时,高亮显示查找到的所有字符

:set nohlsearch 关闭查找字符高亮显示

默认情况下,我们使用set命令设置只在当次vim命令中生效,当我们下次进入vim的时候,set命令设置的东西就又会恢复为默认,这样的话很多时候回造成不必要的麻烦,如果我们需要将set命令设置的内容保存,以便于每次打开都能用,例如 set nu 命令,我们希望每次打开vim编辑文本的时候都能显示行号,这样的话,就需要去修改vim的配置文件,配置文件目录为:/etc/vim/vimrc

我们直接使用 vim /etc/vim/vimrc 命令编辑此配置文件,然后使用 G 命令直接将光标跳转到最后一行,然后使用命令 o 向下插入一行空行,直接编辑我们要设置的内容即可

添加如下:

1
2
3
4
5
6
" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif

set nu

编辑完成之后,使用 esc 退出编辑模式,使用 :wq 保存并退出,这样当我们每次打开文件的时候就都会显示行号

vim插入模式

  1. 字符按键以及Shift组合,输入字符

  2. ENTER,回车键,换行

  3. BACK SPACE,退格键,删除光标前一个字符

  4. DEL,删除键,删除光标后一个字符

  5. 方向键,在文本中移动光标

  6. HOME/END,移动光标到行首/行尾

  7. Page Up/Page Down,上/下翻页

  8. Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

  9. ESC,退出输入模式,切换到命令模式

vim可视模式

可视模式主要是针对于我们对文件的大量操作使用此模式一次性执行完成,通常我们都是配合 “I”, “d” 命令来快捷操作

可以在正常模式下使用 v、V、Ctrl + v三种方式进入:

  1. 命令

进入字符可视模式,字符可视模式就是当我们移动光标的时候,它是以字符为单位进行选择的

  1. V

进入行可视模式,当我们移动光标的时候是对行进行选中

  1. Ctrl + v

进入块可视模式,移动光标时选中的是上下对齐的一个块,此命令是使用较多的命令

使用示例如下:

我们要在多个行中同时插入一下字符,就可以使用vim先打开文件,然后使用 “Ctrl + v” 选中要操作的多个行为块,然后输入 “I” 命令进入行首进行编辑,插入我们要插入的字符后,连续按两次 esc 按键,就会发现,之前选中的行都被添加进去了我们新添加的字符

1
2
3
4
5
6
7
8
9
10
11
 18 tyutyutyutyutyustyukcdefsdf
19 sdfsdf
20 sdf
21 sdf

# 操作完成后

18 wangjia3tyutyutyutyutyustyukcdefsdf
19 wangjia3sdfsdf
20 wangjia3sdf
21 wangjia3sdf

也可以使用 “d” 命令,将选中的块或字符直接删除,使用方法同上,在块选择后,直接输入 d 即可完成删除,此命令比较常用

最后更新: 2019年07月25日 10:02

原始链接: https://jjw-story.github.io/2019/07/20/vim/

× 请我吃糖~
打赏二维码