[步骤] AIDE 的使用 (高级入侵检测环境:Adevanced Intrusion Detection Environment) (openSUSE & SLE 版)

步骤一:安装 AIDE

# zypper -n install aide

步骤二:生成 AIDE 的配置文件
2.1 生成 AIDE 配置文件的模板

# /usr/bin/aide --init
AIDE initialized database at /var/lib/aide/aide.db.new

Number of entries:      62624

2.2 将 AIDE 配置文件的模板转换成配置文件

# mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

步骤三:使用 AIDE

# /usr/bin/aide --check
AIDE found differences between database and filesystem!!

Summary:
  Total number of entries:      62623
  Added entries:                0
  Removed entries:              1
  Changed entries:              0

(补充:AIDE 要检查哪些文件不检查哪些文件可以在 /etc/aide.conf 中设置)

[内容] Linux acl 权限

案例目录:

案例一:给某一个文件或目录添加 acl
1.1 给某一个文件或目录添加一个用户的 acl
1.2 给某一个文件或目录添加一个组的 acl
1.3 递归给某一个目录和目录里的所有内容添加一个 acl

案例二:删除某一个文件或目录的 acl
2.1 删除某一个文件或目录一个用户的 acl
2.2 删除某一个文件或目录一个组的 acl
2.3 删除某一个文件或目录的所有 acl
2.4 递归删除某一个文件或目录的 acl
2.5 递归删除某一个文件或目录的所有 acl

案例三:显示某一个文件或目录的 acl

案例四:备份和还原某一个文件或目录的 acl
4.1 备份某一个文件或目录的 acl
4.2 还原某一给文件或目录的 acl

具体的案例:

案例一:给某一个文件或目录添加 acl
1.1 给某一个文件或目录添加一个用户的 acl

# setfacl -m u:zhumingyu:r-x /var

(补充:这里以在 /var 目录上给 zhumingyu 用户设置读和执行的 acl 权限为例)

1.2 给某一个文件或目录添加一个组的 acl

# setfacl -m g:zhumingyu:r-x /var

(补充:这里以在 /var 目录上给 zhumingyu 组设置读和执行的 acl 权限为例)

1.3 递归给某一个目录和目录里的所有内容添加一个 acl

# setfacl -Rm u:zhumingyu:r-x /var

(补充:这里以在 /var 目录上递归给 zhumingyu 组设置读和执行的 acl 权限为例)

案例二:删除某一个文件或目录的 acl
2.1 删除某一个文件或目录一个用户的 acl

# setfacl -x u:zhumingyu /var

(补充:这里以在 /var 目录上删除 zhumingyu 用户的 acl 权限为例)

2.2 删除某一个文件或目录一个组的 acl

# setfacl -x g:zhumingyu /var

(补充:这里以在 /var 目录上删除 zhumingyu 组的 acl 权限为例)

2.3 删除某一个文件或目录的所有 acl

# setfacl -b /var

(补充:这里以在 /var 目录上删除所有 acl 权限为例)

2.4 递归删除某一个文件或目录的 acl

# setfacl -Rx u:zhumingyu:r-x /var

(补充:这里以在 /var 目录上递归删除 zhumingyu 用户的 acl 权限为例)

2.5 递归删除某一个文件或目录的所有 acl

# setfacl -Rb /var

(补充:这里以在 /var 目录上递归删除所有 acl 权限为例)

案例三:显示某一个文件或目录的 acl

# getfacl /var

(补充:这里以显示 /var 目录的 acl 权限为例)

案例四:备份和还原某一个文件或目录的 acl
4.1 备份某一个文件或目录的 acl

# getfacl -R /var > /acl.backup

(补充:这里以备份 /var 目录的 acl 权限为例)

4.2 还原某一给文件或目录的 acl

# setfacl --restore /acl.backup

(补充:这里以还原 /var 目录的 acl 权限为例)

[内容] Linux SELinux 标签的设置

内容目录:

内容一:开启 SELinux 标签
1.1 修改 SELinux 配置文件
1.2 重启系统

内容二:SELinux 的常见特性
2.1 SELinux 特性一:创建的文件或目录会自动继承其父目录的 SELinux 标签
2.1.1 在 /var/www/html/ 目录下新创建 index.html 文件
2.1.2 显示 /var/www/html/ 目录的 SELinux 标签
2.1.3 显示新生成的 /var/www/html/index.html 标签
2.2 SELinux 特性二:移动文件或目录和保留属性复制文件或目录不会改变其 SELinux 标签,普通复制会改变 SELinux 标签
2.2.1 在 /tmp/ 目录下新创建 file1,file2,file3 文件
2.2.2 显示 ls -Zd /tmp/ 目录的 SELinux 标签
2.2.3 显示新创建文件的标签
2.2.4 将 /tmp/file1 复制到 /var/www/html/
2.2.5 将 /tmp/file2 移动到 /var/www/html/
2.2.6 将 /tmp/file2 复制到 /var/www/html/,并使用 -a 选项保留文件属性
2.2.7 显示这些文件的 SELinux 标签

内容三:显示某个文件或目录 SELinux 标签
3.1 显示某个文件 SELinux 标签
3.2 显示某个目录 SELinux 标签
3.3 显示某个进程 SELinux 标签

内容四:显示所有 SELinux 标签
4.1 显示所有文件和目录的 SELinux 标签
4.2 显示所有端口的 SELinux 标签
4.3 显示所有进程的 SELinux 标签

内容五:设置 SELinux 标签
5.1 设置文件和目录 SELinux 标签
5.1.1 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.1 semanage fcontext 命令的常用选项
5.1.1.2 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.2.1 使用 smanage fcontext 命令设置 SELinux 标签
5.1.1.2.2 使用 restorecon 命令修改默认上下文
5.1.2 使用 chcon 命令设置 SELinux 标签
5.2 设置端口 SELinux

具体的内容:

内容一:开启 SELinux 标签
1.1 修改 SELinux 配置文件

# vim /etc/selinux/config

将以下内容:

......
SELINUX=disabled
......

修改为:

......
SELINUX=enforcing
......

或者:

......
SELINUX=perssive
......

1.2 重启系统

# reboot

内容二:SELinux 的常见特性
2.1 SELinux 特性一:创建的文件或目录会自动继承其父目录的 SELinux 标签
2.1.1 在 /var/www/html/ 目录下新创建 index.html 文件

# echo website > /var/www/html/index.html

(补充:这里以在 /var/www/html/ 目录下生成 index.html 文件为例)

2.1.2 显示 /var/www/html/ 目录的 SELinux 标签

# ls -dZ /var/www/html/
unconfined_u:object_r:httpd_sys_content_t:s0 index.html

2.1.3 显示新生成的 /var/www/html/index.html 标签

# ls -Z /var/www/html/index.html/index.html 
unconfined_u:object_r:httpd_sys_content_t:s0 index.html

(补充:从内容 1.1.2 和内容 1.1.3 命令的结果可以看出新生成的文件或其父目录的 SELinux 标签一致)

2.2 SELinux 特性二:移动文件或目录和保留属性复制文件或目录不会改变其 SELinux 标签,普通复制会改变 SELinux 标签
2.2.1 在 /tmp/ 目录下新创建 file1,file2,file3 文件

# touch /tmp/file{1,2,3}

2.2.2 显示 ls -Zd /tmp/ 目录的 selinux 标签

# ls -Zd /tmp/
unconfined_u:object_r:user_tmp_t:s0 /tmp/

2.2.3 显示新创建文件的标签

# ls -Z /tmp/file*
unconfined_u:object_r:user_tmp_t:s0 /tmp/file1  unconfined_u:object_r:user_tmp_t:s0 /tmp/file2
unconfined_u:object_r:user_tmp_t:s0 /tmp/file3

2.2.4 将 /tmp/file1 复制到 /var/www/html/

# cp /tmp/file1 /var/www/html/

2.2.5 将 /tmp/file2 移动到 /var/www/html/

# mv /tmp/file2 /var/www/html/

2.2.6 将 /tmp/file2 复制到 /var/www/html/,并使用 -a 选项保留文件属性

# cp -a /tmp/file3 /var/www/html/

2.2.7 显示这些文件的 SELinux 标签

# ls -Z /var/www/html/file*
unconfined_u:object_r:httpd_sys_content_t:s0 file1           unconfined_u:object_r:user_tmp_t:s0 file3
unconfined_u:object_r:user_tmp_t:s0 file2

(补充:从内容 2.2.3 和内容 2.2.7 命令的结果可以看出只有普通复制会改变 SELinux 标签 )

内容三:显示某个文件、目录或进程 SELinux 标签
3.1 显示某个文件 SELinux 标签

# ls -Z <file>

3.2 显示某个目录 SELinux 标签

# ls -Zd <directory>

3.3 显示某个进程 SELinux 标签

# ps -auxZ | grep <process>

内容四:显示所有 SELinux 标签
4.1 显示所有文件和目录的 SELinux 标签

# semanage fcontext -l

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

4.2 显示所有端口的 SELinux 标签

# semanage port -l

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

4.3 显示所有进程的 SELinux 标签

# ps -auxZ

内容五:设置 SELinux 标签
5.1 设置文件和目录 SELinux 标签
5.1.1 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.1 semanage fcontext 命令的常用选项

1) -a 添加或变更 SELinux 标签
2) -d 删除 SELinux 标签
3) -l 显示所有的 SELinux 标签
4) -t 指定上下文 SELinux 标签
5) -v 显示修改 SELinux 标签的内容
6) -R 递归设置 SELinux 标签
7) -m 变更 SELinux 标签

5.1.1.2 使用 semanage fcontext 命令和 restorecon 命令设置文件和目录的 SELinux 标签
5.1.1.2.1 使用 smanage fcontext 命令设置 SELinux 标签

# semanage fcontext -a -t httpd_sys_content_t "/tmp(/.*)?"

(补充:这里以将 /tmp(/.*) 的 SELinux 标签设置为 httpd_sys_content_t 为例)

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

5.1.1.2.2 使用 restorecon 命令修改默认上下文

# restorecon -Rv /tmp
Relabeled /tmp from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0

5.1.2 使用 chcon 命令设置 SELinux 标签

# chcon -t httpd_sys_content_t /tmp/*

(补充:这里以将 /tmp/* 的 SELinux 标签设置为 httpd_sys_content_t 为例)

5.2 设置端口 SELinux

# semanage port -a -t http_port_t -p tcp 82

(补充:这里以将 TCP 82 端口的 SELinux 标签设置为 http_port_t 为例)

(注意:需要单独安装 policycoreutils-python-utils 后才能使用 semanage 命令)

[内容] Linux SELinux 布尔 (boolean) 值的设置

内容目录:

内容一:开启 SELinux 布尔(boolean)值
1.1 显示当前 SELinux 状态
1.2 将 SELinux 的状态设置为 Enforcing 以开启布尔(boolean)值
1.2.1 当当前 SELinux 的状态为 Disabled 时开启布尔(boolean)值的方法
1.2.1.1 修改 SELinux 配置文件
1.2.1.2 重启系统
1.2.2 当当前 SELinux 的状态为 Perssive 时开启布尔(boolean)值的方法

内容二:显示所有 SELinux 布尔(boolean)值

内容三:布尔(boolean)值的管理
3.1 允许某一个 SELinux 布尔(boolean)值开启
3.1.1 临时允许某一个 SELinux 布尔(boolean)值开启
3.1.1.1 临时允许某一个 SELinux 布尔(boolean)值开启的格式
3.1.1.2 临时允许某一个 SELinux 布尔(boolean)值开启的案例
3.1.2 永久允许某一个 SELinux 布尔(boolean)值开启
3.1.2.1 永久允许某一个 SELinux 布尔(boolean)值开启的格式
3.1.2.2 永久允许某一个 SELinux 布尔(boolean)值开启的案例
3.2 取消某一个 SELinux 布尔(boolean)值开启
3.2.1 临时取消某一个 SELinux 布尔(boolean)值开启
3.2.1.1 临时取消某一个 SELinux 布尔(boolean)值开启的格式
3.2.1.2 临时取消某一个 SELinux 布尔(boolean)值开启的案例
3.2.2 永久取消某一个 SELinux 布尔(boolean)值关闭
3.2.2.1 永久取消某一个 SELinux 布尔(boolean)值开启的格式
3.2.2.2 永久取消某一个 SELinux 布尔(boolean)值开启的案例

具体的操作步骤:

内容一:开启 SELinux 布尔(boolean)值
1.1 显示当前 SELinux 状态

# getenforce

1.2 将 SELinux 的状态设置为 Enforcing 以开启布尔(boolean)值
1.2.1 当当前 SELinux 的状态为 Disabled 时开启布尔(boolean)值的方法
1.2.1.1 修改 SELinux 配置文件

# vim /etc/selinux/config

将以下内容:

......
SELINUX=disabled
......

修改为:

......
SELINUX=enforcing
......

1.2.1.2 重启系统

# reboot

1.2.2 当当前 SELinux 的状态为 Perssive 时开启布尔(boolean)值的方法

# setenfoce 1

(补充:系统重启后失效)

内容二:显示所有 SELinux 布尔(boolean)值

# semanage boolean -l

内容三:布尔(boolean)值的管理
3.1 允许某一个 SELinux 布尔(boolean)值开启
3.1.1 临时允许某一个 SELinux 布尔(boolean)值开启
3.1.1.1 临时允许某一个 SELinux 布尔(boolean)值开启的格式

# setsebool <boolean value> 1

或者:

# setsebool <boolean value> on

3.1.1.2 临时允许某一个 SELinux 布尔(boolean)值开启的案例

# setsebool httpd_can_network_connect 1

或者:

# setsebool httpd_can_network_connect on

3.1.2 永久允许某一个 SELinux 布尔(boolean)值开启
3.1.2.1 永久允许某一个 SELinux 布尔(boolean)值开启的格式

# setsebool -P <boolean value> 1

或者:

# setsebool -P <boolean value> on

3.1.2.2 永久允许某一个 SELinux 布尔(boolean)值开启的案例

# setsebool -P httpd_can_network_connect 1

或者:

# setsebool -P httpd_can_network_connect on

3.2 取消某一个 SELinux 布尔(boolean)值开启
3.2.1 临时取消某一个 SELinux 布尔(boolean)值开启
3.2.1.1 临时取消某一个 SELinux 布尔(boolean)值开启的格式

# setsebool <boolean value> 0

或者:

# setsebool <boolean value> off

3.2.1.2 临时取消某一个 SELinux 布尔(boolean)值开启的案例

# setsebool httpd_can_network_connect 0

或者:

# setsebool httpd_can_network_connect off

3.2.2 永久取消某一个 SELinux 布尔(boolean)值关闭
3.2.2.1 永久取消某一个 SELinux 布尔(boolean)值开启的格式

# setsebool -P <boolean value> 0

或者:

# setsebool -P <boolean value> off

3.2.2.2 永久取消某一个 SELinux 布尔(boolean)值开启的案例

# setsebool -P httpd_can_network_connect 0

或者:

# setsebool -P httpd_can_network_connect off

[命令] Linux 命令 vim (文件编辑)

内容目录:

内容一:vim 简介
1.1 vim 模式
1.2 使用 vim
1.2.1 通过 vim 打开某 1 个文件
1.2.2 通过 vim 打开某 1 个文件,并自动进入到某 1 行

内容二:vim 在命令模式下的操作
2.1 在命令模式下让光标移动
2.1.1 在命令模式下让光标网上移动
2.1.2 在命令模式下让光标网下移动
2.1.3 在命令模式下让光标网左移动
2.1.4 在命令模式下让光标网右移动
2.1.5 在命令模式下让光标移动到文件的指定行数
2.1.6 在命令模式下让光标移动到文件首尾
2.1.6.1 在命令模式下让光标移动到文件首部
2.1.6.2 在命令模式下让光标移动到文件尾部
2.2 在命令模式下删除数据
2.2.1 在某 1 行的范围内删除数据
2.2.1.1 在某 1 行的范围内删除 1 个字符
2.2.1.1.1 在光标所在行的范围内删除光标之后的 1 个字符
2.2.1.1.2 在光标所在行的范围内删除光标之前的 1 个字符
2.2.1.2 在某 1 行的范围内删除多个字符
2.2.1.2.1 在光标所在行的范围内删除光标之后的多个字符
2.2.1.2.2 在光标所在行的范围内删除光标之前的多个字符
2.2.1.2.3 在光标所在行的范围内删除光标之前的所有字符
2.2.1.2.4 在光标所在行的范围内删除光标之后的所有字符
2.2.2 进行整行的删除
2.2.2.1 删除光标所在行
2.2.2.2 从光标所在行开始删除多行
2.2.2.3 从光标所在行开始删除此行和后面的所有行
2.2.2.4 从光标所在行开始删除此行和前面的所有行
2.2.3 重复相同的删除操作
2.3 在命令模式下复制数据
2.3.1 在某 1 行的范围内复制数据
2.3.1.3 在光标所在行的范围内复制光标之前的所有字符
2.3.1.4 在光标所在行的范围内复制光标之后的所有字符
2.3.2 进行整行的复制
2.3.2.1 复制光标所在行
2.3.2.2 从光标所在行开始复制多行
2.3.2.3 从光标所在行开始复制此行和后面的所有行
2.3.2.4 从光标所在行开始复制此行和前面的所有行
2.4 在命令模式下复制数据
2.4.1 从光标所在行开始向上复制
2.4.2 从光标所在行开始向上复制
2.5 在命令模式下进入其他模式
2.5.1 在命令模式下进入输入模式
2.5.2 在命令模式下进入末行模式
2.5.3 在命令模式下进入视图模式
2.5.3.1 以行的方式进入视图模式
2.5.3.2 以字符的方式进入视图模式
2.5.3.3 vim 字符模式的使用案例
2.5.4 在命令模式下进入替换模式
2.6 在命令模式下的其他操作
2.6.1 将光标所在行与下面的行合并
2.6.2 重复上 1 动作
2.6.3 撤销上 1 个动作
2.6.4 保存此文当并退出 vim 模式

内容三:vim 在末行模式下的操作
3.1 在末行模式下对当前内容进行保存并退出 vim 模式
3.2 在末行模式下的行号设置
3.2.1 设置行号
3.2.2 取消行号
3.3 在末行模式下搜索
3.3.1 在末行模式下搜索关键字
3.3.1.1 向下查找匹配的关键字
3.3.1.2 向上查找匹配的关键字
3.3.2 在末行模式下搜索行号
3.4 在末行模式下替换关键字的案例
3.5 在末行模式进入命令模式
3.6 在末行模式下的其他设置

内容四:vim 在输入模式下的操作
4.1 在输入模式下输入内容
4.2 在输入模式下进入命令模式

具体的内容:

内容一:vim 简介
1.1 vim 模式简介

1) 命令模式:主要用于对文件进行批量编辑
2) 末行模式:主要用于保存退出文件
3) 输入模式:主要用于编辑文件

1.2 使用 vim
1.2.1 通过 vim 打开某 1 个文件

# vim <file>

(补充:此时将自动进入命令模式)

1.2.2 通过 vim 打开某 1 个文件,并自动进入到某 1 行

# vim +<line number> <file>

(补充:此时将自动进入命令模式)

内容二:vim 在命令模式下的操作
2.1 在命令模式下让光标移动
2.1.1 在命令模式下让光标网上移动

按下 “上方向” 键

或者:

按下 “k” 键

或者:

按下 “<任意数字>” 键再按下 “上方向” 键

(注意:此方法会向上方移动对应数字个光标位)

2.1.2 在命令模式下让光标网下移动

按下 “下方向” 键

或者:

按下 “j” 键

或者:

按下 “<任意数字>” 键再按下 “下方向” 键

(注意:此方法会向下方移动对应数字个光标位)

2.1.3 在命令模式下让光标网左移动

按下 “左方向” 键

或者:

按下 “h” 键

或者:

按下 “任意数字” 键之后再按下 “左方向” 键

(注意:此方法会向左方移动对应数字个光标位)

2.1.4 在命令模式下让光标网右移动

按下 “右方向” 键

或者:

按下 “l” 键

或者:

按下 “<任意数字>” 之后再按下 “右方向” 键

(注意:此方法会向右方移动对应数字个光标位)

2.1.5 在命令模式下让光标移动到文件的指定行数

按下 “<任意数字>” 键之后再按下 “G” 键

(注意:此方法会让光标移动到对应数字的行)

2.1.6 在命令模式下让光标移动到文件首尾
2.1.6.1 在命令模式下让光标移动到文件首部

按下 “g” 键再按下 “g” 键

2.1.6.2 在命令模式下让光标移动到文件尾部

按下 “G” 键

2.2 在命令模式下删除数据
2.2.1 在某 1 行的范围内删除数据
2.2.1.1 在某 1 行的范围内删除一个字符
2.2.1.1.1 在光标所在行的范围内删除光标之后的 1 个字符

按下 “x” 键

2.2.1.1.2 在光标所在行的范围内删除光标之前的 1 个字符

按下 “X” 键

2.2.1.2 在某 1 行的范围内删除多个字符
2.2.1.2.1 在光标所在行的范围内删除光标之后的多个字符

按下 “<任意数字>” 键之后再按下 “x” 键

(注意:此方法会在光标所在行的范围内从光标所在位置开始向后删除对应数字个字符)

2.2.1.2.2 在光标所在行的范围内删除光标之前的多个字符

按下 “<任意数字>” 键之后再按下 “X” 键

(注意:此方法会在光标所在行的范围内从光标所在位置开始向前删除对应数字个字符)

2.2.1.2.3 在光标所在行的范围内删除光标之前的所有字符

同时按下 “d” 键和 “0” 键

2.2.1.2.4 在光标所在行的范围内删除光标之后的所有字符

同时按下 “d” 键和 “$” 键

2.2.2 进行整行的删除
2.2.2.1 删除光标所在行

按下 “d” 键之后再按 “d” 键

2.2.2.2 从光标所在行开始删除多行

按下 “<任意数字>” 键之后再按 “d” 键之后再按下 “d” 键

(注意:此方法会从光标所在行开始向后删除到对应数字个行)

2.2.2.3 从光标所在行开始删除此行和后面的所有行

按下 “d” 键之后再按下 “G” 键

2.2.2.4 从光标所在行开始删除此行和前面的所有行

按下 “d” 键之后再按下 “1” 键之后再按下 “G” 键

或者:

按下 “d” 键之后再按下 “g” 键之后再按下 “g” 键

2.2.3 重复相同的删除操作

按下 “c” 键

2.3 在命令模式下复制数据
2.3.1 在某 1 行的范围内复制数据
2.3.1.3 在光标所在行的范围内复制光标之前的所有字符

同时按下 “y” 键和 “0” 键

2.3.1.4 在光标所在行的范围内复制光标之后的所有字符

同时按下 “y” 键和 “$” 键

2.3.2 进行整行的复制
2.3.2.1 复制光标所在行

按下 “y” 键之后再按下 “y” 键

2.3.2.2 从光标所在行开始复制多行

按下 “<任意数字>” 键之后再按下 “y” 键之后再按下 “y” 键

(注意:此方法会从光标所在行开始向后复制对应数字个行)

2.3.2.3 从光标所在行开始复制此行和后面的所有行

按下 “y” 键之后再按下 “G” 键

2.3.2.4 从光标所在行开始复制此行和前面的所有行

按下 “y” 键之后再按下 “1” 键之后再按下 “G” 键

或者:

按下 “y” 键之后再按下 “g” 键之后再按下 “g” 键

2.4 在命令模式下复制数据
2.4.1 从光标所在行开始向上复制

按下 “p” 键

2.4.2 从光标所在行开始向上复制

按下 “P” 键

2.5 在命令模式下进入其他模式
2.5.1 在命令模式下进入输入模式

1) 按下 “i” 键,在光标所在位置进入输入模式
2) 按下 “a” 键,在光标所在位置的后 1 个字符进入输入模式
3) 按下 “A” 键,在光标所在行的行尾进入插入模式
4) 按下 “I” 键,在光标所在行的行首进入插入模式
5) 按下 “o” 键,在光标所在行的下 1 行行首进入输入模式

2.5.2 在命令模式下进入末行模式

按下 “:” 键

2.5.3 在命令模式下进入视图模式
2.5.3.1 以行的方式进入视图模式

按下 “v” 键

或者:

按下 “V” 键

2.5.3.2 以字符的方式进入视图模式

同时按下 “ctrl” 键和 “v” 键

2.5.3.3 vim 字符模式的使用案例

1) 在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再选择对应的行首再按下 “d” 键或者 “x”键,删除在这些行行首的字符
2) 在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再选择对应的行首再按下 “I” 键再输入 <content> 再按 “esc” 键,在这些行行首插入这些内容
3) 在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再按下再按 “I” 键再按下 “g” 键再按 “g” 键再输入 <content> 再按 “esc” 键,在光标所在行以及前面的所有行的行首插入这些内容
4) 在光标所在行行首,同时按下 “ctrl” 键和 “v” 键再按下再按 “I” 键再按下 “G” 键再输入 <content> 再按 “esc” 键,在这光标所在行以及后面的所有行的行首插入这些内容

2.5.4 在命令模式下进入替换模式

按下 “R” 键

2.6 在命令模式下的其他操作
2.6.1 将光标所在行与下面的行合并

按下 “J” 键

2.6.2 重复上一动作

按下 “ctrl” 键和 “r” 键

或者:

按下 “.“ 键

2.6.3 撤销上 1 个动作

按下 “u” 键

2.6.4 保存此文当并退出 vim 模式

按下 “Z” 键之后再按下 “Z” 键

内容三:vim 在末行模式下的操作
3.1 在末行模式下对当前内容进行保存并退出 vim 模式

1) :w 保存当前内容
2) :w! 强制保存当前内容
3) :w <file> 保存当前内容到另 1 个名为 <file> 文件
4) :w! <file> 强制保存当前内容到另 1 个名为 <file> 文件
5) :q 退出 vim
6) :q! 强制推出 vim
7) :wq 保存当前内容并退出
8) :wq! 强制保存当前内容并退出
9) :wq <file> 保存当前内容到另 1 个名为 <file> 文件并退出
10) :wq! <file> 强制保存当前内容到另 1 个名为 <file> 文件并退出
11) :e! 放弃当前所有修改,将内容恢复到上次保存时

3.2 在末行模式下的行号设置
3.2.1 设置行号

:set nu

或者:

:set number

3.2.2 取消行号

:set nonu

或者:

:set nonumber

3.3 在末行模式下搜索
3.3.1 在末行模式下搜索关键字
3.3.1.1 向下查找匹配的关键字

:/<关键字> 之后按 “n” 键或者 “N” 键显示下 1 个匹配的关键字

3.3.1.2 向上查找匹配的关键字

:?<关键字> 之后按 “n” 键或者 “N” 键显示下 1 个匹配的关键字

3.3.2 在末行模式下搜索行号

:<行号> 之后按 “回车” 键

3.4 在末行模式下替换关键字的案例

1) :s /<old keyword>/<new keyword> #以 <new keyword> 替换光标所在行的第 1 个 <old keyword>
2) :s /<old keyword>/<new keyword>/g #以 <new keyword> 替换光标所在行的所有 <old keyword>
3) :1,5 s/<old keyword>/<new keyword>/g #以 <new keyword> 替换从 1 到 5 行的所有 <old keyword>
4) :,+5 s/<old keyword>/<new keyword>/g #以 <new keyword> 替换从光标所在行开始 5 行的所有 <old keyword>
5) :7,%s/<old keyword>/<new keyword>/g #以 <new keyword> 替换倒数第 7 行到最后 1 行的所有 <old keyword>
6) :%s/<old keyword>/<new keyword>/g #以 <new keyword> 替换全文的所有 <old keyword>

3.5 在末行模式进入命令模式

:按下 “esc” 键

3.6 在末行模式下的其他设置

1) :w /<file>,将当前内容另存为另 1 个名为 <file> 文件
2) :r /<file>,读取 <file> 文件里的内容到文本并直接插入到光标所在位置
3) :! <command>,在 vim 的命末行模式时使用 Linux 命令 <command>

内容四:vim 在输入模式下的操作
4.1 在输入模式下输入内容

正常键入内容即可

4.2 在输入模式下进入命令模式

按下 “esc” 键