在 CentOS 7.0 系统中,vi
(或其增强版 vim
)是默认安装的文本编辑器,它以其强大的功能、高效的编辑能力和极低的资源消耗而闻名,是系统管理员和开发者的必备工具,尽管初学者可能会觉得它的学习曲线有些陡峭,但一旦掌握了其核心操作模式,就能体验到无与伦比的编辑效率,本文将系统地介绍 vi
命令在 CentOS 7.0 环境下的使用方法,从基础入门到高效操作,帮助您快速上手。
核心概念:理解 vi
的三种模式
vi
的强大之处在于其独特的设计理念,它将编辑操作分为不同的模式,理解并熟练切换这些模式是掌握 vi
的关键。
命令模式
这是vi
启动后的默认模式,在此模式下,您输入的任何字符都被视为一个命令,而不是插入到文本中的内容。h
,j
,k
,l
用于移动光标,x
用于删除字符,dd
用于删除整行。插入模式
在此模式下,您可以像使用普通记事本一样输入文本,从命令模式进入插入模式有多种方式,最常用的是按i
(在光标前插入)或a
(在光标后插入),按下Esc
键可以从插入模式返回到命令模式。末行模式
也称为 ex 模式,在命令模式下按下冒号 键即可进入此模式,光标会移动到屏幕底部,您可以输入诸如保存(w
)、退出(q
)、搜索()、替换(s
)等更复杂的命令,执行完命令后,按Enter
键会自动返回命令模式。
模式切换关系图:
+----------------+ 按 `i`, `a`, `o` 等 +----------------+
| 命令模式 | -------------------------> | 插入模式 |
| (Command Mode) | <------------------------- | (Insert Mode) |
+----------------+ 按 `Esc` 键 +----------------+
|
| 按 `:` 键
v
+----------------+
| 末行模式 |
| (Last Line Mode)|
+----------------+
基本操作:启动、保存与退出
这是每个 vi
新手必须掌握的第一步。
启动
vi
:vi filename
:打开或创建名为filename
的文件,如果文件不存在,则在保存时会创建。vi
:不指定文件名,直接打开一个空白缓冲区,退出时需要指定文件名。
保存与退出(在末行模式下操作):
w
:保存文件,但不退出。w filename
:将当前内容另存为filename
。q
:退出vi
,如果文件已被修改但未保存,则会提示错误。wq
或x
:保存文件并退出,这是最常用的组合命令。q!
:强制退出,不保存对文件所做的任何修改,当您想放弃所有更改时非常有用。
高效编辑:光标移动与文本操作
在命令模式下,vi
提供了丰富的光标移动和文本编辑命令,让双手无需离开键盘主键区即可完成所有操作。
光标移动命令
命令 | 功能 | 说明 |
---|---|---|
h | 左移一格 | 等同于方向键左 |
j | 下移一行 | 等同于方向键下 |
k | 上移一行 | 等同于方向键上 |
l | 右移一格 | 等同于方向键右 |
w | 移动到下一个单词的开头 | Word |
b | 移动到上一个单词的开头 | Back |
0 | 移动到行首 | 数字零 |
^ | 移动到本行第一个非空字符 | |
移动到行尾 | ||
gg | 移动到文件第一行 | |
G | 移动到文件最后一行 | |
Ctrl + f | 向下翻一页 | Forward |
Ctrl + b | 向上翻一页 | Backward |
文本编辑命令
命令 | 功能 | 说明 |
---|---|---|
i | 在光标前插入 | Insert |
a | 在光标后插入 | Append |
o | 在当前行下方新开一行并进入插入模式 | |
x | 删除光标所在处的字符 | |
dd | 删除光标所在行 | |
dw | 删除从光标处到下一个单词开头的内容 | Delete Word |
yy | 复制光标所在行 | Yank |
p | 在光标下方粘贴 | Paste |
P | 在光标上方粘贴 | |
u | 撤销上一步操作 | Undo |
Ctrl + r | 重做(撤销的撤销) | Redo |
高级功能:搜索与替换
vi
的搜索和替换功能非常强大,尤其适合处理大型配置文件或代码。
搜索(在命令模式下操作):
/pattern
:从光标位置向下搜索字符串pattern
。?pattern
:从光标位置向上搜索字符串pattern
。n
:重复上一次的搜索,方向相同。N
:重复上一次的搜索,方向相反。
替换(在末行模式下操作):
s/old/new/
:将当前行第一个old
替换为new
。s/old/new/g
:将当前行所有的old
替换为new
。%s/old/new/g
:将整个文件中所有的old
替换为new
,这是最常用的全局替换命令。%s/old/new/gc
:在替换前逐个询问用户是否确认(c
代表 confirm)。
实践演练:一个完整的工作流程
假设我们需要在 CentOS 7.0 中创建一个名为 test.conf
的配置文件。
- 打开文件:在终端中输入
vi test.conf
并回车,此时进入vi
的命令模式,屏幕为空。 - 进入插入模式:按下
i
键,屏幕左下角会显示-- INSERT --
,表示已进入插入模式。 - :
# This is a test configuration file. server_name = myserver port = 8080
- 发现错误:假设我们发现端口号应该是
9090
而不是8080
。 - 返回命令模式:按下
Esc
键。 - 移动光标:使用方向键或
j
键将光标移动到port = 8080
这一行。 - 删除并修改:
- 按下
0
将光标移动到行首。 - 按下
f8
(查找字符’8’)将光标移动到’8’上。 - 按下
2x
删除两个数字’80’。 - 按下
i
进入插入模式,输入90
。
- 按下
- 保存并退出:按下
Esc
确保在命令模式,然后输入wq
并回车。
至此,您已经成功使用 vi
完成了一次完整的编辑任务,熟练掌握这些基础和进阶命令,将使您在 CentOS 7.0 的命令行环境中如鱼得水。
相关问答FAQs
问题1:我在 vi
里做了很多修改,但我想放弃所有修改并直接退出,应该怎么办?
解答: 这是一个非常常见的情况,如果您想不保存任何更改而强制退出 vi
,请按照以下步骤操作:
- 确保您处于命令模式(如果不在,请按
Esc
键)。 - 输入冒号 进入末行模式。
- 在底部的命令行中输入
q!
并按Enter
键。
这里的q
代表退出,而 是强制操作符,它会忽略所有未保存的修改,直接关闭编辑器。
问题2:在编辑一个很长的脚本或配置文件时,我希望能显示行号以便定位,该如何开启?
解答: 在 vi
中开启行号显示非常简单,这同样是在末行模式下完成的。
- 按下
Esc
键确保处于命令模式。 - 输入冒号 进入末行模式。
- 输入
set number
或其简写形式set nu
,然后按Enter
键,屏幕左侧就会立即显示行号。
这个设置是临时的,仅在当前这次vi
会话中有效,如果您希望每次打开vi
都默认显示行号,可以在您的主目录下创建一个名为.vimrc
的文件(如果使用的是vi
而非vim
,则为.exrc
),并在文件中添加set number
这一行,这样设置就会永久生效。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复