欢迎各位兄弟 发布技术文章
这里的技术是共享的
来自 https//space.bilibili.com/522319853/channel/seriesdetail?sid=666503
命令行可以做什么: 文件管理 系统管理 软件安装 网络操作
pwd 显示当前命令所处的位置
cp 复制文件/目录
Is 查看目录下的内容
rm 删除文件/目录
cd 进入一个指定的目录
du -sh 查看文件/目录的大小
mkdir 新建一个目录
man 查看命令的帮助信息
mv 重命名或移动文件/目录
修改终端字体大小,,修改完之后终端退出再打开
# ls -l
# ls -la # a 表示显示出来隐藏的文件 文件前面有点号表示隐藏的文件,,,隐藏的文件在图形界面下是看不到的
# mv image2/ ../ #将文件夹移动到上一级目录
# cp -R 视频文件夹 视频文件夹2 #复制文件夹要加一个 -R 参数 -R(表示 recursion 递归)
# rm -f 2.png # 强制删除一个文件 -f (force 强制,不需要确认的提示)
# rm -Rf 视频文件夹2 # #强制删除 文件夹要加一个 -R 参数 -R(表示 recursion 递归) 要加一个 -f (force 强制,不需要确认的提示)
# du -sh #这里表示这个当前文件夹的总的大小是 88M
# du -sh 文件名 #这里表示这个"文件名"的大小
# du -sh 文件夹名 #这里表示这个"文件夹名"的总大小
# du -sh * #表示当前目录所有
# man du #查看 du 命令的帮助文档
touch 创建文件
rm -Rf 删除所有文件
open 打开文件(使用默认程序)
cd ~ 快速进入用户主目录
vim 打开/编辑文本文件
find 查找文件
file 查看文件类型
终端里常用的快捷键
Control + C 中断命令的执行
Control + A 返回行首
Control + E 返回行尾
# open 1.txt #打开一个文件,会以默认的程序打开
# open test.docx #打开一个docx文件,会以默认的word程序打开
# vim 1.txt
# find ./ -name "*. png" #在当前目录下面查找 包含 .png 的文件
# find /etc/ -name "* . ini " bogon:clbjjs chenyuanlong$ find /etc/ -name "* . ini " #查找时,目录的后面要有斜杠,表示在 /etc/ 文件夹(目录)下,
/etc//php .ini
find: /etc/ /cups/certs: Permission denied
# find /etc -name "*. ini” #查找时,如果目录的后面没有斜杠,表示在 /etc 文件下,所以查不到
# find ./ -name "1-2. png" #不用能通配符星号 * ,直接指定文件名
.//文件夹2/1-2. png
bogon: clbjjs chenyuanlong$
# file LINUX-LOGO.png #查看文件类型 (文件信息)
# rm -Rf * #删除当前文件夹下面的所有
# cd ~ #进到用户的主目录
ping
netstat
ifconfig
lsof
networksetup
traceroute
ipconfig
# networksetup -listallhardwareports 查看网络接口简写信息
ifconfig查看指定网卡信息
ifconfig interface-name
例如:
# ifconfig en0
ipconfig
查看/配置
网络接口(网卡)信息
ipconfig getifaddr interface-name #获取ip地址
例如:
# ipconfig getifaddr en0 #获取ip地址
ipconfig getoption interface-name (option-name | option-code) ipconfig #获取网关router的ip地址
例如:
#ipconfig getoption en0 router #获取网关router的ip地址
ipconfig getoption interface-name (option-name | option-code) #ipconfig获取DSN的ip地址
例如:
#ipconfig getoption en0 domain_name_server #ipconfig获取DSN的ip地址
这里不全面 ,可以看看 /node-admin/19385
ifconfig/ipconfig配置IP信息
ifconfig interface name inet ip- addr netmask subnet-mask
ipconfig set interface-name (MANUAL | INFORM) ip-address subnet-mask
来自 https://www.bilibili.com/video/BV1aV411n7MW/?spm_id_from=333.999.0.0
ping
netstat
ifconfig
lsof
networksetup
traceroute
ipconfig
netstat 查看 网络连接、端口、协议等
# netstat
网络连接状态
LISTEN、SYN_SENT、SYN_RECEIVED、 ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、
CLOSE_WAIT、CLOSING、 LAST_ACK、TIME_WAIT、CLOSED
ESTABLISHED 连接已建立
LISTEN 监听状态,套接字正在监听连接,等待连接
TIME_WAIT 我方主动关闭连接或者我方网络异常导致连接中断
CLOSE_WAIT 对方主动关闭连接或者对方网络异常导致连接中断
netstat常用选项
显示所有连接信息,包括常用于服务器的一些端口监听连接
不加-a的话,默认不显示LISTEN连接信息的
-n 不显示别名信息,用数字代替,可以加快命令的执行速度
比如: mysq|的端口用3306直接显示,而不是用mysq|这样的名称显示,推荐使用
-p protocol显示指定网络协议的连接,全部协议在/etc/protocols中
比如: -ptcp或者-pudp也可以是-p TCP或者-P UDP
-v 显示更多的信息,可以显示对应连接的进程ID (PID) 等
当需要查看网络连接是属于哪个进程时可以使用
#man netstat
# netstat -a #显示所有,如果没有-a,那么 listen状态就不显示了
# netstat -n #以数字显示,不解析名称,速度快
# netstat -v #-v 就是 verbose,就是显示冗余,详细信息
# netstat -p tcp #只显示TCP 的信息
# netstat -anp tcp #所有,以数字显示,只显示tcp的信息
# vim /etc/protocols #查看所有协议
# netstat -anvp tcp #所有,以数字显示,只显示tcp的信息,显示更详细的信息(包括进程的信息)
# pid 指的是进程的id号 process id 号
# ps -p 792 #根据进程id显示出进程信息 #ps: process state (process show);查看进程的相关信息的专用命令
活动监视器,,,也可以根据pid找出对应的程序
netstat常用选项
-r 显示网络路由表信息
查看网络数据包是如何一步一步路由出去的
-L 显示出监听队列的信息
查看监听队列的大小信息,需要与-a-起使用,-aL
-l (是 小L)显示出完整的IPv6的地址信息
注意该参数在windows和linux.上的使用区别,mac下不建议使用
#netstat -r #显示网络中的路由表信息
#netstat -aL #显示哪些端口处于监听状态
#netstat -anL #显示哪些端口处于监听状态, 加个 -n 表示以数字形式显示
netstat常用命令解读
netstat -a
netstat -r
netstat -an
netstat -aL
netstat -anv
netstat -anL
netstat -anvp tcp
netstat -al
netstat -anvp udp
netstat -anl
类unix的操作系统中,所有的一切都是当作文件,包括网络也当作文件
lsof # lsof: (list open files)是一个查看进程打开的文件的工具
查看系统打开文件信息
查看网络信息比netstat更加友好
lsof常用选项
-i 显示所有打开的网络连接 ( i internet 网络)
-i4 => ipv4连接,-i6 => ipv6连接,-iTCP => tcp连接,-iTCP:8080 => tcp 8080端口连接
-s 与 -i配合使用时,用于指定特定的协议和特定的网络状态
Isof -iTCP -sTCP:LISTEN ( s state 状态 )
-n不显示别名信息,用数字代替,可以加快命令的执行速度 (n number 数字)
比如: mysql的端口用3306直接显示,而不是用mysq|这样的名称显示
-P不让端口号与端口名称之间转换,加快命令的执行速度 (P port 端口)
-n -P一起使用,-nP可以大大加快命令的执行速度,推荐使用
# lsof #输出一大堆东西,非常杂乱
# lsof -i #输出所有关于 i ( internet )网络的信息
COMMMAND 表示是什么程序产生的网络连接
PID 表示进程的PID(process ID)
USER 表示是哪个用户
# lsof -i4 #显示ipv4的连接
# lsof -i6 #显示ipv6的连接
# lsof -iTCP #显示intername TCP 的连接
# lsof -iTCP:3306 #显示intername TCP 3306端口 的连接
#没有结果,因为3306是由其它用户启动的,不是由登录的这个用户启动的
# sudo lsof -iTCP:3306 #所以要用提权操作,
# Isof -iTCP -sTCP:LISTEN #用来显示TCP协议连接状态的,处于监听状态的网络连接, sTCP要与 iTCP配合起来使用
#将电脑当中处于监听状态的TCP连接列举出来
# Isof -n -iTCP -sTCP:LISTEN # -n 显示数字,不显示别名,速度更快
# Isof -n -P -iTCP -sTCP:LISTEN # -P 对于端口号 显示数字,不显示别名,速度更快
#看不明白 -n 与 -P的区别,,,只要知道,讲师推荐我们 -n 与 -P 一起使用,会更快命令的执行速度
lsof常用命令解读
lsof -i lsof -iTCP -sTCP:L ISTEN
lsof -iTCP lsof -iTCP -sTCP:LISTEN -nP
lsof -iTCP:8080 lsof -iTCP:3306 -sTCP:LISTEN -nP
Isof -iTCP:8080 -nP
配合sudo使用可以查看所有用户打开的网络连接,比如: sudo lsof -i
不加sudo默认只能查看当前用户打开的网络连接
# lsof -iTCP:3306 -sTCP:LISTEN -nP #-iTCP:3306表示以TCP的3306端口,-sTCP:LISTEN 表示监听状态,-nP,这两个表示以数字显示,加快执行速度
# sudo lsof -iTCP:3306 -sTCP:LISTEN -nP #加个sudo ,可以查看所有用户打开的网络连接 加了-nP,显示了数字3306
# sudo lsof -iTCP:3306 -sTCP:LISTEN #没有 -nP,显示了mysql名称,不显示数字了,,执行会慢一些
查看监听状态的端口
方法一
netstat -an | grep LISTEN netstat -anv | grep -i listen
方法二:
Isof -iTCP -sTCP:LISTEN -nP
sudo lsof -iTCP -sTCP:LISTEN -nP
查看指定端口占用情况
方法一:
netstat -an | grep 3306
netstat -anv | grep 3306
方法二:
lsof -i:3306 -nP
可以配合sudo查看所有用户打开的连接
lsof -iTCP:3306 -sTCP:L ISTEN -nP
traceroute
查看路由追踪信息
traceroute追踪路由信息
traceroute 域名 或者 traceroute IP地址
例如:
traceroute www.baidu.com
traceroute 192.168.8.105
# traceroute www.baidu.com #追踪到百度的路由信息,得到每一跳的路由信息
ps kil killall pkil top
ps查看系统进程信息
ps: process state (process show);查看进程的相关信息的专用命令,,,瞬时状态
# ps
# ps -A # -A all,所有,,,,查看系统当中的所有用户的所有的进程信息
PID: 进程的id,,process id
TTY: 代表在哪个终端下面运行的
TIME: 代表进程的运行时间
CMD: 代表进程的命令
# ps -e #也是查看所有的进程信息 在 ps -e
命令中,e
是 "every" 的缩写。它代表 "所有进程"(every process)。使用这个选项时,ps
命令会显示系统上的所有进程,无论它们是否与当前终端相关联。因此,ps -e
命令用于列出所有正在运行的进程。
# ps -e | less #也是查看所有的进程信息,分屏查看
# ps -a # -a (小写的a),显示的是在终端里面正在运行的所有的进程的信息
# ps -ax #-ax 表示所有的进程
# -a (all): 这个选项的作用是显示当前终端下的所有进程,包括其他用户的进程。但是,它并不包括没有控制终端的进程。
# -x: 这个选项的作用是显示没有控制终端(non-terminal)的进程。这通常包括那些由其他用户启动的、在后台运行的,或者由 init 系统(如 systemd)管理的进程。 那些不是由终端启动或者不需要交互式控制台的进程,比如守护进程(daemons)。
# ps -A 等于 # ps -e 等于 # ps -ax
# ps -ax | less
# ps -ef | less # -e 显示正在运行的所有的进程信息,-f 会显示更多的列项
在 ps -ef 命令中,f 并不是某个英文单词的缩写,而是该命令的一个选项标识符。这个 f 选项代表“全格式”(full format)。
当使用这个选项时,ps 命令会以全格式显示进程信息,这通常包括更详细的字段,如UID(用户ID)、PPID(父进程ID)、
C(CPU利用率)和STIME(进程启动时的系统时间 system time)。全格式输出提供了更丰富的进程信息,
有助于用户更全面地了解系统的运行状态。
UID: user id ,用户id,即这个进程是由哪个用户产生的
PID: 进程的id,,process id
PPID: 父进程的id,,,,parent process id
TTY: 代表在哪个终端下面运行的
TIME: 代表进程的运行时间
CMD: 代表进程的命令
ps 配合管道语法使用
# ps -A | grep nginx #查看有关nginx服务的进程 与 ps -e | grep nginx 和 ps -au | grep nginx 效果是一样的
# 这里显示的是自己这条命令所产生的进程,,,,,也就是说真正的nginx服务器进程没有开启
# nginx #开启nginx服务进程
# ps -e | grep nginx
# ps -ef | grep nginx
第一列代表UID, 这里 501 是 UID
# # ps -ef | less
# id -nu 501 #根据uid 获取用户名
# ps -p 31399 #查看指定 pid 的进程
# ps -u root #查看指定用户root产生的进程,,事实上 # ps -u 0 也可以 ,0是root 的 uid
# ps -U 0 #查看指定用户root产生的进程,,,0是root 的 uid,, 事实上 # ps -U root 也可以
ps 指定输出列项
ps -o keyword #小写的o指定输出列的选项
# ps -A -o user #-A是所有 -o 这里输出仅输出用户
# ps -A -o user -o pid #-A是所有 -o 这里输出仅输出用户和pid
# ps -A -o user -o pid -o comm #-A是所有 -o 这里输出仅输出用户和pid和命令名称 comm是command的缩写
# ps -A -o user -o pid -o comm | less
# ps -L # 可以查看到 user,pid,comm等许多关键词
# man ps #
# ps -A -o user -o pid -o command | less #comm,仅指命令,command包含命令和参数
# ps -A -o user -o pid -o comm | grep -i chome #看看系统当中当前运行了多少chrome浏览器
# ps -A -o user -o pid -o comm | grep -i chome | less #看看系统当中当前运行了多少chrome浏览器
kill #结束掉一个进程,杀死一个进程
# ps -ef | grep nginx #查询有关ningx 进程
# kill -9 31399 #-9是一种信号代码
# ps -ef | grep nginx #查询有关ningx 进程 ,可以看到刚刚有一个nginx进程被杀死了,没有了
HUP 1 挂起
INT 2 中断
QUIT 3 退出
kill 9 代表发送结束的信号给进程,强制中断
TERM 5 从头到尾释放资源整个过程,然后结束进程
杀死其它用户的进程,可能需要 sudo 提权限来结束掉某个进程
killall 也是结束掉一个进程,但是后面跟的是进程的名字
# killall -9 nginx
# ps -ef | grep nginx #查询有关ningx 进程 ,看到nginx进程全部被杀死了,只有本命令所产生的进程
killall 支持批量操作,, 后面的信号码与kill 类似
pkill 也是结束掉一个进程,后面可以跟进程名称 或 部分的进程名称,,也支持批量操作,后面的信号码与 kill 类似
top 查看系统中的动态的进程信息
# top #查看系统中的动态的进程信息,与活动监视器是一样的,是不断变化的
# power 一次tab补齐,两次tab列出所有命令
powermetrics
工具中,-s
参数通常是 --summary ("总结"或者"摘要")
的缩写。这意味着使用 -s
选项时,powermetrics
会输出一个摘要报告,而不是详细的数据流。 这里 只会输出 smc sensor(传感器)的概要信息,,,,,,SMC就是系统管理控制的意思# powermetrics -h # -h 是 help 帮助的意思
帮助文档里面可以看到 samplers采样器 有 battery(电源) ,disk(磁盘) 等许多
iStat Menus 6 是第三方工具 查看 cpu 温度,风扇转速等
Mac懂-点命令行
第8讲Mac终端下定时关机、重启、睡眠
shutdown
reboot
halt
shutdown [ -h | -s | -r] time [提示信息]
-h: halt,关机
-s: sleep,睡眠
-r: reboot,重启
time 就是执行动作(关机,睡眠,重启)的时间,有4种形式
now #立刻
+分钟数 #多少分钟后执行动作
hh:mm #今天的几时几分 #今天的几时几分执行动作
yymmddhhmm #指定年份、月份、日期、小时、分钟
[提示信息],就是执行动作(关机,睡眠,重启)时界面的提示信息,一般也没什么用,不推荐使用
# sudo shutdown -s +10 #需要提权,,,,,,10分钟之后睡眠
# ps -A | grep shutdown #可以看到10分钟之后睡眠的进程
# sudo kill -9 1747 #需要提权,,,,,,杀死这个进程,也就是取消这个10分钟之后睡眠的进程
# ps -A | grep shutdown #可以看到10分钟之后睡眠的进程没有了
# sudo killall -9 shutdown #kill 后面跟的是进程的名字, 这里名字是 shutdown,不是 pid,,,,,这里会将所有存在shutdown的命令的进程给杀死
# sudo shutdown -h now #立刻关机
# sudo shutdown -r now #立刻重启
# sudo shutdown -s now #立刻睡眠
# sudo shutdown -s 20:00 #今天晚上8点睡眠,,,这里应该是24小时制的时间格式
# sudo killall -9 shutdown #把这个定时任务给关了
# sudo shutdown -h 2104200900 #在2021年04月20日 09:00关机 2104200900 的格式是 两位年两位月两位日两位时两位分
\
# sudo shutdown -r now #立刻重启
# sudo reboot #也是立刻重启
# sudo shutdown -h now #立刻关机
# sudo halt #也是立刻关机
掌握vim的常见用法
理解vim的三种模式
1.命令模式:输入的内容当做命令看待
2.输入模式:输入的内容当文本内容看待
3.底线命令模式(末行模式):输入的内容当命令看待,在底部显示
i I # insert 插入的意思,,, 是输入模式 ,,, 小写i,在当前光标的前面进行输入,,,大写I,就是光标定位到当前行的行首进行输入
a A # append 追加的意思,,, 也是输入模式,,,小写a,在当前光标的后面进行输入,,,大写A,就是光标定位到当前行的行尾进行输入
o O # open 打开的意思,,, 同样也是输入模式,,,小写o,就是在当前行的下面新起一行, ,,, 大写O 就是在当前行的上面新起一行
r R # replace 替换的意思,,, 替换后是命令模式(按下r 或 R 时是替换模式),,,小写r,就是当前光标进行替换,,大写R,就是当前光标及后面进行一直替换,,
h 相当于左箭头,光标向左移动一个字符
j 相当于下箭头,光标向下移动一个字符
k 相当于上箭头,光标向上移动一个字符
l 相当于右箭头,光标向右移动一个字符
G # 移动到最后-行
gg # 移动到第一行
0 或者 home # 数字 0 ,移动到行首
$ (美元符) 或者 end # 移动到行尾
在vim中,gg 是 "go to the top of the file" 的缩写
nG
在 Vim 编辑器中,nG
命令用于跳转到文件的第 n 行。这里的 "n" 是一个数字,代表目标行号,而大写字母 "G" 代表 "Go" 或 "Goto" 的含义,即跳转到指定位置。
n<Enter> n为数字,然后输入回车,光标向下移动n行
Ctrl+f
:这个组合键用于向前翻一页,即将屏幕内容向下滚动一页,显示出文本的下一页内容。这里的 "f" 字母可以理解为 "forward"(向前)的简写,表示向文档的更深层次或后续部分移动。
Ctrl+b
:这个组合键用于向后翻一页,即将屏幕内容向上滚动一页,显示出文本的上一页内容。字母 "b" 在这里代表 "backward"(向后)的简写,表示向文档的更早部分或前一页移动。
Ctrl+d
:这个组合键用于向下翻半页。这里的 "d" 字母可能让人联想到 "down"(向下),表示其功能是将屏幕滚动至下方,显示下一部分文本内容。
Ctrl+u
:这个组合键用于向上翻半页。字母 "u" 在这里可能让人联想到 "up"(向上),表示其作用是将屏幕滚动至上方,显示上一部分文本内容。
在 Vim 编辑器中,命令 dd
也不是对某个英文单词的直接缩写。 dd是"delete line"的缩写。
"d":在 Vim 中,单个字母 "d" 通常用于触发删除操作。当它与其他字符结合形成双字符组合时,可以指定具体的删除范围或对象。
"d"(第二个 "d"):在 "dd" 命令中,第二个 "d" 与第一个 "d" 结合,共同指示 Vim 删除当前光标所在的整行。
ndd 就是删除当前行及下面的总共n行 ,,,,先是 gg,然后99999dd,能删除整个文档 (或者 gg dG 也能删除整个文档)
u 表示撤销的操作
x 往后删 (相当于delete)
X 往前删 (相当于backspace)
nx 连接往后删n个字符
nX 连接往前删n个字符
"y":在 Vim 中,单个字母 "y" 通常用于触发复制(yank)操作。当它与其他字符结合形成双字符组合时,可以指定复制的具体范围或对象。
"y"(第二个 "y"):在 "yy" 命令中,第二个 "y" 与第一个 "y" 结合,共同指示 Vim 复制当前光标所在的整行。
yy#复制当前行
nyy #n为数字,复制n行 #就是复制当前行及下面的总共n行
p, P # paste 粘贴,,粘贴复制的内容 #小写p在当前光标行的下面进行粘贴,,,大写P在当前光标行的上面进行粘贴,,,
v, V, Control + v#visual,可视化模式
visual:就是可视化的意思
v:进入可视化, 可以按住h j k l 进行一个一个单词的选中,然后按y进行复制
V:进入可视化,可以按住h j k l 进行以行为单位进行选中
contrl+v ,(ctrl+v):进入可视化,可以按住h j k l 进行以一块一块的(行列)为单位进行选中
/ 斜杠进行搜索,搜索关键词,注意是从当前光标往下搜索 如何高亮显示关键词
/foo\c 这里表示大小写不敏感的查找 c是case的意思
:set ic (set ignorecase) 也可以先设置一下,大小写敏感,然后再查找
:set hlsearch #高亮显示搜索的结果 hight light search ,它只生效一次
# vim ~/.vimrc #在这个文件里面设置一下,永久生效
set hlsearch
? 问号进行搜索,搜索关键词,注意是从当前光标往上搜索,用得不多
:set nu #nu就是number,显示行号 , ,它也只生效一次
# vim ~/.vimrc #在这个文件里面设置一下,永久生效
set hlsearch
set nu
:set nonu #no number 不显示行号
搜索替换关键词
:n1,n2s/word1/word2/g :1,$s/word1/word2/g :1,$s/word1/word2/gc
这里 s 表示switch,substitute,切换替换的意思 g全局的意思,在一行内全局替换 c 表示comfirm确认的意思,即替换时提示确认
:1,$s/macOS/OSX/g #$表示最后一行,,,,,,这个命令行表示从第一行到最后一行,把所有的macOS替换为OSX
:%s/macOS/OSX/g #这里 1,$可以用%来代替,%也表示从第一行到最后一行,即整个文件内的全局替换
:%s@macOS@OSX@g #这里 斜杠/ 也可以用其它符号如@来表示
:%s@macOS@OSX@gi #这里 i 表示查找时大小写不敏感的替换 如果是大写I就是查找时大小写敏感的替换
:s
(substitute)命令用来查找和替换字符串。语法如下:
:{作用范围}s/{目标}/{替换}/{替换标志}
例如:%s/foo/bar/g
会在全局范围(%
)查找foo
并替换为bar
,所有出现都会被替换(g
)。
作用范围分为当前行、全文、选区等等。
当前行:
:s/foo/bar/g
全文:
:%s/foo/bar/g
选区,在Visual模式下选择区域后输入:
,Vim即可自动补全为 :'<,'>
。
:'<,'>s/foo/bar/g
2-11行:
:5,12s/foo/bar/g
当前行.
与接下来两行+2
:
:.,+2s/foo/bar/g
上文中命令结尾的g
即是替换标志之一,表示全局global
替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:
空替换标志表示只替换从光标位置开始,目标的第一次出现:
:%s/foo/bar
i
表示大小写不敏感查找,I
表示大小写敏感:
:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c
表示需要确认,例如全局查找"foo"
替换为"bar"
并且需要确认:
:%s/foo/bar/gc
回车后Vim会将光标移动到每一次"foo"
出现的位置,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
按下y
表示替换,n
表示不替换,a
表示替换所有,q
表示退出查找模式, l
表示替换当前位置并退出。^E
与^Y
是光标移动快捷键,参考: Vim中如何快速进行光标移动。
:1,$s/macOS/OSX/g
:1,$s/OSX/macOS/gc # c就是confirm,让你替换前有个确认
u, Control + r u是撤销,Control + r是重做
vim常用底线命令(底线命令模式)
保存文件:w (write) 强制保存:w!(感叹号!有强制的意思)
退出文件:q (quit) 强制退出,不保存修改:q! (感叹号!有强制的意思)
保存退出文件:wq 另存为其他文件:w filename
显示行号:set nu 取消显示行号:set nonu
https://brew.sh/zh-cn/ macOS (或Linux)缺失的软件包的管理器,可以用它安装各种软件
https://iterm2.com/features.html 一款终端工具iterm2 iterm 2 ,比macos自带的终端强大