天天看点

个人笔记-Linux基础常用快捷键与命令终端常用命令说明远程管理命令说明用户、组及权限系统信息相关命令其他命令VI编辑器

Linux基础操作

  • 常用快捷键与命令
  • 终端常用命令说明
    • ls命令说明
    • cd命令说明
    • mkdir参数说明
    • rm参数说明
    • tree选项说明
    • cp选项说明
    • mv选项说明
    • cat选项说明
    • more操作键说明
    • grep选项及参数说明
    • 管道|使用说明
  • 远程管理命令说明
    • shutdown命令说明
    • ifconfig命令说明
    • ping命令说明
    • ssh命令说明
    • scp命令说明
  • 用户、组及权限
    • 权限列表
    • 超级用户
    • 创建/删除组
    • 用户管理
    • 查看用户信息
    • usermod命令说明
    • which命令说明
    • 修改文件权限
  • 系统信息相关命令
    • 时间和日期
    • 磁盘信息
    • 进程信息
  • 其他命令
    • 查找文件
    • 软链接
    • 打包和压缩
    • 软件安装
  • VI编辑器
    • 打开和新建文件
    • 三种工作模式
    • 命令模式命令
    • 末行模式命令
    • 编辑模式命令

常用快捷键与命令

终端命令格式:command [-options] [parameter] 即 命令名 + 选项(对命令进行控制,可省略)+ 参数(可以是0个、1个、多个)

终端相关::

1.调用终端:Ctrl/Command + Alt + T

2.放大终端字体:Ctrl/Command + Shift + =

3.缩小终端字体:Ctrl/Command + -

4.自动补全:Tab

5.曾用命令:↑ / ↓

6.退出执行当前命令: Ctrl + C

文件操作:

1.查看当前文件夹下的内容:ls (list)

2.查看当前所在文件夹:pwd (print work directory)

3.切换文件夹:cd (chang directory)

4.如果文件夹不存在,新建文件:touch

5.创建目录:mkdir (make directory)

6.删除指定文件名:rm (remove)

7.清屏:clear

8.以树状图列出文件目录结构:tree

9.复制文件或目录:cp 源文件 目标文件

10.移动文件或目录/重命名:mv 源文件 目标文件

11.查看文件内容、创建文件、文件合并、追加文件内容等功能:cat(concatenate)

12.分屏显示文件内容:more

13.搜索文本文件内容:grep

14.在终端中显示参数指定的文字,通常会和重定向联合使用:echo

15.重定向:

> 表示输出,会覆盖原有的内容
>> 表示追加,会将内容追加到已有文件的末尾

例1:

例2:

16.管道:|

17.使用gedit打开文件:gedit 文件名

18.执行当前路径下的某个文件:./文件名

远程管理:

1.关机/重启:shutdown 选项 时间

2.查看或配置网卡信息:

命令 作用
ifconfig 查看/配置计算机当前网卡配置信息
ping ip地址 检测目标ip地址的连接是否正常

3.远程登录和复制文件:

命令 对应英文 作用
ssh 用户名@ip secure shell 关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 secure copy 远程复制文件

权限管理:

1.修改用户/组对文件/目录的权限:chmod +/-rwx 文件名|目录名

2.使用另一个用户的身份,预设身份为root:sudo

终端常用命令说明

ls命令说明

Linux文件或者目录名称最长可以有256个字符

以.开头的文件为隐藏文件

.代表当前目录

…代表上级目录

参数 含义
-a 显示指定目录下的所有子目录与文件,包含隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合-l以人性化的方式显示文件大小
通配符 含义
* 代表任意个字符
? 代表任意一个字符,至少1个
[] 表示可以匹配字符组中的任意一个
[abc] 匹配a、b、c中的任意一个
[a-f]

cd命令说明

命令 含义
cd 切换到当前用户的主目录(/home/用户目录)
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 保持当前目录不变
cd … 切换到上级目录
cd - 可以再最近两次工作目录之间来回切换

mkdir参数说明

参数 含义
-p 可以递归创建目录

注意:新建目录的名称不能与当前目录中的已有的目录或者文件同名(如:当前目录已有一个123文件则无法在当前目录创建123文件夹)

rm参数说明

参数 含义
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹时必须加此参数

tree选项说明

选项 含义
-d 只显示目录

cp选项说明

选项 含义
-i 覆盖文件前提示(执行时如果目标文件夹有同名,会提示是否覆盖)
-r

若给出的源文件是目录文件,则cp

将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名字

mv选项说明

参数 含义
-i 覆盖文件前提示(执行时如果目标文件夹有同名,会提示是否覆盖)

cat选项说明

cat会一次显示所有的内容,适合查看内容较少的文本文件

选项 含义
-b 对非空输出行编号
-n 对输出的所有行编号

more操作键说明

操作键 功能
空格键 显示下一屏
Enter键 一次滚动一行
b . 回滚一屏
f 前滚一屏
q 退出
/word 搜索word字符串

grep选项及参数说明

选项 含义
-n 显示匹配行及行号
-v 显示不包含匹配文本的所有行(相当于求反)
-i 忽略大小写
参数 含义
^a 行首,搜寻以a开头的行
ke$ 行尾,搜寻以ke结束的行

管道|使用说明

Linux允许将一个命令的输出通过管道作为另一个命令的输入

常用的管道命令有:

more:分屏显示内容

grep:在命令执行结果的基础上查询指定的文本

例1:

ls -alh | more  *将当前文件夹的文件信息分屏显示
           

例2:

ls -alh | grep Do | more *将当前文件夹的文件信息中包含“Do”的文件信息分屏显示出来
           

远程管理命令说明

shutdown命令说明

选项 含义
-r 重新启动
-c 取消关闭/重启计算机

例1:

例2:

例3:

注1:不指定选项及参数,默认1分钟后关闭电脑

注2:远程维护服务器时,最好不要关闭系统,而应该重新启动系统

ifconfig命令说明

例1:

>>ifconfig  # 查看网卡配置信息
>ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.232.128  netmask 255.255.255.0  broadcast 192.168.232.255
        inet6 fe80::7427:8383:c614:c712  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ee:cd:97  txqueuelen 1000  (Ethernet)
        RX packets 4291  bytes 4807232 (4.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1268  bytes 108998 (108.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 257  bytes 21103 (21.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 257  bytes 21103 (21.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

           

例2:

>>ifconfig | grep inet  # 查看网卡对应的ip地址
>      inet 192.168.232.128  netmask 255.255.255.0  broadcast 192.168.232.255
       inet6 fe80::7427:8383:c614:c712  prefixlen 64  scopeid 0x20<link>
       inet 127.0.0.1  netmask 255.0.0.0
       inet6 ::1  prefixlen 128  scopeid 0x10<host>
           

提示:一台计算机中可能会有一个物理网卡和多个虚拟网卡,在Linux中物理网卡的名字通常以ensXX表示

127.0.0.1被称为本地回环/环回地址,一般用来测试本机网卡是否正常

ping命令说明

ping一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢

原理:网络上的机器都有位移确定的ip地址,我们给目标ip地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在

例1:本机ip地址:192.168.2.112

>>ping 192.168.2.112
>PING 192.168.2.112 (192.168.2.112) 56(84) bytes of data.
64 bytes from 192.168.2.112: icmp_seq=1 ttl=128 time=4.94 ms 
64 bytes from 192.168.2.112: icmp_seq=2 ttl=128 time=1.48 ms
64 bytes from 192.168.2.112: icmp_seq=3 ttl=128 time=2.06 ms
64 bytes from 192.168.2.112: icmp_seq=4 ttl=128 time=1.51 ms
64 bytes from 192.168.2.112: icmp_seq=5 ttl=128 time=1.93 ms
^C
--- 192.168.2.112 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 1.489/2.389/4.948/1.300 ms
           

注:如需停止,按 Ctrl + C 终止运行

ssh命令说明

ssh客户端是一种使用“Secure Shell(SSH)”协议连接到远程计算机的软件程序,数据传输是加密压缩的

相关概念:

域名:由一串用点分隔的名字组成,例如 www.baidu.com,是ip地址的别名,方便用户记忆

端口号:通过端口号可以找到计算机上运行的应用程序,SSH服务器的默认端口号是22,如果是默认端口号,在连接的时候可以省略

常见服务端口号列表:

服务 端口号
SSH服务器 22
Web服务器 80
HTTPS 443
FTP服务器 21

SSH客户端的简单使用:

格式:

ssh [-p port] [email protected]
#user 是远程机器上的用户名,如果不指定的话默认为当前用户
#remote 是远程及其的地址,可以试试IP/域名,或者是别名
#port 是SSH Sever 监听的端口,如果不指定,默认值是22
           

提示:使用“exit”退出推出当前用户的登录

如何免密码登录

1.配置公钥:执行ssh-keygen即可生成SSH要是,一路回车即可

2.上传公钥到服务器:执行ssh-copy-id -p port [email protected],可以让远程服务器记住我们的公钥

注1:ssh这个终端命令只能在Linux或者UNIX系统下使用

注2:如果在Windows系统中,可以安装PuTTY或者XShell客户端软件即可

在XShell使用中,如输入ip地址无误,仍无法连接,显示如下:

Connecting to 192.168.232.128:22...
Could not connect to '192.168.232.128' (port 22): Connection failed.

Type `help' to learn how to use Xshell prompt.
           

则可按照以下顺序进行操作:

1.ifconfig 如果有eth0网卡 就说明打开了 否则输入ifup eth0打开网卡

2.再判断有没有安装了ssh服务(因为UBANTU默认不安装) 输入:ps -e | grep ssh 如果服务已经启动,则可以看到“sshd”,否则表示没有安装服务,或没有开机启动

3.安装ssh服务,输入命令:sudo apt-get install openssh-server

4.启动服务:/etc/init.d/ssh start

配置计算机别名

配置别名来代替ssh后-p port [email protected]内容

方法:在~/.ssh/config里追加以下内容

Host mac
	HostName ip地址
	User itheima
	Port 22
           

保存后即可使用ssh mac实现远程登录了,scp同样可以使用

scp命令说明

scp的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是小写的

选项 含义
-r

若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件

目标文件必须为一个目录名

-P 若远程SSH服务器的端口不是22,需要使用大写字母-P选项指定端口

例1:

scp -P port 01.py [email protected]:Desktop/01.py  
# 将本地当前当前目录下的01.py文件复制到远程家目录下的Desktop/01.py
scp -P port [email protected]:Desktop/01.py 01.py
# 将文件远程家目录下的Desktop/01.py复制到本地当前当前目录下的01.py
           

注1:scp注1:ssh这个终端命令只能在Linux或者UNIX系统下使用

注2:如果在Windows系统中,可以安装PuTTY,使用pscp命令行工具或者安装FileZilla使用FTP进行文件传输(FTP的端口号为21)

用户、组及权限

权限列表

权限 英文 缩写 数字代号
read r 4
write w 2
执行 excute x 1
>>ls -l
>total 4
drwxr-xr-x 3 jackson26 jackson26 4096 6月  17 18:28 123
-rw-r--r-- 1 jackson26 jackson26    0 6月  17 18:26 aaa.txt
           

执行ls -l后,从左到右依次是:

·权限,第1个字符如果是d表示目录,之后的9个字符可分为三组,第一组代表当前文件/目录拥有者的权限(即第一个jackson26),第二组代表这个文件/目录对应的组的权限(即第二个jackson),第三组为其他人(即除了对应用户和组之外的)的权限

·硬链接数,通俗讲就是有多少种方式可以访问到当前目录/文件

>>tree
>.
├── 123
│   ├── 222
│   │   └── ttt.txt
│   ├── 77
│   ├── ddd.txt
│   └── qqq.txt
└── aaa.txt

3 directories, 4 files
>>ls -l
>drwxr-xr-x 4 jackson26 jackson26 4096 6月  17 18:41 123
-rw-r--r-- 1 jackson26 jackson26    0 6月  17 18:26 aaa.txt
           

如上所示,123的硬链接数为4,即有4种途径访问该文件夹,分别为:1.绝对路径;2.“cd .”;3.在222文件夹中使用“cd …”;4.在77文件夹中使用“cd …”

·拥有者,家目录下文件/目录的拥有者通常都是当前用户

·组,在Linux中,很多时候会出现组名和用户名相同的情况

·大小

·时间

·名称

超级用户

在LInux系统中,root账号通常用于系统的维护和管理(如添加用户/组,安装软件等),对操作系统的所有资源具有所有访问权限

在大多数版本的Linux中,都不推荐直接使用root账号登录系统

在LInux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”(即只能在自身家目录下活动的用户,不能修改系统设置相关)

用户在使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过则必须重新输入密码

注:若未经授权的用户企图使用sudo,则会发出警告邮件给管理员

创建/删除组

提示:创建/删除组的命令都需要通过sudo执行

命令 作用
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chgrp -R 组名 文件/目录名 修改文件/目录的所属组

用户管理

提示:创建/删除用户/修改其他用户密码的命令都需要通过sudo执行

命令 作用 说明
useradd -m -g 组 新建用户名 添加新用户

-m 自动建立用户家目录

-g 指定用户所在的组,否则会建立一个同名的组

passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户密码
userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
cat /etc/passwd 管道符号+grep 用户名 确认用户信息 新建用户后,用户信息会保存在 /etc/passwd文件夹中

提示:

1.创建用户时,如果忘记添加-m选项指定新用户的家目录,最简单的方法就是删除用户,重新创建

切换用户

命令 作用 说明
su - 用户名 切换用户,并且切换目录 - 可以切换到用户家目录,额否则保持位置不变
exit 退出当前登录用户 如曾多次切换用户,则每次输入exit,依次退出

查看用户信息

命令 作用
id [用户名] 查看用户UID和GID信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

passwd文件

/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是:

1.用户名

2.密码(x表示加密的密码)

3.UID(用户标识)

4.GID(组标识)

5.用户全名或本地账号(空则表示用户名为全名)

6.家目录

7.登录使用的Shell,就是登录后,使用的终端命令,ubuntu默认是dash(这是一个软件,在Windows下使用XShell登录别的用户时会发现有些键盘按键无法使用,这就是dash在WIndows下不适用造成的,可以用之后提到的修改用户登录Shell命令进行修改)

例1:

>>cat -n /etc/passwd | grep zhangsa
>43	zhangsan:x:1001:1001::/home/zhangsan:/bin/sh
           

usermod命令说明

usermod 可以用来设置用户的主组/附加组和登录Shell

主组:通常在新家用户时指定,在etc/passwd的第四列GID对应的组

附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限

提示:设置了用户的附加组之后,需要重新登录才能生效

例1:

# 修改用户的主组(即GID)
usermod -g 组 用户名

# 修改用户的附加组(就大多数时候都是修改附加组)
usermod -G 组 用户名

# 修改用户登录Shell
usermod -s /bin/bash 用户名
           

注意:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中:

usermod -G sudo 用户名
           

which命令说明

提示1:etc/passwd是用于保存用户信息的文件

提示2:/usr/bin/passwd是用于修改用户密码的程序

利用which命令可以查看执行命令所在位置

例1:

>>which ls
>/bin/ls

>>which passwd
>/usr/bin/passwd

>>which useradd
>/usr/sbin/useradd
           

bin和sbin

1.在Linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin

2./bin(binary)是二进制执行文件目录,主要用于具体应用

3./sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理

4./usr/bin(user commands for applications)后期安装的一些软件

5./usr/sbin(super user commands for applications)超级用户的一些管理程序

提示:cd这个终端命令是内置在系统内核中的,没有独立的文件,因此which无法找到

修改文件权限

命令 作用
chown 修改拥有者
chgrp 修改组
chmod 修改权限

命令格式如下:

# 修改文件/目录的拥有者
chown 用户名 文件名/目录名

# 递归修改文件/目录的组
chgrp -R 组名 文件名/目录名  # -R即可修改目录下所有子目录后文件的组

# 递归修改文件权限
chmod -R 755 文件名/目录名
           

chmod在设置权限时,可以简单地使用三个数字(上例中为755)分别对应拥有者/组和其他用户的权限

之前提及的以“chmod +/-rwx 文件名/目录名”修改权限的方式无法精确到拥有者/组/其他,rwx对应的数字分别为4/2/1,而755则相当于4+2+1/4+1/4+1即rwx/rx/rx权限

常见的数字组合有(u表示用户/g表示组/o表示其他):

777→u=rwx,g=rwx,o=rwx

755→u=rwx,g=rx,o=rx

644→u=rw,g=r,o=r

系统信息相关命令

时间和日期

命令 作用
cal calender 查看日历,-y选项可以查看一年的日历
date 查看系统时间

磁盘信息

命令 作用
df -h disk free 显示磁盘剩余空间
du -h [目录名] disk usage 显示目录下的文件大小

说明:-h的作用是以人性化的方式显示文件大小

一般关注根目录,即“/”路径下的空间使用情况

进程信息

命令 作用
ps aux process status 查看进程的详细情况
top 动态显示运行中的进程并且排序
kill [-9] 进程代号 终止指定代号的进程,-9 表示强制终止

默认只会显示当前用户通过终端启动的应用程序

aux选项含义

选项 含义
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程

提示1:使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃:

提示2:要退出top可以直接输入q

其他命令

查找文件

find命令通常用来在特定的目录下搜索符合条件的文件

命令 作用
find [路径] -name “*.py” 查找制定路径下扩展名是.py的文件,包括子目录

如果省略路径,表示在当前文件夹下查找

之前学习的通配符,在使用find命令时可同时使用

例1:

# 搜索桌面目录下,文件名包含1的文件
>>find -name "*1*"

# 搜索桌面目录下,所有以.txt为扩展名的文件
>>find -nmae "*.txt"

# 搜索桌面目录下,以数字1开头的文件
>>find -name "1*"
           

软链接

命令 作用
ln -s 被链接的源文件 链接文件 建立文件的软链接,类似于Windows下的快捷方式

说明::没有-s选项的话则会建立一个硬链接文件,工作中几乎不会建立文件的硬链接

提示:在建立软链接是要养成习惯——源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用

软硬链接科普:

在LInux中,文件名和文件的数据是分开存储的,通过文件名可以访问文件数据,软链接则是保存了链接到源文件的完整路径,通过完整路径就能访问到链接文件的数据,而删除了链接的源文件,则无法通过软连接访问到原来的数据。硬链接则相当于文件数据的另一个文件名,也可以直接访问存储到磁盘的数据,只有把一个文件数据的所有文件名、硬链接都删除后,这个文件数据才能被真正删除。

提示:

·在Linux中,只有文件的硬链接数=0才会被删除

·使用ls -l可以查看一个文件的硬链接数量

·在日常工作中几乎不会建立文件的硬链接

打包和压缩

打包/解包

前言:在不同操作系统中,常用的打包压缩方式是不同的

Windows常用rar

Mac常用zip

Linux常用tar.gz

说明:tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件夹中,也可以把一个打包的大文件恢复成一系列文件

例1:

# 打包文件
>>tar -cvf 打包文件.tar 被打包的文件/路径

# 解包文件
>>tar -xvf 打包文件.tar
           
选项 含义
c 生成档案文件,创建打包文件
x 解开档案文件
v 列出归档解档的详细过程,显示进度
f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后

压缩/解压缩

1.gzip

tar与gzip命令结合可以使用实现文件打包和压缩

注:tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz

在Linux中,最常见的压缩文件格式就是xx.tar.gz

在tar命令中有一个选项-z可以调用gzip,从而可以方便的实现压缩和解压缩的功能

例1:

# 压缩文件
>>tar -zcvf 打包文件.tar.gz 被压缩的文件/路径

# 解压缩文件
>>tar -zxvf 打包文件.tar.gz

# 解压缩到制定路径
>>tar -zxvf 打包文件.tar.gz -C 目标路径
           

2.bzip2

tar与bzip2命令结合可以使用实现文件打包和压缩(用法和gzip一样),扩展名为xxx.tar.bz2

在tar命令中有一个选项-j可以调用bzip2,从而可以方便的实现压缩和解压缩的功能

例2:

# 压缩文件
>>tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径

# 解压缩文件
>>tar -jxvf 打包文件.tar.bz2

# 解压缩到制定路径
>>tar -jxvf 打包文件.tar.bz2 -C 目标路径
           
选项 含义
-C 解压到指定目录,注意:要解压缩的目录必须存在

软件安装

apt是Advancd Packaging Tool,是Linux下的一款安装包管理工具

可以再终端方便的安装/卸载/更新软件包

例1:

# 安装软件
>>sudo apt install 软件包

# 卸载软件
>>sudo apt remove 软件名

# 更新已安装的包
>>sudo apt upgrade
           

配置软件源

如果希望自Ubuntu中安装软件更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供下载/安装服务

提示:更换服务器后,需要一个相对较长时间的更新过程,需要耐心等待

所谓镜像源,就是所有服务器的内容都是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些

操作方法:在系统设置界面,进入软件和更新,更改“下载自”的镜像源地址

VI编辑器

vi编辑器在系统管理,服务器管理编辑文件时,其功能永远不是图形界面的编辑器能比拟的

vim:即vi improved,是从vi发展出来的一个文本编辑器,支持代码补全、编译及错误跳转等方便编程的功能,被称为编辑器之神

打开和新建文件

在终端中输入vi在后面跟上文件名即可

例:

>>vi 文件名

>>vi 文件名 +行数  # 打开一个文件并定位到指定行
           

如果文件已存在,会直接打开该文件

如果文件不存在,会新建一个文件

三种工作模式

1.命令模式:【其他模式下按Esc进入】打开文件即进入了命令模式,是使用vi的入口,通过命令对文件进行常规的编辑操作,如:定位、翻页、复制、粘贴、删除……

2.末行模式:【命令模式下按:进入】用于执行保存、退出等操作,末行模式是vi的出口

3.编辑模式:【命令模式下按i进入】正常的编辑文字

命令模式命令

移动(基础)

1.上下左右

命令 功能 手指
h 向左 食指
j 向下 食指
k 向上 中指
l 向右 无名指

2.行内移动

命令 英文 功能
w word 向后移动一个单词
b back 向前移动一个单词
行首
^ 行首,第一个不是空白字符的位置
$ 行尾

3.行数移动

命令 英文 功能
gg go 文件顶部
G Go 文件末尾
数字gg go 移动到数字对应行数
数字G Go 移动到数字对应行数
:数字 移动到数字对应行数

4.屏幕移动

命令 英文 功能
Ctrl + b back 向上翻页
Ctrl + f forward 向下翻页
H Head 屏幕顶部
M Middle 屏幕中间
L Low 屏幕底部

移动(程序)

1.段落移动

vi中使用空行来区分段落

在程序开发时,通常一段功能相关的代码会写在一起,之间没有空行

命令 功能
{ 上一段
} 下一段

2.括号切换

在程序世界中,(),[],{}使用频率很高,而且都是成对出现的,可以通过%在它们之间进行切换

命令 功能
% 括号匹配及切换

3.标记

在开发时,某一块代码可能需要稍后处理,例如:编辑、查看

此时先使用m增加一个标记,这样可以在需要时快速的跳转回来或者执行其他编辑操作

标记名称可以是 a~z 或者 A~Z 之间的任意一个字母

添加了标记的行如果被删除,标记同时被删除

如果在其他行添加了相同名称的编辑,之前添加的标记也会被替换掉

命令 英文 功能
m mark 添加标记x,x可以是 a~z 或者 A~Z 之间的任意一个字母
'x 直接定位到标记x所在位置

选中文本(可识模式)

在vi中要选择文本,需要先使用Visual命令切换到可视模式

vi中提供了三种可视模式,可以方便程序员选择选中文本的方式

按Esc可以放弃选中,返回到命令模式

命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl + v 可视块模式 垂直方向选中文本

提示:可视模式下,可以和移动命令,例如:“ggVG”能够选中所有内容

.撤销和恢复撤销

命令 英文 功能
u undo 撤销上次命令
Ctrl + r redo 回复撤销的命令

删除文本

命令 英文 功能
x cut 删除光标所在字符,或者选中文字
d(移动命令) delete 删除移动命令对应的内容
dd delete 删除光标所在行,可以ndd复制多行(n为行数)
D delete 删除至行尾

提示:如果使用可视模式已经选中了一段文本,那么无论使用d还是x,都可以删除选中文本

删除命令可以和移动命令连用,以下是常见的组合命令:

>>dw  #从光标位置删除到单词末尾
>>d0  #从光标位置删除到一行的起始位置
>>d}  #从光标位置删除到段落末尾
>>ndd  #从光标位置向下连续删除n行
>>d代码行G  #从光标所在行删除到制定代码行之间的所有代码
>>d'a  #从光标所在行删除到标记a之间的所有代码
           

复制、粘贴

vi中提供有一个被复制文本的缓冲区

复制命令会将选中的文字保存在缓冲区

删除命令删除的文字会被保存在缓冲区

在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置

命令 英文 功能
y(移动命令) copy 复制
yy copy 复制一行,可以nyy复制多行(n为行数)
p paste 粘贴

替换

命令 英文 功能 工作模式
r replace 替换当前字符 命令模式
R replace 替换当前行光标后的字符 替换模式

R命令可以进入替换模式,替换完成后,按下Ese可以回到命令模式

替换命令的作用就是不用进入编辑模式,对文件进行轻量级的修改

缩排和重复执行

命令 功能
>> 向右增加缩进
<< 向左增加缩进
. 重复上次命令

在可视模式下,缩排命令只需要使用一个>或者<

在程序中,缩进通常用来表示代码的归属关系

查找

常规查找:

命令 功能
/str 查找str

查找到制定内容之后,使用Next查找下一个出现的位置:

n:查找下一个

N:查找上一个

如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可

单词快速匹配:

命令 功能
* 向后查找当前光标所在单词
# 向前查找当前光标所在单词

在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过

末行模式命令

命令 英文 功能
w write 保存
q quit 退出,如果没有保存,不允许退出
q! quit 强行退出,不保存退出
wq write & quit 保存并退出
x 保存并退出

提示:

1.命令d、x类似于图形界面的剪切操作——Ctrl+x

2.命令y类似于图形界面的复制操作——Ctrl+c

3.命令p类似于图形界面的粘贴操作——Ctrl+v

4.vi中的文本缓冲区只有一个,如果后续做过复制、剪切操作,之前缓冲区中的内容会被替换

注意:vi中的文本缓冲区和系统的剪贴板不是同一个,所以在其他软件中使用Ctrl+c复制的内容,不能在vi中通过p命令粘贴,可以再编辑模式下使用鼠标右键粘贴

查找并替换

命令格式:

:%s///g
           

1.全局替换

一次性替换文件中的所有出现的旧文本

:%s/旧文本/新文本/g
           

2.可视区域替换

先选中要替换文字的范围

:s/旧文本/新文本/g
           

3.确认替换

即把末尾的“g”改成“gc”,替换时会有提示,推荐使用

:s/旧文本/新文本/gc
           

y=yes替换

n=no不替换

a=all替换所有

q=quit退出替换

l=last替换最后一个,并把光标移动到行首

^E向下滚屏

^Y向上滚屏

其他常用命令

命令 英文 功能
:e . edit 会打开内置的文件浏览器,浏览当前目录下的文件
:n 文件名 new 新建文件
:w 文件名 write 另存为,但是仍然编辑当前文件,并不会切换文件

分屏命令

使用分屏命令,可以同时编辑和常看多个文件

命令 英文 功能
:sp [文件名] split 横向增加分屏
:vsp [文件名] vertical split 纵向增加分屏

1.切换分屏窗口

分屏窗口都是基于Ctrl+w这个快捷键的

命令 英文 功能
w window 切换到下一个窗口
r reverse 互换窗口
c close 关闭当前窗口,但是不能关闭最后一个窗口
q quit 退出当前窗口,如果是最后一个窗口,则关闭vi
o other 关闭其他窗口

编辑模式命令

在vi中除了常用的i进入编辑模式外,还提供了以下命令同样可以进入编辑模式:

命令 英文 功能 常用
i insert 在当前字符前插入文本 常用
I insert 在行首插入文本 较常用
a append 在当前字符后添加文本
A append 在行末添加文本 较常用
o 在当前行后面插入一空行 常用
O 在当前行前面插入一空行 常用

连续输入相同字符

1.在命令模式下输入需要重复的次数n

2.按i进入编辑模式

3.输入需要的字符x

4.按Esc返回命令模式

5.系统会自动重复2、3步骤n次,即输入n个x

利用可视块给多行代码加注释

1.在命令模式下移动到要添加注释的第1行代码,按^来到行首

2.按Ctrl +v进入可视块模式

3.用j向下连续选中要添加的代码行

4.输入I进入编辑模式,并在行首插入注意:一定要使用I

5.输入#也就是注释符号

6.按下Esc返回命令模式,返回之后vi会在之前选中的每一行代码前插入#

继续阅读