你从系统自带的 cmd 切到 cmder 之后,大概率第一个遇到的小困惑就是:这玩意到底怎么清屏?你顺手敲一个cls,发现它是好用的;但换到某个默认启动的 shell 里,cls又提示命令不存在;有时候你明明敲了清屏,屏幕上还留着半屏输出,像没清干净一样。这个看起来“简单到不值一提”的操作,在 cmder 里其实藏着好几层讲究,我把这些年实际使用中的经验完整梳理一遍,想彻底搞懂的人可以照着来。
先说结论:cmder 不是一个终端软件,它是一个终端前端,内部真正干活的是你启动的那个 shell——可能是 cmd、PowerShell、Git Bash 或者其他自定义 shell。所以“如何清屏”这个问题,本质上是“在你当前那个 shell 里如何清屏”,再加上 cmder 自己作为前端提供的那几个快捷键。把这一层关系弄明白了,后面所有操作都是水到渠成。
1. 先搞清楚:cmder 里到底有几种“屏幕”?
很多人一上来就搜 cmder 清屏方法,搜到一堆答案但相互矛盾,就是因为没弄明白 cmder 的架构。cmder 本身只是把 Windows 控制台窗口包装得更好看、更好用,真正解释和执行你输入命令的,是底层那个 shell 程序。同一个 cmder 窗口,你可以通过新建标签页来启动不同的 shell,每个 shell 对“清屏”这个动作的理解都不一样。
1.1 cmder 是“壳中壳”,不是单一终端
cmder 的内核基于 ConEmu,它负责画窗口、处理字体配色、把键盘输入转发给子进程。你可以把它理解成一个“显示器+键盘+鼠标”的组合,而实际执行的命令跑在下面的壳里。在 cmder 左下角那个加号按钮旁边,有个小箭头,点开就能看到“New console”下面的选项:你可以启动 cmd、PowerShell、Git Bash,甚至 CMD 的管理员模式等。
这就导致了一个很经典的场景:你在某个标签页里敲cls是好用的,但新建一个标签页,如果它默认跑的是 bash,你敲cls就会看到command not found。同一套快捷键在不同 shell 里也可能出现不同行为,所以谈清屏不能脱离 shell 类型。
有个小技巧是直接看 cmder 窗口标题栏,标题会显示当前标签正在运行的 shell 名称,比如提示符为C:\Users\xxx>的多半是 cmd,以PS C:\Users\xxx>开头的是 PowerShell,以user@host开头的是 Git Bash。知道自己当前在哪个 shell 里,才能选对清屏命令。
1.2 cmd、PowerShell、Git Bash 的清屏机制差异
cmd 的清屏命令是cls,它的实际作用是清除控制台窗口里的所有内容,并且把光标移动到左上角。这个命令几乎不产生可见输出,也不会报错,在 cmd 里是最直观的。
PowerShell 里也有一个名为cls的命令,但它其实是Clear-Host的别名。Clear-Host的操作方式跟 cmd 的cls稍有不同,它们是各自 shell 分别实现的功能,只是名字恰好一样。在 PowerShell 里你也可以直接敲clear,效果一样。
Git Bash 环境里的清屏命令是clear,它使用的是一种终端控制序列,本质上是通过向终端输出特定的 ANSI 转义字符来让屏幕内容消失。如果你在 bash 里强行敲cls,大概率得到的是一个bash: cls: command not found的报错,因为 Git Bash 默认不会给 cmd 命令做别名。
如果把这几层关系总结成一个简单的对照,大概是这样的:
| Shell 类型 | 清屏命令 | 本质 |
|---|---|---|
| cmd | cls | 调用 Windows 控制台 API 清空屏幕缓冲区 |
| PowerShell | cls/Clear-Host/clear | 通过终端 API 清空显示区域 |
| Git Bash / WSL | clear | 输出 ANSI 转义序列清屏 |
| 任意 shell + cmder 前端 | Win + W 等快捷键 | 由 cmder 前端直接清空窗口内容 |
2. 最常用的几种清屏方式,按效率排队
要说“哪招最好用”,我的排序跟大多数人可能不太一样。很多人依赖打字命令,但在 cmder 里,最高效的反而是快捷键。命令要敲回车,且受当前 shell 影响,快捷键则基本上全局生效,不用管你在哪个标签页里。
2.1 最直觉的做法:直接敲 cls
如果你当前在 cmd 标签页,敲cls然后回车,屏幕立刻干净,光标回到左上角。这个命令几乎瞬间完成,没有任何副作用,是最稳妥的方式。在 PowerShell 标签页里,敲cls也可以,因为系统给你做了别名。
但你在 Git Bash 标签页里敲cls,却会直接报错。这个报错并不危险,只是有点烦。有人会简单粗暴地在 bash 里也定义一个cls别名指向clear,这个做法很实用,后面我会详细讲配置文件的位置和写法。
cls最值得依赖的其实是它的“确定性”:所有 cmd 用户都知道它能用,不需要额外设置,适合你要给同事演示或者临时在别人电脑上操作时的场合。
2.2 换到 bash 后:用 clear
clear这个命令在 Git Bash 和 WSL 里是最正统的清屏方式。你在终端里敲clear,终端会收到一段控制序列,然后重新绘制屏幕,效果跟cls看上去没什么区别。
细节上有个点需要提一下:clear不清除当前屏幕的整个“回滚缓冲区”。也就是说,你用鼠标往上滚,可能还能看到之前的历史输出。这在某些场景下反而是好事,因为你想回看前面的日志;在另一些场景下则可能让你觉得“没清干净”。想彻底把回滚缓冲区也清掉的话,在 bash 里可以敲clear -x或者使用printf "\033[2J\033[H"来达到类似效果。
我自己平时为了省事,还会在 Git Bash 里把cls映射到clear。这样不管在哪个 shell 标签页,肌肉记忆都能生效。具体的别名配置方法,第三节里会给出可以直接抄的写法。
2.3 最容易被忽略的两个快捷键
cmder 自带一个全局清屏快捷键:默认配置下,按下Win + W组合键(没错,就是 Windows 徽标键加 W 键),当前终端里的内容会被清空。这里的“清空”是由 cmder 这个前端层面处理的,所以无论你的标签页里跑的是 cmd、PowerShell 还是 bash,它都能直接生效。
另一个常用快捷键是Ctrl + L。在很多终端模拟器里,Ctrl + L都是一键清屏的标准组合。如果你在 bash 里,这个组合默认就可以用;在 cmd 和 PowerShell 里,cmder 通常也会把Ctrl + L处理成清屏动作。我实测下来,在 cmder 的 cmd 标签页里Ctrl + L是好用的;但如果你的设置被改过,或者你用了某些自定义按键绑定,这个键可能会失效。失效时优先检查 cmder 的设置页,看看键绑定那里是不是被占用了。
顺带一提,cmder 里还有一个非常被低估的操作:Ctrl + Shift + L默认可能绑定的是清空回滚缓冲区或者清空屏幕并重置终端状态,具体版本之间略有差异。不要死记硬背,按自己当前版本的实际行为为准,多用几次就能形成习惯。
3. 让“清屏”变得更顺手:别名与自定义配置
如果说前面只是基础操作,这一节才是真正能让清屏变得“顺手到完全不用动脑”的部分。cmder 支持配置文件自定义别名、快捷键和启动行为,把这些用起来之后,你在任何 shell 里敲cls都能清屏,还能把清屏这个动作绑定到鼠标侧键或者专门的组合键上。
3.1 在 cmder 里给清屏命令做别名
cmder 自带一个用户别名文件,通常在安装目录下的config/aliases文件里。你可以直接编辑这个文件,给它加上两类映射:一类是让 bash 里的cls变成clear,另一类是让 cmd 和 PowerShell 里的clear也能用。
做法是这样的:用文本编辑器打开 cmder 安装目录下的config\aliases文件,在文件里追加一行:
cls=clear这行的意思是在当前支持别名的 shell 里,把cls当作clear来执行。保存文件后,重启 cmder 或者执行一次source相关命令让配置重新加载,之后你在 Git Bash 里敲cls就不会再报错了。
在 cmd 和 PowerShell 里则不需要额外配置,因为cls本来就是内置命令。如果你想在 PowerShell 里增加类似clear=x之类的映射,其实意义不大,直接敲clear已经通了。
还有一个小众但实用的别名思路:把c这个单字母命令映射成清屏。我见过不少同事把c=clear或c=cls写进别名文件,这样在快速操作时只需要敲一个字母加回车,非常省事。缺点是有可能跟已有命令冲突,比如你装了某些 CLI 工具后c可能被占用。因此我一直建议,这类单字母快捷命令要谨慎使用,至少先确认当前环境里没有同名命令。
3.2 让快捷键“清屏+翻页”也能用
如果你希望按下某个组合键,既能清屏又能把终端滚动缓冲区一起重置,可以在 cmder 的设置里做自定义按键绑定。具体路径是:打开 cmder 的设置(Settings),左侧找到Keys & Macro,在右侧找到“Clear console”这类动作,然后给它分配一个你喜欢的组合键,比如Ctrl+Alt+C。
对多数用户来说,这一步不是必须的,但如果你经常处理大量输出,比如反复跑构建脚本、查看日志,那么“一键清空包括历史回滚在内的所有内容”确实比普通清屏更实用。绑定好后,按键行为是 cmder 前端直接处理的,跟内部 shell 类型无关,这点比命令方式更可靠。
我自己在个人环境里设置的是:Ctrl + L只做普通清屏,保留历史滚动的能力;Ctrl + Shift + L做彻底重置。这样既能快速清屏,又能在想看旧日志时回头去翻滚动缓冲区,两个场景互不冲突。
3.3 为什么我不建议用第三方工具清屏
网上能看到一些人建议安装额外的清理软件或者写脚本去清屏,这些方案对 cmder 来说有点过度设计。终端清屏本来就应该由终端自身或者 shell 自带的机制来完成,额外引入工具只会增加被阻断、被误杀、被版本兼容问题折磨的风险。尤其是一些所谓“内存清理”工具,它们清的是系统内存,跟你的终端窗口半点关系没有。
如果你确实在大量日志输出之后感觉终端变卡,正确做法是清屏加重置,而不是去装优化软件。用reset命令可以重新初始化终端状态,这在 Git Bash 里尤其好用——当你用less查看完大文件退出后,终端显示偶尔会变得很怪,敲一个reset往往比反复清屏有效得多。
4. 实操实录:在 cmder 里完成一次“干净”的清屏
这一节我带你从头到尾操作一遍,把刚才讲的几种方式串起来。你不用记住所有命令,只需要跟着走一遍,找到自己最顺手的那条路径,以后一直用就行了。
4.1 实操:从 cmd 到 bash,把三种方式的输出都看明白
打开 cmder,默认标签页通常是 cmd(取决于你的启动设置)。我先输入dir让屏幕产生一些输出,然后敲cls回车,整个窗口瞬间清空,只留下一个普通的C:\Users\你的用户名提示符。这一步验证了最基本的使用方式。
接下来,点 cmder 左下角的加号箭头,选择Git Bash新建一个 bash 标签页。输入ls后屏幕上会出现一些文件内容,接着我敲cls,bash 会直接提示command not found。这不是 cmder 的问题,是 bash 本身没有这个命令。再输入clear,终端内容就被清掉了。
最后在同一个 bash 标签页里,我按住Win + W,窗口内容也被清空。整个过程就是三种清屏方式的实操感知:命令可用性取决于 shell、快捷键可用性取决于 cmder 前端。
4.2 实操:给你的 cmder 绑定专属清屏快捷键
假设你想用Ctrl+Shift+K作为清屏快捷键,这个是很多终端用户的习惯。打开 cmder 设置:在窗口右上角或菜单栏找到汉堡菜单(三横线或者齿轮图标),点击进入 Settings。左侧选择Keys & Macro,在右侧输入过滤关键字clear,找到Clear console或类似名称的动作,点击它,然后按下Ctrl+Shift+K组合键,确认绑定。
完成绑定之后,我建议你顺带做一个小测试:在这个标签页里输出较长内容(比如ping一个地址产生多行结果),然后按下刚才绑定的快捷键,确认屏幕被清空。如果你的版本里Clear console同时提供“清空回滚缓冲区”的选项,也可以在同一处配置,让一次按键完成彻底清理。
需要注意:如果Ctrl+Shift+K已经被某个其他宏或者插件占用,绑定会失效。此时不要硬来,换一个组合,比如Alt+W或者Ctrl+Shift+C。组合键选择的第一原则是避开其他软件全局快捷键,比如某些输入法的快捷键就别去撞。
4.3 现场踩坑记录:清屏后残留内容怎么办
我实际使用中经常遇到的场景是:用 Git Bash 跑完一段日志输出,敲clear清屏,但按上箭头回翻命令历史时,屏幕上还是能看到之前残留的碎片。解决办法很简单,把 bash 的clear换成更彻底的方式:
printf "\033[2J\033[H"这是一段 ANSI 转义序列,\033[2J表示清空整个屏幕,\033[H表示把光标移动到左上角。用完之后,屏幕会更干净。也可以把这段写进别名:
alias cls='printf "\033[2J\033[H"'在 cmder 的 bash 标签页里,你还可以用reset命令重置终端。这个命令会把终端的状态恢复到初始时的干净样子,对解决乱码、字符重叠等现象都有奇效。不过你要知道,reset不只是清屏,它会重置终端的一些状态属性,在某些特殊场景(比如你正在跟踪一个需要实时刷新的任务)可能会打断显示,所以普通清屏场景不推荐优先用它。
5. 常见问题与排查技巧实录
问的人多了,我把高频问题和排查思路整理成一个速查表,方便你在遇到清屏相关“怪现象”时快速定位。
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
敲cls提示命令不存在 | 当前 shell 是 Git Bash 或 WSL | 改用clear;或者给别名文件加cls=clear |
| 清屏后还能滚到旧内容 | 普通清屏只清当前显示区,不清回滚缓冲区 | 用reset、printf "\033[2J\033[H"或绑定“Clear console” |
Ctrl + L没反应 | cmder 的键绑定被修改或占用了 | 打开 Settings → Keys & Macro 重新绑定 |
| 清屏之后中文变成乱码 | 终端代码页不对或者字体问题 | 在 cmder 设置里把字体设置为支持中文的字体,并确认 shell 环境是 UTF-8 |
| 清屏后提示符位置错乱 | 终端状态被某些程序破坏 | 执行reset或重启当前标签页 |
5.1 明明敲了 cls,屏幕还是乱糟糟
这种情况多半不是清屏命令本身的问题,而是终端状态已经混乱了。比如你在 bash 里运行过一个交互式程序(top、vim、less),退出后如果程序没有正确恢复终端属性,终端可能还处于“隐藏光标”或“原始输入模式”。这时候敲cls或者clear只清掉一部分内容,光标位置也怪怪的。
处理方法是先敲reset然后回车。它会重新初始化终端,让控制台回到正常状态,然后再清屏就清爽了。如果你不想每次手动敲,可以给reset做一个别名:
alias fresh='reset && clear'一条命令解决终端恢复正常和清屏两件事,适合我这种经常折腾各种命令行工具的人。
5.2 快捷键按了没反应
快捷键类问题首先要去 cmder 的 Settings → Keys & Macro 里确认绑定是否存在。有几个隐藏点容易坑人:一是该动作绑定时使用了某个已被系统或其他软件占用的组合键;二是当前焦点不在终端窗口里,被其他窗口拦截了;三是部分组合键在 Git Bash 里会被 shell 自己捕获,比如Ctrl+C、Ctrl+D这类特殊组合就尽量不要绑定为清屏快捷键。
我的建议是,优先选择不容易被各类程序占用的组合,比如Ctrl+Alt+W、Alt+Home这类。如果绑定后还是没反应,可以用 cmder 自带的“检查按键冲突”功能,里面会显示当前按键是否已被其他宏占用,这一点配置的时候非常有用。
5.3 清屏把历史输出也抹掉了,想回看怎么办
有时候你清屏太快,猛然反应到刚才的输出里有重要信息,此时还能补救。如果你的清屏方式保留回滚缓冲区,直接按住Shift加鼠标滚轮向上翻,或者使用 cmder 的滚动条就能看到之前的输出。但如果你用了彻底清屏,那历史输出就没法从当前窗口里找回。
想避免这种尴尬,最简单的方式是在做大量操作前先养成“记录输出”的习惯,比如通过重定向把输出保存到文件:
your-command > output.log 2>&1或者直接用tee在显示输出的同时写入文件:
your-command | tee output.log这样清屏之后随时可以通过cat output.log或者直接打开文本文件来查看历史内容。说句实话,清屏本身不复杂,真正容易出问题的是“清完之后想看旧内容”这个需求。我现在的做法是:日常交互中清屏,但一遇到构建、日志、测试这类重要输出,先把文件落盘再说。
最后说点实在的
cmder 清屏这件事,知识点本身并不多,但搞清楚它的底层机制后,你其实顺便理解了终端模拟器和 shell 之间的关系,这比单纯记住某个命令值钱得多。我个人现在的使用习惯是:在 cmd 标签页里敲cls,在 Git Bash 里敲clear,在任何标签页里用Win + W做快速清屏,用Ctrl+Shift+L做彻底清理。这套组合用了很久,很少在清屏上再花什么心思。
如果你使用的是 cmder 的便携版,记得修改配置后如果不生效,先检查一下是不是权限问题导致配置文件没写进去;如果用的是完整安装版,则要留意版本更新后部分快捷键默认值可能发生变化。清屏只是个“小操作”,但把终端环境调教得完全符合自己的操作习惯,能省下日常非常多的隐形时间。我的经验是:与其在弹出来的搜索框里反复搜“cmder 如何清屏”,不如花两分钟把自己的别名和快捷键一次性配置好,从此再也不用记任何命令。