Mac实用技巧之:窗口管理
Table of Contents
其实这里说到的内容,在之前的文章中或多或少都提到过,只不过这里全部集合起来一起讲了。但由于小技巧很多,有可能有些东西虽然我知道,但是写的时候会漏掉,大家可以评论指出,我会添加上去。
一些术语
活跃程序与非活跃程序
活跃程序:一般来说,位于最前面的,你当前正在操作(正在使用)的程序,就是活跃程序,顶部菜单显示的就是当前活跃程序的菜单
非活跃程序:活跃程序任何时候只有一个,除了活跃程序,其它都是非活跃程序,在绝大多数情况下,活跃程序的窗口会挡住它后面的非活跃程序窗口。
少数软件有“置顶”的功能,比如IINA播放器就有这个功能,点击右上角的“小图钉”按钮,即可把该窗口一直保持在顶层,这样你才可以边做其它事边看视频,此时播放器虽然不是“活跃程序”,但它还是保持在最前面
置顶程序可以有多个,而且一个置顶程序窗口也可能被另一个置顶程序窗口遮挡,但无论是哪个置顶程序,它一定不会被非置顶程序遮挡
没有窗口的活跃程序:当一个程序的窗口被关闭或最小化时,就看不到它的窗口了,然而该程序还是活跃程序,这一点可以从“顶部菜单栏还是该程序的菜单”能体现出来。
之所以讲活跃程序,是因为快捷键都是作用于当前的活跃程序的(全局快捷键除外)。
全屏窗口
点击程序窗口左上角第三个绿色的按钮,即可全屏该窗口。全屏一个窗口,会自动创建一个桌面并让该程序窗口单独占用这个桌面,窗口铺满整个屏幕,在全屏模式下,你看不到顶部的菜单栏也看不到底部的程序坞,更看不到程序窗口本身的标题栏。
如下图,全屏的窗口会新开一个桌面(当然你也可以先进入调度中心,再把你想全屏的窗口拉到上边,它会自动出现+号,这样这个窗口一样能全屏)
最大化窗口
注意:最大化不是全屏!最大化,是窗口铺满除了顶部菜单栏和底部的程序坞外的所有空间。当然如果你设置了自动隐藏菜单栏或程序坞,则窗口最大化也会占用菜单栏或程序坞的位置,但最大化一定能看到标题栏。
事实上macOS并没有“最大化”这种说法,这是我参考Windows的说法来说的,因为这个很多人都需要,但它却没有。
由于macOS没有最大化功能,所以绝大多数软件都自己做了这个功能,这也就是为什么大多数软件,你像Windows那样直接双击栏就可以把它最大化的原因。
但是,很多macOS自带的软件却不是这样,像Safari、访达等,都遵循最最优宽度,意思是你双击标题栏后,它们会自动判断你当前内容多宽,然后放大到合适的宽度,而不是直接铺满整个窗口。这种操作我个人不太习惯,我还是想把它整体放大到铺满整个桌面的。
实现窗口最大化的方法:
- 1、双击标题栏(理论上适用于所有第三方软件及部分macOS自带软件,但访达、Safari等自带的软件不支持);
- 2、按住option键后,左上角绿色的全屏按钮会变成+号,点击它之后就可以最大化(该操作其实跟双击标题栏是一样的,所以对于访达、Safari等自带软件同样不起作用);
- 3、鼠标放到窗口四个角的某一个角,当鼠标变成斜向双箭头时,按住option键再双击,即可让窗口铺满桌面,也就是实现窗口最大化(该方法对访达、Safari等自带软件也一样起作用);
- 4、使用第三方软件,比如Rectangle(该方法对访达、Safari等自带软件也一样起作用);
使用第三方软件Rectangle实现最大化窗口
最小化窗口
就是缩小到程序坞,点击程序窗口左上角第二个黄色的按钮即可,这个应该没多少人不知道。但需要注意的是,程序窗口被最小化后,它还是活跃程序(意味着你现在按快捷键还是会作用于该程序,当然全局快捷键除外)
关闭窗口
macOS的程序和窗口是分开的,窗口关闭了,程序并不会关闭,一个典型的标志是,你看不到窗口,但是你在左上角菜单栏中看的到它的菜单,这说明你当前还在这个程序上,当前“活跃”的程序就是菜单栏上那个,只不过它的窗口都关闭了而已。所以我自己把“关闭的窗口”也称为一种窗口,因为后面要讲到如何切换出这个“已经关闭的窗口”。
隐藏程序
大家要注意,我前面说了:全屏窗口、最大化窗口、最小化窗口、关闭窗口,但是到了隐藏,为什么不说“隐藏窗口”而说“隐藏程序”呢?这有什么不一样吗?
确实不一样!很软件(程序)都是可以打开多个窗口的,比如访达、各种浏览器、编辑器等等,都可以打开多个窗口,前面的全屏、最大化、最小化、关闭等等,都是针对单个窗口的,而隐藏却不是,隐藏是针对程序的,也就是说,无论你这个程序开了几个窗口,只要你按隐藏快捷键cmd+H
(隐藏只能用快捷键),那么这个程序的所有窗口都会被隐藏,因为隐藏的是整个程序。
无论开了几个窗口,按下cmd+H
会隐藏整个程序(程序都被隐藏了,它的所有窗口自然也都看不见了)
当程序被隐藏后,它就会变成非活跃程序,程序列表(就是cmd+tab
出来的那个列表)中的下一个程序会接替它成为活跃程序,如果程序列表没有程序(也就是你隐藏该程序后只剩桌面),那么访达将会接替它成为活跃程序,为什么呢?因为桌面也是访达的一个文件夹,它是在/Users/你的用户名/Desktop/
里,由于你隐藏该程序后只剩桌面,就相当于是在访达的/Users/你的用户名/Desktop/
文件夹里,它当然就显示访达了。
被隐藏的程序可以用cmd+tab
能切换出来
一些基本操作
将窗口最小化为应用程序图标
在程序坞右侧靠近废纸篓的地方有一根分隔线,默认情况下,如果你点击某个程序窗口的最小化按钮(左上角中间黄色按钮),它会最小化到这个分隔线的右侧,这样会导致程序本身在程序坞中占一个位置,而打开的窗口又占用一个位置。
而且一个程序可以打开多个窗口,每个窗口都会各自占用一个。当然,如果你没有最小化,而是打开了窗口或者隐藏窗口,它就不会占用这个位置,也就是说,只有最小化窗口才会占用。
不过,即使设置了“将窗口最小化为应用程序图标”,也有些程序会被最小化到分隔线右侧,原因是,这些程序只有菜单栏,没有程序坞图标,既然程序坞没有图标,它自然也就无法最小化到程序坞的图标中。
如下图所示
有些人可能会问,可是我的程序坞怎么有两条分隔线?
这是因为它默认是显示“最近打开的程序”,说实话,我个人是不喜欢这个,所以我都是把它关掉的,怎么关呢?系统偏好设置→程序坞与菜单栏→左侧选择“程序坞与菜单栏”→右侧取消勾选“在程序坞中显示最近使用的应用”即可。
现在来说一下,怎样设置“最小化的时候直接最小化到程序图标本身”,在:系统偏好设置→程序坞与菜单栏→左侧选择“程序坞与菜单栏”→右侧勾选“将窗口最小化为应用程序图标”即可。
勾选“将窗口最小化为应用程序图标”和未勾选的区别:
预览程序坞窗口
我们知道,Windows系统中,鼠标放在任务栏中打开的程序上面,会显示它的预览窗口,鼠标再移动到预览窗口,就可以预览该窗口。
然而,macOS并没有这个功能,如果需要实现这个功能,需要借助第三方软件。在以前可以用HyperDock,这个软件不仅能预览程序坞中的窗口,还能让窗口实现Windows的碰到左右上三个边时,分别居左、居右、最大化。但是,这个软件在新版的macOS中不行了,作者一直没有更新。
现在可以用DockMate这款软件,它只能预览,不能实现窗口碰左右上边的效果,而且是收费软件。至于怎么下载、怎么安装,可以查看我这篇文章:Mac实用技巧之:三种安装/卸载/更新软件的方式及其优缺点,注意,文章不讲某个软件怎么安装,而是讲通用的安装方法,任何软件都可以按文章介绍的方法安装。
DockMate实现预览程序坞窗口效果
注意,点击预览窗口时,虽然可以显示该窗口,但有一种情况不能显示,就是窗口被关闭的程序(比如点击左上角的x
或者按cmd+w
关闭)。
实现窗口Windows碰边效果
我们知道,拖动Windows的窗口碰到左右上三个边时,分别居左、居右、最大化,macOS本身没有这个功能,需要借助第三方软件实现。
这一类的软件有很多,我推荐开源免费的Rectangle,它是基于之前的Spectacle,因为Spectacle是个人开发者开发的开源应用,他由于自己的原因没有时间和精力继续维护下去,所以就停止了更新。
至于Rectangle怎么下载、怎么安装,可以查看我这篇文章:Mac实用技巧之:三种安装/卸载/更新软件的方式及其优缺点,注意,文章不讲某个软件怎么安装,而是讲通用的安装方法,任何软件都可以按文章介绍的方法安装。
Rectangle的使用技巧:
拖着窗口碰撞顶部放大时,速度不要太快,太快的话,虽然Rectangle能识别,但这会与系统自带的进入调度中心功能冲突(我不知道这个功能从什么时候开始有,但Bug Sur肯定是有的)。
所以Rectangle碰撞顶部放大的技巧是:拖着窗口向菜单栏移动,当窗口上边沿碰到菜单栏时,就不会往上走了,但鼠标不要停下,一直往上移动到菜单栏顶部并且停留一下,它就会用阴影的方式告诉你放大操作已经触发,此时再放开鼠标,窗口就会放大,注意这个速度不能说要有多慢,但一定不能太快,快了的话就变成系统的默认功能,也就是触发进入调度中心了。
而拖出来的时候,也不要马上放开鼠标,要稍微停留一下,等窗口缩小到原来大小后再放开鼠标,否则Rectangle无法把窗口调整到放大前的大小。
速度太快会直接进入创建桌面
使用cmd+tab无法切换程序问题
我们都知道,Windows的alt+tab
可以用于快速在两个窗口之间切换,而在macOS中,也有这个操作,只不过它是cmd+tab
,但事实上,macOS的cmd
键刚好就是Windows的alt
键的键位,所以使用起来完全一样。
cmd+tab
切换程序的方法:
- 1、快速按
cmd+tab
,可以在两个程序之间切换; - 2、按住cmd不放,再按一下tab键(此时cmd键仍然保持不放开),就会显示一个程序列表,此时,你每按一次tab键,就会向右选中下一个程序,而每按一次反引号键(tab键上边那个,也是波浪号),就会向左选中上一个程序,当然这个操作也可以用左右方向键代替,但全程都需要保持按住cmd键不放,一旦放开cmd键,被选中的那个程序就会被设置为激活状态(相当于你用鼠标在程序坞中点击了它)。
但我相信很多人都遇到过,cmd+tab
经常无法切换出一个程序的窗口,如下所示
上边视频中,一开始我可以用cmb+tab
正常切换,但是当我把TextEdit(系统自带软件,叫“文本编辑器”)最小化后,再用cmd+tab
切换就无法把TextEdit切换出来了,这是为什么呢?
因为cmd+tab
切换的并不是窗口,而是“程序”!你可以再仔细看看上边的视频,并注意顶部菜单栏左上角的菜单,TextEdit真的无法切换出来吗?事实上,我们可以看到,当我们按cmd+tab
切换的时候,我们可以看到顶部菜单栏一直在“YouDaoDict”和“TextEdit”之间切换,所以cmd+tab
是切换成功了的。你可以试试在切换到TextEdit后,按快捷键cmd+N
,是不是能创建一个TextEdit窗口?前面讲活跃程序时说过,快捷键作用的对象就是活跃程序(全局快捷键除外),因为当前活跃程序是TextEdit,所以你按cmd+N
自然就是新建一个TextEdit窗口了。
那为什么切换成功了,却又看不到窗口呢?大家可以再回看视频,当我把TextEdit最小化后,顶部菜单栏的菜单是没有变化的,也就是说,你当前还是在TextEdit程序上,当前活跃程序还是TextEdit,此时我们按cmd+tab
,切换到了YoudaoDit(即有道词典),再次按cmd+tab
它又会回到TextEdit,而因为你之前切换出去的时候,窗口就是处于缩小状态的,所以现在切换回来了,它肯定还是缩小状态。
这就是为什么macOS的cmd+tab
经常切换不出窗口的原因!其实除了缩小,关闭窗口也是一样的,因为窗口被关闭了,所以切换回来时,是无法看到窗口的,但它确确实实是切换回来了,因为顶部菜单栏里都已经显示这个软件的名称和菜单了。
那有没有办法解决由于窗口被关闭或被最小化而导致的cmd+tab
切换回来不显示窗口的问题呢?办法肯定是有的,这又要用到我们经常提起的“神奇的opion键”!
方法是:先用cmd+tab
选中该程序,在按住cmd
不放的情况下,先用食指按住option
键,再放开cmd
,在放开cmd
的瞬间,最小化的或被关闭的窗口就会出来,窗口出来之后就可以放开option
键了。
总结:cmd+tab
作用对象是程序,而不是窗口,你从当前程序切换到其它程序的时候,如果当前程序是没有窗口的(关闭了或最小化了),那么你再次切换回来时,它一样是没有窗口的,但它确确实实是切换回这个程序了(可以看顶部菜单栏的菜单和用快捷键验证)。想要恢复窗口,要先按住option再放开cmd。
使用调度中心切换程序
调度中心,英文叫Mission Control(直译是“任务控制”),进入调度中心的方法有五种:
- 1、按F3
- 2、
control+↑
- 3、触控板三指/四指上滑(默认三指)
- 4、妙控鼠标双指轻拍
- 5、使用触发角
需要注意的是,调度中心只能显示窗口已经在桌面的程序,窗口被隐藏、关闭、最小化的程序,都不会显示在调度中心里。
调度中心
切换同一个程序的多个窗口
- 1、
cmd+反引号
- 2、右击程序坞中的程序再从弹出的菜单中选择
- 3、使用Exposé:切换到该程序后三指或四指(默认三指)下滑(或使用快捷键
control+↓
或control+F3
)
注意:像浏览器打开多个标签,并不属于多个窗口,而是属于一个窗口打开多个标签。另外,“Exposé”这个单词我真不知道怎么翻译,曝光程序窗口?好像有这么个意思,反正它就是把一个程序的多个窗口列出来,让你可以选择,具体操作一下就知道了。
多桌面及其切换
进入调度中心后,把鼠标移动到顶部,即可显示多桌面,右侧有“+”号可以创建新桌面。
创建桌面
注意,如果一个程序在其它桌面已经有窗口,那么你点击它,会返回它窗口所在的桌面,需要你想它的其中一个窗口在新桌面,必须从原桌面中把它拖到新桌面(拖着窗口快速碰撞顶部即可进入桌面选择),当然也可以右击程序坞中该程序图标→选择→所有桌面(这样就能把它分配给所有桌面)。
切换到某个桌面的方法:
- 1、三指/四指左右移动;
- 2、
control+→/←
- 3、妙控鼠标双指左右滑动
- 4、先进入调度中心,再用鼠标点击要切换的窗口
关闭某个桌面:
- 如果桌面是你在调度中心手动点
+
号创建的,那么再次进入调度中心,鼠标放在桌面小图标上,它左上角会有个x
,点这个x
即可关闭该桌面。 - 如果桌面是你全屏一个程序窗口创建的(程序全屏会自动创建一个新桌面并且该程序会单独占用该桌面),也是进入调度中心,鼠标放在桌面小图标上,只不过这次它的左上角显示的不是
x
号,而是“取消全屏”的图标,点击它,该程序就会自动取消全屏,并且这个桌面也会并关闭。
显示桌面
显示桌面的几种方法:
- 1、触控板拇指与除小指外的另外三指分开(只有笔记本或购买了外接触控板可用)
- 2、使用触发角
- 3、按
cmd+F3
- 4、按
F11
或Fn+F11
(默认为Fn+F11
,如果你设置让F1,F12为标准功能键,那么直接按F11就行)。
真正显示桌面:
其实,大家肯定发现了,macOS的显示桌面跟Windows的不一样!那如果我想用Windows那种显示桌面要按什么快捷键?答案是:没有!
是的,macOS默认没有像Windows那样的显示桌面,如果你需要这个功能,那就要借助第三方软件了,我是借助Alred外加自己写的插件来实现的。
先安装Alfred,然后下载我写的插件:Show-Desktop.alfredworkflow,在已经打开Alfred的情况下,双击该插件即会提示添加到Alfred。
如何安装Alfred?:如果你看过我的Mac实用技巧之:三种安装/卸载/更新软件的方式及其优缺点这篇文章,你应该很清楚要怎么安装Alfred!如果不知道,那就去看一遍,因为Alfred并不是什么特殊的软件,安装方法跟其它软件是一样的。
至于安装后要进行的一些设置,可以看我这篇文章:Mac实用技巧之:聚焦搜索/Spotlight Search & Alfred。
使用方法及原理:
安装完插件后,要先双击HotKey图标,录入一个快捷键,我用的快捷键为Shift+cmd+D
,录入保存后,按这个快捷键即可显示桌面,首次使用需要授权(macOS中所有软件首次使用都需要授权)。
该插件的原理是,先打开访达,然后按option+cmd+h
隐藏除访达外的所有窗口,最后再用option+cmd+m
最小化访达窗口,以达到隐藏所有窗口的目的,只不过是用快捷键调用程序实现了。
显示桌面效果如下图:
移动非活跃程序的窗口
一般情况下,如果我们移动一个非活跃窗口,就用鼠标移动就好了,这个应该没有人不会,但关键是,这个被移动的程序肯定会变成活跃程序。
如果想移动一个窗口但又保持这个程序为非活跃程序,可以按住cmd
键再移动。
对齐窗口
当一个窗口移动到另一个窗口边缘时,它会“停”一下,就感觉被另一个窗口的边缘“挡住”了,当然移动的速度不能太快,否则你无法发现这个“细微”的动作。用这种方式,可以很容易的把两个窗口对齐!
合并窗口
对于支持一个窗口打开多个标签的程序来说,我们一般可以把它的标签拖出来,成为一个新窗口,既然能“拖出来”,那我们肯定也希望“放回去”。这类软件其实不多,基本上就是访达、浏览器、以及一些编辑器。
像浏览器,一般你既然能把标签拖出来,那想放回去的时候,拖着标签放回去,它自动就会合并回去,这很方便,对于一些编辑器来说也是这样(比如Sublime Text)。
但是毫无疑问,在窗口管理方面,苹果又一次让我们失望了!像访达、Safari浏览器都不支持能“拖回去”,我们只能点击顶部菜单栏中的:窗口→合并所有窗口,来把拖出来的标签“放回去”,但事实上,这个操作会把所有的窗口都合并回去,不像第三方浏览器以及编辑器那样,可以单独把某个窗口“拖回去”。