上一篇文章 "linux 入门系列 3--linux 远程登陆工具" 讲解了如何使用常用的工具远程连接和管理 Linux 服务器, 要管理服务器必然会涉及到脚本文件的创建, 编辑工作, 因此在介绍命令之前, 本文讨论 Linux 中编辑器相关知识.
一, Vi/VIM 介绍
VI(Visual Interface), 是一个文本编辑器, 主要在 Unix 及类 Unix 环境中使用.
VIM(Vi+improved) 在 Vi 的基础之上进行了功能提升, 相当于 Vi 的增强版.
所有类 Unix 系统都会内建 vi 文本编辑器, 就像 Windows 电脑上的记事本一样, 可以对文本内容进行编辑, vi 编辑器是 Unix 系统最初的编辑器, 允许查看文件中的行, 在文件中移动, 插入, 编辑和替换文本 .
然而由于 Unix 系统是商业操作系统, 国外一牛逼的程序员 "理查德. 斯托曼" 发起了 GNU 计划 (该计划目标是创建一套完全自由的操作系统, 实现 Unix 系统的标准接口, 因此完全向上兼容 Unix, 但是可以自由使用), 在 GNU 项目中, 程序员将 vi 编辑器移植到开源世界的同时对其做了改进, 因此重命名为 "Vi improved", 也就是我们说的 VIM.
ps: GNU 项目, 英文全称为 "GNU is Not Unix", 简单的说, 就是一个开发类 Unix 操作系统的项目, GNU 操作系统是由 GNU 软件包及其第三方的免费软件包组成, 所以其最大的特点就是免费.
因此 VIM 是从 vi 发展而来的一个具有编程能力的文本编辑器, 可以主动的以字体颜色辨别语法的正确性, 方便程序设计. VIM 具有代码补全, 编译及错误跳转等方便编程的功能, 在程序员中被广泛使用.
有的 Linux 发行版可能没有安装 VIM(需要时自行安装即可), 但是一定会有 vi 编辑器. 作为入门文章本文仅演示二者共同的用法, 编辑器有三种模式: 一般模式, 编辑模式, 命令模式. 每种模式可以进行不同的操作, 完成不同的功能.
三种模式之间可以相互转换. 一般模式主要用于: 复制, 粘贴, 删除; 编辑模式主要用于编辑文本; 命令模式主要执行文本的保存, 查找等.
二, 一般模式
我们平时在 windos 系统上编辑文件, 肯定会涉及到复制, 粘贴, 删除等操作, 而这些操作在 vi 中都是在一般模式下进行的.
一般模式是默认模式, 要进入编辑模式和命令模式都需要它作为桥梁.
用 vi 命令打开一个文件直接进入一般模式, 在这个模式中可以对文本内容进行复制, 粘贴, 删除等操作. 可以通过键盘方向键控制光标移动到指定位置, 也可以通过快捷键控制光标位置.
1.1 复制
命令(语法) | 功能描述 | 案例(说明) |
---|---|---|
yy | 复制当前光标所在行 | |
y*y | 复制当前光标所在行开始的 * 行 | y2y:表示从当前光标所在行开始复制 2 行 |
yw | 赋值一个单词 | 光标之后开始复制,包括词尾的空格;如果想要复制整个单词,就要把光标放到单词首字母 |
1.2 粘贴
命令(语法) | 功能描述 | 案例(说明) |
---|---|---|
p | 粘贴 | 粘贴到当前光标的下一行(复制的行),或当前光标字符之后(复制的单词) |
1.3 删除
命令(语法) | 功能描述 | 案例(说明) |
---|---|---|
dd | 删除光标当前行 | |
d*d | 删除光标当前行开始的 * 行 | d2d:表示从当前光标所在行开始删除 2 行 |
dw | 删除光标之后的一个单词 | 光标之后开始删除,包括词尾空格;如果要删除整个单词,光标放到单词首字母,类似 yw |
x | 删除光标之后的一个字符 | 相当于 del |
X | 删除光标之前的一个字符 | 相当于 Backspace |
1.4 撤销
命令(语法) | 功能描述 | 案例(说明) |
---|---|---|
u | 撤销 |
1.5 定位
上边的复制, 粘贴, 删除, 到目前我们都是通过方向键来控制鼠标的位置, 但是这样效率太低, 通过下边的定位命令可以快速进行定位. 在一般模式下定位光标, 进入编辑模式进行编辑, 这样可以大大提高效率.
命令(语法) | 功能描述 | 案例(说明) |
---|---|---|
shift+^ | 行首 | |
shift+$ | 行尾 | |
1+shift+g | 页头 | 先按 1 再一起按 shift 和 g 组合键 |
shift+g | 页尾 | |
*+shift+g | 任意行 | 先按数字 *,在一起按 shift 和 g 组合键,调试程序时非常有用 |
三, 编辑模式
在一般模式下, 通过如下 i,a,o,r 命令进入编辑模式, 对文档内容进行编辑. 命令的区别在于进入编辑模式后光标插入点不同.
命令 | 功能描述 |
---|---|
i | 当前光标前 |
I | 当前光标所在行行首 |
a | 当前光标后 |
A | 当前光标所在行行尾 |
o | 当前光标下一行,新开一行 |
O | 当前光标上一行,新开一行 |
r | 当前光标之后,新输入会替换一个字符 |
R | 替换当前光标之后的多个字符 |
四, 命令模式
在一般模式下, 可以通过以下三个命令:":","/","?" 进入底行命令模式完成文件保存, 内容查找及字符替换功能. 执行完命令可以通过 ESC 返回一般模式.
3.1 文件保存
语法格式
:[选项]+ 回车
选项分为 w,q,! 可以相互组合使用.
w: 保存
q: 退出
!: 强制执行
案例
:w 保存
:w filename 文件另存为 filename
:wq 保存并退出
:wq! 强制保存并退出
:wq! filename 文件另存为 filename 并退出编辑器
3.2 查找内容
查找命令主要有 2 个:/ 或? 二者功能一致, 只记住一个即可
语法格式
/ 要查找的词 + 回车
? 要查找的词 + 回车
如果用第一个语法 / 进行查询, 则按 n 键向下查找下一个, shift+n 向上查找下一个
第二个语法则相反, n 向上查找上一个, shift+n 向下查找下一个
案例
/heimatengyun 在当前文档中查找 heimatengyun 字符串
等价于
?heimatengyun
3.3 替换内容
可以通过如下命令替换当前文档里的内容
语法格式
:[范围]s / 要被替换的内容 / 新内容 /[c,e,g,i]+ 回车
范围: 1,5 表示从第一行到第五行. 1,$ 表示从第一行到最后一行, 等价于 %.% 表示当前编辑的文章.
可组合选项: c 表示 confirm, 每次替换前询问; e 表示不显示 error;g 表示 globe 不询问整行替换; i 表示 ignore 不区分大小写; I 表示大小写敏感
案例
1,3s/you/YOU 在当前文档的 1 至 3 行搜索 you 并替换为 YOU. 注意不是单词替换, 只要匹配就会替换, 比如如果第二行存在 your 这个单词, 则会被替换为 YOUr
1,3s/you/YOU/c 替换前会询问是否要替换
s/e/E/g 替换当前行所有 e 为 E. 假设当前光标所在行内容为 where are you from 替换后变为 hErE arE you from
3.4 显示行号
:set nu 显示行号
:set nonu 关闭行号
以上为 vi 编辑器基本的使用命令, 多敲几次自然就记住了. 至此我们已经学会使用 vi 编辑器, 可以创建和管理各种文件了. 下一篇文章将讲解 Linux 常用的命令, 学会命令后就可以制作各种脚本完成各种工作任务了.
来源: https://www.cnblogs.com/heimatengyun/p/12176624.html