vi、vim——文本编辑器
vi、vim是什么
文本编辑器的作用
在Linux中一切皆是文件,因此在修改和维护文件时就需要用到文本编辑器了。
- 创建和修改系统中的文件
- 维护系统中的各种配置文件
vi和vim的区别
vi:vi是最初的文本编辑器,1. 是UNIX和类UNIX系统上的标准编辑器,它简单高效,但功能相对较少。
vim:vim是vi的升级版本,vim大多可以兼容vi,也同时也具备了很多vi没有的功能
为什么推荐使用vim编辑器
- 几乎所有的Linux发行版本都内嵌有vin文本编辑器,而其他的编辑器则不一定存在。
- vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计
vi、vim的工作原理
vi、vim的三种工作模式
命令模式:
启动vi/vim时就默认进入命令模式,在这个模式下输入的都当作命令来处理,该模式是另外两模式的主。(该模式中可以处理光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作。)
编辑模式:
开启vim后在其命令模式下输入i(或I, o, O, a, A, r, R)键,方可进入编辑模式创建文件或者修改文件。需要退出编辑模式到命令模式,可输入esc键。
末行模式:
从命令模式进入末行模式需要输入英文的":"键进入,在该模式下,可进行读取、查找替换文件内容、保存文件、 退出编辑器等操作。
三个模式下的基础操作
命令模式下:
:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
操作功能 | 操作键 | 效果 |
---|---|---|
光标跳转 | 数字+G | 跳转到字行 |
gg | 跳转第一行 | |
数字+w | 单词间跳转 | |
复制 | y | 复制 |
yy | 复制一行 | |
yw | 复制一个单词 | |
数字+10yy | 按照行数复制 | |
粘贴 | p | 在光标下一行粘贴 |
P(大写) | 在光标上一行粘贴 | |
撤回 | u | 撤回上次操作 |
ctrl+r | 撤回后撤回(反悔撤回) | |
剪切(删除) | dd | dd后按p是剪切,什么都不做是删除 |
数字+dd | 根据行数剪切 | |
dw | 剪切一个单词 | |
保存退出 | ZZ(大写) | 保存退出 |
ZQ | 保存不退出 | |
行首行尾跳转 | "^" | 跳转至行首第一个非空白字符 |
0 | 跳转至行首(包括空格) | |
$ | 跳转至行尾 | |
end键 | 跳转至行尾 | |
翻屏 | ctrl+f | 向页尾翻一屏 |
ctrrl+b | 向页首翻一屏 | |
删除 | x | 删一个字符 |
x+p | 交换字符顺序 | |
大小写 | ~ | 大小写转换 |
替换字符 | r | 替换字符 |
R | 替换模式 可以一直替换 | |
合并 | J | 合并两行,相当于删换行符$ |
命令模式切换至输入模式
输入模式:
使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc 键即可返回命令模式。
快捷键 | 用法描述 |
---|---|
i | 在光标前处插入 |
I | 在光标当行行首进行操作 |
o | 在光标的下一行操作 |
O | 在光标的上一行进行操作 |
a | 在当前光标所在位置之后插入 |
A | 行尾插入命令 |
末行模式
文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按":"(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这时就可以输入相关指令进行操作了。
快捷键 | 功能效果 |
---|---|
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
:/ | 精确查找并高亮 |
nohl | 取消高亮 |
:w 新文件名 | 另存为新文件 |
:wq 或 :zz 或 :x | 保存并退出 |
:e 其他文件名(如果已修改需要加e!) | 打开新文件进行编辑 |
:r 其他文件名 | 在当前文件中读入其他文件内容 |
: [替换范围] s/旧内容/新内容[/g] | 将旧内容替换为新内容 |
:s /old/new | 替换当前行中的第一个old改为new |
:s /old/new/g | 替换当前行中的所有old改为new(/@#都可做分隔符) |
:#,# s/old/new/g | #到#行所有old改为new |
:% s/old/new/g | %代表全文,全文替换所有old改为new |
:$ s/AB/CD/g | $表示最后一行,最后一行的AB替换为CD |
:$-1 s/AB/CD/g | $-1表示倒数第二行,倒数第二行进行替换 |
:# d | 删除 第#行 |
:#,# d | 删除#到#行 |
:#,# y | 复制三到6 行 |
:set nu (:set nonu取消设置) | 加行号 不显示行号 |
:set cul (:set nocul 取消设置) | 光标所在行有下划线(取消) |
:set ai | 对齐 回车后和上一行对齐 |
:set all | 可以看所有的一些帮助 |
:set key=password | 加密码 |
:set key=空白 | 取消密码 |
:set tabstop=4 (set ts=4) | 按tab键,一次为四个空格 |
:!< command> | 在vim内执行外部命令 |
:!ls | 按回车后会列出当前目录内容 |
:!hostname | 按回车后显示当前主机名 |
:!date | 按回车后显示当前日期 |
:1,3 co 10 | 将第1~3行复制粘贴到第10行下方(co表示copy) |
:1,3 m 10 | 将第1~3行剪切到第10行下方(m表示move |
可视模式:
市场环境中不太实用的
- v 面向字符,-- VISUAL -- (逐个选择字符)
- V 面向整行,-- VISUAL LINE --(逐个选择整行)
- ctrl-v 面向块,-- VISUAL BLOCK --(任意行数字数选择)
### 配置文件定制vim的工作特性
Vim 启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim。
- 系统配置文件位于 Vim 的安装目录(默认路径为 /etc/.vimrc);
- 用户配置文件位于主目录 ~/.vimrc,即通过执行
vim ~/.vimrc
命令即可对此配置文件进行合理修改。通常情况下,Vim 用户配置文件需要自己手动创建。
/etc/.vimrc #全局
~/.vimrc #个人
创建符合自己需求的配置文件
[root@localhost ~]# ls -a
. .bashrc .ICEauthority .Xauthority 文档
.. .cache initial-setup-ks.cfg zhubao 下载
anaconda-ks.cfg .config .local 公共 音乐
.bash_history .cshrc .mozilla 模板 桌面
.bash_logout .dbus .tcshrc 视频
.bash_profile .esd_auth .viminfo 图片
[root@localhost ~]# vim .vimrc //在个人home目录里创建一个.vimre的文件
输入需要添加的功能
a
设置参数 | 功能描述 |
---|---|
set nu | 显示行号 |
set cul | 突出显示当前行。 |
set ai | 设置自动缩进,即每行的缩进同上一节相同。 |
set ts=4 | 设置 Tab 键宽度为 4 个空格。 |
末行模式 查找替换
通式 : 范围 s /旧字符/新字符/修饰符
旧字符可以使用正则表达式表示,但是新字符是不可使用的,新字符必须是确定的字符。
范围 | 结果 |
---|---|
不写 | 默认处理光标所在行 |
% | 代表全文 |
$ | 最后一行 |
$-1 | 最后一行减一(倒数第二行) |
n | n代表数字 |
3.10 | 3到10行 |
. | 代表当前行 |
.,$-1 | 当前行倒数第二行 |
#,+# | 左侧代表起始行加上右侧表示的行数 |
s/// 可以换成, s@@@ 或 s###,这样避免冲突。
修饰符:
- g:全局替换
- j:忽略大小写
- c:替换前询问是否替换