、
linux的目录结构
/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/bin、/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系统管理员root的家目录。
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
三 常用命令
1 基本用法
命令格式:
command [options] [parameter1]...
命令 [选项] [参数]
说明:command: 命令名,相应功能的英文单词或单词的缩写; [options]:选项,可用来对命令进行控制,也可以省略,[]代表可选; parameter1 …:传给命令的参数:可以是零个一个或多个
例如:ls -l /bin
--help:命令的帮助信息,如 ls --help
man:manual, 例如 man ls
空格键:显示手册页的下一屏
Enter键:一次滚动手册页的一行
b:回滚一屏
f:前滚一屏
q:退出man命令
h:列出所有功能键
/word:搜索word字符串
history:列举执行过的命令
clear :清屏
1 文件和目录管理命令
绝对路径:从根目录开始的路径
相对路径:从当前位置开始的路径
. 当前目录
.. 上一级目录
~ 表示用户的家目录
ls 显示文件和目录列表
-l 列出文件的详细信息
-a 列出当前目录所有文件,包含隐藏文件,以“.”开头的文件为隐藏文件
-h:以人性化方式显示文件大小
其他:
alias
ll
la
通配符:
ls d*:查找以d开头的文件
ls *.c:查找以.c结尾的文件
ls ?.c:只找第一个字符任意,后缀为.c的文件,?代表文件名中任意一个字符
ls a.?:前2字符为a.,最后一个字符任意的文件
ls [a-f]*:找到从a到f范围内的的任意一个字符开头的文件,其中[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
注意:如果要使通配符作为普通字符使用,可以在其前面加上转义字符\。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。
Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中
ls > a.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )
ls >> a.txt 内容追加到文件最后面
cd 切换目录 ,直接输入cd会回到家目录
cd / 切换到根目录
cd .. 回到上一级目录
cd ~ 切换到家目录
cd – 回到上次所在目录
pwd 显示当前所在路径
touch 生成一个空内容文件
touch a.txt
touch a.txt b.txt ,可以同时生成多个空内容文件
echo 生成一个带内容文件
echo abcd > a.txt(>重定向 , >> 追加内容)
cat从头到尾显示文本文件内容,还可以合并文件内容
cat a.txt b.txt > c.txt
tac从尾部开始反向显示文件内容
nl 查询所有内容,显示行号
head 从头部开始查询指定行的内容,默认10行
head -20 XXX 指定显示20行的内容
tail 从文件尾部查询指定行内容
more分页显示文本文件内容
空格 下一页内容
回车 下一行内容
q 退出该命令
mkdir 创建目录
mkdir test 创建test文件夹的目录
-p 父目录不存在情况下先生成父目录
比如 mkdir -p a/b/c
sudo mkdir /haha: 以管理员权限运行命令,并不会改变当前用户的权限
rmdir 删除空目录
rm 删除文件或目录,切记,使用rm命令是直接删除,不会放到回收站
-i 交互式删除
-r 递归删除该目录及目录下的所有文件,删除目录时,必须使用
-f 强制删除文件或目录,不提示
比如删除不存在的文件时,会提示:
rm: 无法删除'a.txt': 没有那个文件或目录
cp 拷贝文件或目录,复制过程中可以改名
-a该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f如果已经存在,不提示
-i交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v显示拷贝进度
mv 移动文件或目录、文件
mv aaa bbb 将aaa改名为bbb
-f 禁止交互式操作,如有覆盖也不会给出提示
-i 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v 显示移动进度
find 在文件系统中查找指定的文件
find ./ -name test.sh 查找当前目录下所有名为test.sh的文件,还可以使用-iname, 表示忽略大小写
find ./ -name '*.sh' 查找当前目录下所有后缀为.sh的文件,必须使用引号括起来,否则可能会报错
find ./ -name "[A-Z]*" 查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M 查找在/tmp 目录下等于2M的文件
find /tmp -size +2M查找在/tmp 目录下大于2M的文件
find /tmp -size -2M 查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M查找当前目录下大于4k,小于5M的文件
find ./ -perm 0777 查找当前目录下权限为 777 的文件或目录
错误:find . -name a.txt b.txt
find: 路径必须在表达式之前: b.txt
用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]
Find . -name *.txt, * 相当于终端下的通配符,整个命令就相当于 find . -name a.txt b.txt,直接运行类似这样的命令报“find: 路径必须在表达式之前”,因为-name后面只能跟一个参数,解决方案:
find . -name \*.txt
find . -name '*.txt'
wc 统计文本文档的行数,单词数,字节数
-l 显示一个文件的行数
-c 显示一个文件的字节数
-m 显示一个文件的字符数
-L 显示一个文件中的最长行的长度
每行结尾的换行符也算一个字符,空格也算一个字符 ,因为采用UTF-8编码,所以一个汉字在这里被转换为3字节 ,当使用-m选项时,一个汉字就作为一个字符计算
grep 在指定的文本文件中查找指定的字符串
grep格式一般写为:grep [-选项] ‘搜索内容’文件名
例如在redis.conf文件中查找‘redis’, -n 显示匹配的行和行号
grep -n 'redis' redis.conf
注意:grep搜索内容串可以是正则表达式
搜寻以 a 开头的行: grep -n '^a' haha.txt
-v显示不包含匹配文本的所有行(相当于求反)
-n显示匹配行及行号
-i忽略大小写
ln 建立链接文件
硬链接,会改变引用计数,链接的文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在。修改一份,对其他同样产生影响。硬链接只能链接普通文件,不能链接目录
软连接(符号链接) –s,软链接不占用磁盘空间,源文件删除则软链接失效,相当于windows系统下的快捷方式
注意:如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径,否则创建的软链接不能使用
| ,管道
一个命令的输出可以通过管道作为另一个命令的输入。左边将内容放入管道,右边从管道取内容处理
比如 ls –al | more 可以分屏显示列出的文件夹中的内容
2 系统管理命令
cal 查看日历
date 查看时间
date '+%Y%m%d' 以指定格式显示
%Y,%y 年
%m 月
%d 日
%H 时
%M 分
%S 秒
whoami 查看当前用户
通过cat /etc/passwd查看系统用户信息
who 显示在线登录用户
-m 只显示运行who命令的用户名、登录终端和登录时间
-q或--count 只显示用户的登录账号和登录用户的数量
--heading 显示列标题
hostname 显示主机名称
uname显示系统信息,如内核版本号、硬件架构、主机名称和操作系统类型等 –a 显示全部的信息
stat 显示指定文件的详细信息,比ls命令显示内容更多
文件:'b.txt'
大小:0 块:0 IO 块:4096 普通空文件
设备:801h/2049d Inode:144780 硬链接:1
权限:(0664/-rw-rw-r--) Uid:( 1000/ renr) Gid:( 1000/ renr)
最近访问:2018-05-07 20:21:10.205181290 +0800
最近更改:2018-05-07 20:18:48.000000000 +0800
最近改动:2018-05-07 20:35:09.694050180 +0800
创建时间:-
top 动态显示运行的进程
q退出显示
ps 显示瞬间的进程状态
-e 显示所有的进程
-a 显示现行终端上的所有进程,包括其他用户的进程
-u 以用户为主的状态
-x 显示没有控制终端的进程
一般是-aux一起使用
kill 杀死一个进程 kill -9 进程号
du 显示指定的文件(目录)已使用的磁盘空间的总量
-s显示指定文件或目录占用的数据块
du -sh examples.desktop,其中-h表示人性化方式显示所占空间大小
df 显示文件系统磁盘空间的使用情况
文件系统 1K-块 已用 可用 已用% 挂载点
udev 466588 0 466588 0% /dev
tmpfs 98588 4944 93644 6% /run
/dev/sda1 19478204 5499144 12966580 30% /
tmpfs 492928 188 492740 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 492928 0 492928 0% /sys/fs/cgroup
tmpfs 98588 32 98556 1% /run/user/108
tmpfs 98588 0 98588 0% /run/user/1000
tmpfs是一种虚拟内存文件系统,是基于内存的文件系统
free 显示当前内存和交换空间的使用情况
-h 人性化方式查看
ifconfig 显示网络接口信息
ping 测试网络的连通性
3 开关机命令
shutdown系统关机 shutdown 命令可以安全的关闭Linux系统,shutdown命令必须有超级用户才能执行。Shutdown命令执行后会以广播的形式通知正在系统中工作的所有用户,
reboot 重新启动操作系统
shutdown –r now 重新启动操作系统,shutdown会给别的用户提示
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:25 系统在今天的20:25 会关机
shutdown -h +10 系统再过十分钟后自动关机
init 0 关机
init 6 重启
4 压缩打包命令
tar :打包、拆包命令
tar 选项 <打包后的文件> <欲打包的文件或目录>
- c :创建的一个归档文件 ,即打包文件夹
- x :拆包
- z :以gzip 格式压缩
- j :以bzip2格式压缩
- v :显示打包或者拆包的文件信息
- f : 后面紧接一个 归档文件,必须放在最后
-t: 列出归档文件中包含的内容,一般与-f一起使用
-C:拆包到指定目录
- 打包文件
tar -cvf news.tar *.txt
- 拆包文件
tar -xvf news.tar
gzip压缩与解压,不能压缩目录
压缩或解压后,原来的文件相当于删除了
-r 目录 :递归压缩目录下的子文件
不是直接压缩整个文件夹,而是压缩文件夹中的文件
-d :解压
gzip news.tar , 压缩文件,压缩后的文件的后缀为.gz
gzip a.txt b.txt 压缩多个文件
gzip -d news.tar.gz 解压文件
bzip2压缩与解压,后缀.bz2
-f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数;
-k:bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数
-s:降低程序执行时内存的使用量;
-v:压缩或解压缩文件时,显示详细的信息;
-z:强制执行压缩;
压缩:
bzip2 文件名 或 bzip2 -z 文件名
解压:
bzip2 -d 文件.bz2 或 bunzip2 文件.bz2
打包及压缩
- 打包及压缩
tar -czvf news.tar.gz *.txt
- 拆包及解压缩
tar -xzvf news.tar.gz
四 用户账户管理
linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。
普通用户:普通用户在系统上的任务是进行普通操作
超级用户:管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。
Ubuntu中的超级管理员用root表示,root用户在系统中拥有最高权限
通过/etc/passwd 可以查看系统中用户的信息
通过/etc/shadow 可以查看系统中用户的密码信息
useradd 用户名
-d 指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录
-m 自动建立目录
sudo useradd -d /home/test test -m
-g 指定组名称
–u(UID号)
–s(SHELL)
userdel 用户名 (删除用户账号)
–r 用户,会删除用户和文件夹
使用usermod修改用户信息
–u新UID
–g 修改默认组名
-G 向其他组添加
sudo usermod –u 1007 –g group2 –G root haha
将haha用户uid修改为1007,默认组改为系统中已经存在的group2,并且加入到系统管理员(GID 0)组。
–L 锁定用户账号密码
sudo usermod -L test
–U 解锁用户账号
sudo usermod -U test
组账户维护命令
通过/etc/group 可以查看系统中组的信息
groupadd 组账户名 (创建新组)
–g 指定组GID
groupmod –g 更改组的GID
–n 更改组账户名
例如:sudo groupmod haha -g 1020 -n heihei
groupdel 组账户名 (删除指定组账户)
口令维护命令
passwd 用户账户名 (设置用户口令)
–l 用户账户名 (锁定用户账户)
–u 用户账户名 (解锁用户账户)
–d 用户账户名 (删除账户口令)
gpasswd –a 用户账户名 组账户名 (将指定用户添加到指定组)
–d 用户账户名 组账户名 (将用户从指定组中删除)
chown 修改文件目录所属用户[及用户组],
如: sudo chown test[:test] a.txt
如果是修改文件夹所属用户,文件夹中的内容不会改变,递归操作需要加'-R'选项 ,如sudo chown -R test a.txt
chgrp 修改文件所属用户组
如:sudo chgrp test a.txt
文件权限是指对文件的访问权限,包括多文件的读、写、删除和执行。在linux下每个用户都有不同的权限,普通用户只能在自己的主目录下进行写操作,在主目录之外,普通用户只能进行查找,读取操作。
三种基本权限
R 读权限,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限
W 写权限,对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
X 执行权限,对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限
ls –l 文件名
显示信息包含:文件类型(d 目录,- 普通文件,l 链接文件),文件权限,文件的属主,文件的所属组,文件的大小,文件的创建时间,文件的名称
-rw-r--r-- 1 renr users 2254 2006-05-20 13:47 tt.htm
从第二个字符起rw-是说用户renr有读、写权,没有运行权,接着的r--表示用户组users只有读权限,没有运行权,最后的r--指其他人(others)只有读权限,没有写权和运行权。
chmod设置文件或目录的访问权限
chmod字符设置法
chmod [who] [+ | - | =] [mode] 文件名/目录
(1)who :
表示操作对象可以是以下字母的一个或者组合
u 表示 用户 user ,g表示用户组group,o表示其他用户,a表示所有用户是系统默认的。
(2)操作符号:
+ 表示添加某个权限
- 表示取消某个权限
= 赋予给定的权限,取消文档以前的所有权限。
(3)mode
表示可执行的权限,可以是 r、w、x
(4)文件名
文件名可以使空格分开的文件列表。
chmod u=rwx,g+r,o+r 1.txt
chmod o=rx a.txt
chmod ug+x a.txt
chmod 数字设定法
数字设定法中数字表示的含义,0表示没有任何权限,1表示有可执行=x,2表示有可执行权限=w,4表示有可读权限=r。
如 chmod 755 file_name
新建用户执行sudo命令
a. 切换到root用户下
b. 添加sudo文件的写权限,命令是:
chmod u+w /etc/sudoers
c. 编辑sudoers文件
vi /etc/sudoers
找到 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是指定的用户名)
sudoers文件中可以添加下面四行中任意一条
user名 ALL=(ALL) ALL
%group名 ALL=(ALL) ALL
user名 ALL=(ALL) NOPASSWD: ALL
%group名 ALL=(ALL) NOPASSWD: ALL
第一行:允许用户执行sudo命令(需要输入密码).
第二行:允许用户组里面的用户执行sudo命令(需要输入密码).
第三行:允许用户执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组里面的用户执行sudo命令,并且在执行的时候不输入密码.
五 软件管理
在linux上,一个软件包通常由二进制程序,库文件,配置文件和帮助文件组成。 其中:
二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin这几个目录下边;
库文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/local/lib64这些目录下;
配置文件一般都是放在/etc这个目录下;
而最基本的man帮助文件则是放在/usr/share/man这个目录下的。
在Linux中,软件的安装方式一般有四种:
通用二进制编译:由志愿者把开发完成的源代码编译成二进制文件,打包后发布在网络上,大家都可以通过网络进行下载,到本地之后,经过解压配置就可以使用。
软件包管理器:使用包管理工具安装,有时候必须要解决软件包之间的依赖问题,例如rpm和deb等。
软件包前端管理工具:可以自动解决软件包依赖关系,例如yum和apt-get等。
源码包安装:从网络上下载软件的源码包到本地计算机,用gcc等编译工具编译成二进制文件后才能使用,有时必须要解决库文件的缺失问题。
1 apt-get
使用国内源,比如
阿里云开源镜像站 http://mirrors.aliyun.com/
网易开源镜像站 http://mirrors.163.com/
清华大学开源镜像站 https://mirrors.tuna.tsinghua.edu.cn/
以阿里云镜像为例:
备份/etc/apt/sources.list
修改sources.list中内容为:
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
更新源:sudo apt-get update
Ubuntu软件操作的相关命令:
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖那些包
2 使用dpkg安装.deb文件
-i:安装
-r:卸载
-l:查看软件包信息
-L:查看软件安装目录
以安装sublime为例:
dpkg -i sublime-text_build-3083_amd64.deb
dpkg -l | grep sublime 找到安装后软件包的名称
dpkg -L sublime-text
dpkg -r sublime-text
六 OpenSSH
SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH是芬兰一家公司开发。但是受到版权和加密算法限制,现在很多人都使用OpenSSH。OpenSSH是SSH的替代软件,免费。
OpenSSH由客户端和服务端组成。
OpenSSH提供两种级别的验证方式。
(1)基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
(2)基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存。
打开、新建文件:
vim filename 打开/新建一个文件
!v 打开最后使用vim打开的文件
1 命令模式
刚打开编辑器时,就处于命令模式下
2 编辑模式
命令模式下,输入i、a、o等,进入编辑模式
退出编辑模式:在编辑模式下,点击esc按键,回到命令模式
i: 插入光标前一个字符
I: 插入行首
a: 插入光标后一个字符
A: 插入行未
o: 向下新开一行,插入行首
O: 向上新开一行,插入行首
3 末行模式
在命令模式下,输入冒号”:”,进入该模式
比如 :set number 显示行号 :set nonumber 取消行号
保存: 在命令模式下 :wq 保存并退出
:q 在未修改状态下,直接退出
:q! 修改内容后,强制退出,但是不保存修改内容
ZZ(shift + zz) 保存退出
:%s/原内容/新内容/[g] 所有行内容替换,g表示全局(默认只能替换一行中第一处)
:m,ns/原内容/新内容/[g] | m到n行内容替换
:n 将光标定位到第n行,n表示行号
3 常用命令(了解)
注:需要在命令模式下输入
gg:回到首行
ngg:n表示行数,跳转到指定行,如3gg,表示跳到第三行
G:回到尾行
^/数字0 , 表示定位到行首
$:也就是shift+4,定位到行尾
yy:复制行
nyy:复制指定行数的内容,如3yy,表示从指定位置开始,复制3行内容
p:把复制的内容拷贝到指定位置的下一行
dd:删除行
ndd:删除指定行数的内容
u:撤销原来的操作
Ctrl+r 反撤销
ggdG 删除所有的内容
命令模式下输入/,进入搜索模式,n搜索下一个匹配字符串的位置 ,N搜索上一个