Appearance
vi 编辑器
Vi 是 Linux 系统中最经典的终端文本编辑器,Vim(Vi Improved)是其增强版。掌握 Vi/Vim 是 Linux 系统管理的必备技能。
Vi/Vim 的三种模式
模式 | 功能 | 如何进入 |
---|---|---|
命令模式(Normal) | 执行复制、删除、搜索等操作 | 启动时默认进入,或按 ESC |
插入模式(Insert) | 输入/编辑文本 | 按 i 、a 、o 等进入 |
末行模式(Command-line) | 保存、退出、查找替换等 | 在命令模式下按 : |
命令模式
按键 | 功能 |
---|---|
h j k l | 左、下、上、右 |
w | 移动到下一个单词开头 |
b | 移动到上一个单词开头 |
e | 移动到当前单词末尾 |
^ | 移动到行首第一个非空白字符 |
$ | 跳到行尾 |
0 | 跳到行首 |
gg | 跳到文件开头 |
ngg | 跳到第n行 |
G | 转到文件最后一行开头 |
:n | 跳到第 n 行(如 :10 跳第 10 行) |
shirft + 9 | 跳转到文件开头 |
shirft + 0 | 跳转到文件末尾 |
Ctrl + f / Ctrl + b | 向下/上翻页 |
插入模式
进入插入模式
按键 | 功能 |
---|---|
i | 在光标前插入 |
a | 在光标后插入 |
I | 在当前行首插入 |
A | 在当前行尾插入 |
o | 在当前行下一行插入新行 |
O | 在当前行上一行插入新行 |
s | 删除当前字符并插入 |
S | 删除当前行并插入 |
复制/粘贴
按键 | 功能 |
---|---|
yy | 复制当前行 |
nyy | 从第n行开始复制n行 |
yw | 复制一个单词 |
p | 粘贴到光标后 |
P | 粘贴到光标前 |
删除/剪切
按键 | 功能 |
---|---|
x | 删除当前字符 |
dd | 删除当前行 |
ndd | 当前行向下删除n行 |
dw | 删除一个单词 |
d^ | 删除光标到行首字符 |
D | 删除光标到行尾字符 |
d$ | 删除光标到行尾字符 |
dG | 删除到文件末尾字符 |
u | 撤销 |
Ctrl + r | 重做 |
r | 字符替换 |
R | 进入替换模式,可以替换多个字符,按ESC退出模式 |
末行模式
命令 | 说明 |
---|---|
shirft + : | 进入末行模式 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
:q | 退出(未修改时) |
:q! | 强制退出,不保存 |
:w | 保存 |
w 新文件名 | 保存到新文件里 |
:wq 或 :x | 保存并退出 |
ZZ (大写) | 保存并退出(命令模式) |
查找与替换
命令 | 功能 |
---|---|
/关键词 | 向下搜索(按 n 下一个,N 上一个) |
?关键词 | 向上搜索(按 n 上一个,N 下一个) |
:%s/旧/新/g | 全局替换(默认替换首行的第一个,加g是所有。%代表全局) |
:%s/旧/新/gc | 替换时逐个确认 |
:set ff=unix | 将Windows下的符号改成Linux下的符号 |
经典案例
bash
:n s/旧/新/g # 指定行替换
:n,m s/旧/新/g # 从n行到m行进行替换
进阶技巧
1. 多文件编辑
命令 | 功能 |
---|---|
:e 文件名 | 打开另一个文件 |
:bn / :bp | 切换到下一个/上一个文件 |
:ls | 查看已打开的文件列表 |
2. 分屏操作
命令 | 功能 |
---|---|
:sp | 水平分屏 |
:vsp | 垂直分屏 |
Ctrl + w + h/j/k/l | 切换分屏 |
Ctrl + w + q | 关闭当前分屏 |
3. 宏录制
命令 | 功能 |
---|---|
q + 字母 | 开始录制宏(如 qa ) |
q | 停止录制 |
@ + 字母 | 执行宏(如 @a ) |
常用配置(~/.vimrc
)
bash
set number " 显示行号
set tabstop=4 " Tab 缩进 4 空格
set expandtab " Tab 转空格
set hlsearch " 高亮搜索
syntax on " 语法高亮
总结
i
进入编辑,ESC
返回命令模式:wq
保存退出,:q!
强制退出dd
删行,yy
复制,p
粘贴/关键词
搜索,:%s/旧/新/g
替换
Linux 防火墙
RHEL
bash
# 关闭防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld
Ubuntu
bash
# 查看
sudo ufw status
# 停止 ufw 服务:
sudo systemctl stop ufw
# 禁用 ufw 服务的自动启动:
sudo systemctl disable ufw