1、文本编辑器vi命令
1.1 文本编辑器的作用
- 创建或修改文本文件
- 维护Linux系统中的各种配置文件
1.2 Linux中最常用的文本编辑器
- vi:类UNIX操作系统的默认文本编辑器
- vim:vim是vi文本编辑器的增强版
1.3 推荐使用vi/vim编辑器的原因
- 几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;
- Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计
2、vi/vim编辑器的工作模式
2.1 vi/vim编辑器的三种工作模式
- 命令模式
启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被vim识别为命令,而非输入字符。 该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作。 - 输入模式
命令模式按下i, I, o, O, a, A, r, R等任何一个字母之后即可进入输入模式。可以对内容进行编辑。 处于输入模式时,vi编辑器的最后一行会出现“–INSERT–”的状态提示信息。
按Esc键可以回到命令模式。 - 末行模式
命令模式下,按 : (英文冒号)即进入末行模式。在此模式下,可进行读取、查找替换文件内容、保存文件、 退出编辑器等操作。
2.2 不同模式之间的切换
网络异常,图片无法展示
|
3、vim命令格式
如果系统最小化安装,vim并没有提前安装,可以使用yum进行安装:
yum install vim -y 复制代码
命令格式:
vim [option] file vi [option] file 复制代码
常用选项:
1. vim +# //打开后文件后,让光标处于第#行的行首,+默认行尾 例如:vim +10 1.txt //打开后光标处于第10行 2. vim +/PATTERN //让光标处于第一个被PATTERN匹配的行 3. !vim //打开上一次的文件 复制代码
4、命令模式下的基本操作
命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
操作类型 | 操作键 | 功能 |
翻页 | ctrl+f或者Pagedown | 向下翻页 |
ctrl+b或者Pageup | 向上翻页 | |
行内快递跳转 | Home;0;^ | 跳到本行的行首。Home和0跳到真行首,^跳到第一个非空字符。 |
按 End 键或$ | 跳转到本行的行尾 | |
2$ | 跳转到下一行的行尾 | |
行间快速跳转 | 1G 或 gg | 跳转到文件的第一行包括空行 |
G | 跳转文件的末尾 | |
#G | #代表行号数字,直接跳转到#行 | |
M | 跳转到当前显示页面的中间行 | |
删除 | x或delete | 删除当前光标的字符 |
#d | 删除#个字符 | |
dd | 删除一整行 | |
#dd | 删除当前光标处向下的#行(包括当前行) | |
d^ | 删除当前光标之前到行首 | |
d$ | 删除当前光标到行尾 | |
dw | 删除当前光标处的单词 | |
替换 | R 或shift+r | 替换当前光标处文字,会进入替换模式 |
复制粘贴 | yy | 复制当前光标处整行 |
#yy | 复制当前光标处向下的#行(包括当前行) | |
p (小写) | 粘贴到光标处下一行 | |
P (大写) | 粘贴到光标处上一行 | |
撤销操作 | u | 只取消上一次的操作,可多次使用 |
U | U 取消所有操作 | |
反撤销 | ctrl+r | 取消上一次的撤销操作 |
查找 | /字符 | 向下查找 |
?字符 | 向上查找 | |
n | 向同一方向重复上次的查找指令 | |
N | 向相反方向重复上次的查找指定 |
5、命令模式切换至输入模式
输入模式: 使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc 键即可返回命令模式。
快捷键 | 功能描述 |
i | 在光标前插入随后输入的文本,光标后的文本相应向右移动 |
I | 行首插入命令。=^i ,移动到第一个非空字符并进入插入模式 |
o | 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本 |
O | 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本 |
a | 在当前光标所在位置之后插入随后输入的文本 |
A | 行尾插入命令 |
6、末行模式下的基本操作
末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
快捷键 | 功能效果 |
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
: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) |