4.5. 撤消

几乎可以撤消在 GIMP 中对一个图像所做的任何操作。要撤消最近的操作,选择图像菜单中的 编辑->撤消 不过由于经常使用它,有必要记住其快捷键, Ctrl-Z.

撤消本身也能被撤消。在撤消一个动作后,您也能重做它,选择在图像菜单中的 编辑->重做 ,或使用快捷键, Ctrl-Y。 通过反复地撤消和重做一个动作,对判断其效果常常是非常有用的。这通常是非常快捷,不会耗费任何多余资源,而且也不会更改撤消历史,因此这样做没有任何坏处。

[小心] 小心

当您撤消一个或多个命令后,又对图像进行了除撤消或重做以外的操作,那么您就不可能再重做这些操作了:它们永远地丢失了。如果您觉得这样不妥,解决方法就是先复制图像,然后在其拷贝上进行操作。(不是原图像,因为在复制图像时,重做/撤消历史不会被拷贝。)

假如您每次常常重做或撤消很多步,这时也许使用撤消历史对话框更加方便。它是一个显示撤消历史中各点的概要的可停靠对话框,允许您通过点击来后退或前进到某点。

撤消是基于特定的一个图像操作的:“撤消历史”是一个图像的组成部分。GIMP 要给每个图像分配一定的内存来达到该目的。您能够定制您的首选项来增加或减少其数量,在首选项对话框中的环境页有两个重要的参数:最小撤消次数--不管耗费多少内存都要保证,和最大撤消内存--超过这个值,GIMP 会从撤消历史中删除旧的记录。

[注意] 注意

虽然撤消历史是一个图像的组成部分,但是在用 GIMP 的内建 XCF 格式保存图像时不会保存该信息,而其它的图像属性都将保留。当图像被重新打开时,它的撤消历史为空。

GIMP 撤消的实现是相当复杂的。只需要很多的撤消内存来保留需要操作(比如改变一个图层的可见性),因此在记录被从撤消历史中删除之前,可以保持一个很长的操作序列。许多操作(再次以改变图层可见性为例)被压缩了,所以连续多次地执行它们只在撤消历史中产生单独的一个点。尽管如此,还是有其它的操作可能耗费大量的撤消内存。比如说大部分的滤镜:它们由插件实现,GIMP 核心没有知道它们改变了什么的真正有效方法,因此它就不得不记住操作前后被影响图层的全部内容。您可能在记录被从撤消历史中删除之前只能执行很少的这种操作。

不能被撤消的东西

大部分修改一个图像的动作能被撤消,而那些没有修改图像的动作一般就不能。这些操作包括保存图像到一个文件,复制图像和拷贝图像部分等。它还包括大部分影响图像显示但没有修改其图像数据的动作。最重要的例子就是图像比例的缩放。不过也要例外:虽然切换快速蒙板开启或关闭没有修改图像数据,但它能被撤消。

下面是一些最重要的动作,它们修改一个图像但不能被撤消:

关闭图像

撤消历史是图像的组成部分,因此当图像被关闭时,其所有资源都被释放,撤消历史也一样。正因为这样,GIMP 总是要您确认是否真想关闭图像,除非在最近一次保存图像后没有被修改。(您能够通过首选项对话框的环境页来关闭该提示;您要这样做时请先想清楚。)

恢复图像

“恢复”表示从文件重新读取图像。GIMP 实际上是通过关闭图像并打开一个新图像来实现的,因此其撤消历史将丢失。所以,当图像“不干净”时,GIMP 总是要您确认是否真想恢复图像。

动作的“片段”

一些工具在它们起作用之前要求您做一系列复杂的处理,不过只能撤消全部而不是单个步凑。比如,智能剪刀要求您通过点击图像中的多个点产生一个闭合的路径,然后再通过在路径内部点击创建一个选区。您无法撤消单独的点击:在您完成后撤消将使全部回到起始点。再比如,当使用文字工具时,您无法撤消单独的文字,改变字体等:完成后撤消会删除新建的文字图像。

滤镜,和其它由插件或脚本执行的操作能像通过 GIMP 核心实现的动作一样地被撤消,不过这需要它们正确使用 GIMP 的撤消函数。如果代码不正确,一个插件有潜在破坏撤消历史的可能,到时不光是该插件而且以前的动作都不能被正确地撤消。所有由 GIMP 贡献的插件和脚本都可以认为是被正确设置的,而从其它地方得到的插件就显然没有保证。同时,即使代码正确,在运行一个插件时取消掉它有时也会破坏撤消历史,所以除非是不小心所做的其结果将非常严重,最好避免这样做。