概述
vi与vim
vi编辑器是Unix及Linux系统下标准的编辑器,相当于Windows系统中的记事本。是我们使用Linux系统不可缺少的工具。
vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;相比vi编辑器,vim编辑器拥有更强大的功能,如果将vi编辑器比作是Windows系统里的记事本,那么vim编辑器就是Windows里的Word。因为程序简单,编辑速度相当快速。
vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。
Vim编辑器
Vim编辑器可按照功能将其分为三种模式形态,即插入模式,命令模式,拓展命令模式。
| 模式 | 功能 |
|---|---|
| 插入模式 | 可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式,在此模式下可进行文本的插入删除修改等;按ESC键即可返回命令模式 |
| 命令模式 | 命令模式是Vim编辑器的初始模式,在此模式下可进行Linux命令操作 |
| 拓展命令模式 | 按”Shift+:“即可进入扩展命令模式,在此模式下可进行命令行操作,如保存,退出等 |
Vim命令及其应用
Vim命令(启动Vim编辑器)
格式:vim + 选择项 + 文件名(中间以空格隔开)
| 格式 | 功能 |
|---|---|
| -c cmd | 在打开文件前,先执行指定的命令 |
| -r | 恢复上次异常退出的文件 |
| -R | 以只读的方式打开文件,但可以强制保存 |
| -M | 以只读的方式打开文件,不可以强制保存 |
| -y num | 将编辑窗口的大小设为num行 |
| + | 从文件的末尾开始 |
| +num | 从第num行开始 |
| +/string | 打开file,并将光标停留在第一个找到的string上 |
Vim编辑器模式切换
命令模式——> 插入模式
| 按键 | 功能 |
|---|---|
| i | insert, 在光标所在处输入 |
| I | 在当前光标所在行的行首输入 |
| a | append, 在光标所在处后面输入 |
| A | 在当前光标所在行的行尾输入 |
| o | 在当前光标所在行的下方打开一个新行 |
| O | 在当前光标所在行的上方打开一个新行 |
插入模式——> 命令模式
| 按键 | 功能 |
|---|---|
| ESC | 切换到命令模式 |
命令模式——> 扩展命令模式
| 按键 | 功能 |
|---|---|
| Shift+: | 切换到扩展命令模式 |
扩展命令模式——> 命令模式
| 按键 | 功能 |
|---|---|
| 先按ESC再按Enter | 切换到命令模式 |
Vim命令模式
常见命令
| 操作 | 功能 |
|---|---|
| ZZ | 保存退出 |
| ZQ | 不保存退出 |
| h | 光标向左移动 |
| l | 光标向右移动 |
| j | 光标向下移动 |
| k | 光标向上移动 |
| #COMMAND | 光标跳转由#指定的个数的字符 |
| w | 光标跳转到下一个单词的词首 |
| e | 光标跳转到当前或下一单词的词尾 |
| b | 光标跳转到当前或前一个单词的词首 |
| H | 光标跳转到页首 |
| M | 光标跳转到页中间行 |
| L | 光标跳转到页底 |
删除命令
| 操作 | 功能 |
|---|---|
| d | 删除命令,可结合光标跳转字符,实现范围删除 |
| d$ | 删除到行尾 |
| d^ | 删除到非空行首 |
| d0 | 删除到行首 |
| dd | 删除光标所在的行 |
| #dd | 多行删除 |
| D | 从当前光标位置一直删除到行尾,留空行,等同于d$ |
复制命令
| 操作 | 功能 |
|---|---|
| y | 复制,行为相似于d命令 |
| y$ | 复制到行尾 |
| y0 | 复制到行首 |
| y^ | 复制非空行首 |
| ye | 复制到当前或者下个单词词尾 |
| yw | 复制到下个单词词首 |
| yy | 复制行 |
| #yy | 复制多行 |
| Y | 复制整行 |
其他命令
| 操作 | 功能 |
|---|---|
| p | 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 |
| u | 撤销最近的更改 |
| #u | 撤销之前多次更改 |
Vim扩展命令模式
常见操作
| 操作 | 功能 |
|---|---|
| :q | 退出 |
| :q! | 强制退出,丢弃做出的修改 |
| :wq | 保存退出 |
| :x | 保存退出 |
| :r filename | 读文件内容到当前文件中 |
| :w filename | 将当前文件内容写入另一个文件 |
| :!command | 执行命令 |
| :r!command | 读入命令的输出 |
地址界定
| 界定符 | 功能 |
|---|---|
| # | 具体第#行,例如2表示第2行 |
| #,# | 从左侧#表示起始行,到右侧#表示结尾行 |
| #,+# | 从左侧#表示的起始行,加上右侧#表示的行数 |
| :2,+3 | 表示2到5行 |
| . | 当前行 |
| $ | 最后一行 |
| .,$-1 | 当前行到倒数第二行 |
| % | 全文, 相当于1,$ |
查找替换
查找
| 操作 | 功能 |
|---|---|
| /PATTERN | 从当前光标所在处向文件尾部查找 |
| ?PATTERN | 从当前光标所在处向文件首部查找 |
| n | 与命令同方向 |
| N | 与命令反方向 |
替换
| 操作 | 功能 |
|---|---|
| i: | 忽略大小写 |
| g | 全局替换;默认情况下,每一行只替换第一次出现 |
| gc | 全局替换,每次替换前询问 |
| 示例1 | %s@目标内容@替换内容@g |
| 示例2 | %s#目标内容#替换内容#i |
设置文件格式
| 操作 | 功能 |
|---|---|
| 启用windows格式 | set fileformat=dos |
| 启用unix格式 | set fileformat=unix |
设置文本宽度
:set textwidth=65
:set wrapmargin=15
案例
案例一:在vim中设置tab缩进为4个字符
1.通过cd命令到达home目录下,利用vim命令打开.vimrc文件
liuyan@liuyan-virtual-machine:~$ vim .vimrc
- 在.vimrc文件里输入set tabstop=4 保存退出后运行.vimrc文件即可
案例二:删除文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
- 利用vim命令打开目标文件,目标文件如下:
1 #!/bin/bash
2 #+--+--+--+--+--+--+--+--+--+
3 #author:liuyan
4 #date:2020-03-07
5 #tel:188332489740
6 #Email:2742604627@qq.com
7 #+--+--+--+--+--+--+--+--+--+
8 # hsdgjdfhglkjs
9 # hgfjkhdsksd
10 # aaaaaaaaaaaaaaaaaaaaaaaas
11 # aaaaaaaaaaaaad
12 # aaaaaaaaac
13 # aaaaaaaaaaaaacc
14 adsssssssssssfdgsf
15 adgshjkfd
- 转到扩展命令模式,输入修改命令:%s@# +@@g修改后如下:
1 #!/bin/bash
2 #+--+--+--+--+--+--+--+--+--+
3 #author:liuyan
4 #date:2020-03-07
5 #tel:188332489740
6 #Email:2742604627@qq.com
7 #+--+--+--+--+--+--+--+--+--+
8 hsdgjdfhglkjs
9 hgfjkhdsksd
10 aaaaaaaaaaaaaaaaaaaaaaaas
11 aaaaaaaaaaaaad
12 aaaaaaaaac
13 aaaaaaaaaaaaacc
14 adsssssssssssfdgsf
15 adgshjkfd
16
~
~
转载:https://blog.csdn.net/qq_42452450/article/details/104719646
查看评论