【注意:本题按通过的Case比例给分】 本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。 先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ): 1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。 2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。 3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。 再介绍一下撤销( undo)和重做 (redo)命令: 1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。 2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。 3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。 4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。 5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。 6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。   完整的命令列表为:   g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。 i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。 a str:在光标所在字符后插入 str这句话,其他同上。 o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。 dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。 d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。 undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。 redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。 其中命令名字与参数、参数与参数中间都是用一个空格分割   下图为测试用例例子里的的编辑器里的展示-笔试面试资料

这是qklbishe.com第8701 篇笔试面试资料
提供答案分析,通过本文《【注意:本题按通过的Case比例给分】

本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。 先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ): 1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。 2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。 3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。

再介绍一下撤销( undo)和重做 (redo)命令: 1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。 2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。 3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。 4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。 5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。 6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。   完整的命令列表为:   g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。 i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。 a str:在光标所在字符后插入 str这句话,其他同上。 o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。 dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。 d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。 undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。 redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。 其中命令名字与参数、参数与参数中间都是用一个空格分割   下图为测试用例例子里的的编辑器里的展示-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

【注意:本题按通过的Case比例给分】

本题需要让你实现一个类似vi的基于命令模式的文本编辑器,但仅需要少数几个命令。
【注意:本题按通过的Case比例给分】                本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。             先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ):         1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。         2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。         3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。                                         再介绍一下撤销( undo)和重做 (redo)命令:            1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。            2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。            3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。            4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。            5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。            6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。                       完整的命令列表为:              g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。            i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。            a str:在光标所在字符后插入 str这句话,其他同上。            o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。            dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。            d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。            undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。            redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。            其中命令名字与参数、参数与参数中间都是用一个空格分割                       下图为测试用例例子里的的编辑器里的展示

先介绍一下光标(上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略)

1.该编辑器里的光标是类似vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。

2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图1)。此时执行o命令的话,在下方插入一行(如图2)。

3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行i命令和a命令的效果是一样的(如图3)。

【注意:本题按通过的Case比例给分】                本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。             先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ):         1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。         2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。         3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。                                         再介绍一下撤销( undo)和重做 (redo)命令:            1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。            2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。            3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。            4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。            5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。            6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。                       完整的命令列表为:              g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。            i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。            a str:在光标所在字符后插入 str这句话,其他同上。            o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。            dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。            d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。            undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。            redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。            其中命令名字与参数、参数与参数中间都是用一个空格分割                       下图为测试用例例子里的的编辑器里的展示

再介绍一下撤销(undo)和重做(redo)命令:

1.编辑器的undoredo操作跟vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进Undo栈里,栈的大小为无限大,允许撤销全部的操作。

2.只有真正改变编辑器内文本的命令才会进入Undo栈,比如g命令,以及未对文本发生修改的d命令,还有undoredo命令本身都是不可撤销的,即不会进入Undo栈。

3.当执行undo命令的时候,如果Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入Redo栈里。

4.当执行redo命令的时候,如果Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入Undo栈里。

5.当执行undoredo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。

6.当执行任何输入的命令的时候,都会清空Redo栈,即用undo撤销一个命令C的时候,再执行输入的其他命令以后,则不能再用redo功能重做上一次撤销的命令C

 

完整的命令列表为:

 g x y: 移动光标命令,将光标移动到第x行,第y列上方。当x超过总行数时,则为最后一行。当y超过该行列数的时候,则为最后一列。

i str:在光标所在字符前插入str这句话,光标最终会停留在这句话的最后一个字符上。注意,str必定不为空,但是里面可能包含空格。

a str:在光标所在字符后插入str这句话,其他同上。

o str:在光标所在行的下面另起一新行插入str这句话,其他同上。

dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。

d n:从光标所在位置开始,往右删除n个字符(输入保证n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。

undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。

redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果undo了一个命令,再执行新的命令,则也不能redo

其中命令名字与参数、参数与参数中间都是用一个空格分割

 

下图为测试用例例子里的的编辑器里的展示

【注意:本题按通过的Case比例给分】                本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。             先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ):         1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。         2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。         3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。                                         再介绍一下撤销( undo)和重做 (redo)命令:            1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。            2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。            3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。            4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。            5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。            6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。                       完整的命令列表为:              g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。            i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。            a str:在光标所在字符后插入 str这句话,其他同上。            o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。            dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。            d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。            undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。            redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。            其中命令名字与参数、参数与参数中间都是用一个空格分割                       下图为测试用例例子里的的编辑器里的展示

【注意:本题按通过的Case比例给分】                本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。             先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ):         1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。         2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。         3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。                                         再介绍一下撤销( undo)和重做 (redo)命令:            1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。            2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。            3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。            4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。            5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。            6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。                       完整的命令列表为:              g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。            i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。            a str:在光标所在字符后插入 str这句话,其他同上。            o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。            dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。            d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。            undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。            redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。            其中命令名字与参数、参数与参数中间都是用一个空格分割                       下图为测试用例例子里的的编辑器里的展示 区块链毕设学生616556522号
太简单了,但是输入框太小了,过程写不下
今天 19:27:18 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 【注意:本题按通过的Case比例给分】 本题需要让你实现一个类似 vi的基于命令模式的文本编辑器,但仅需要少数几个命令。 先介绍一下光标 (上图中最左边的是编辑器显示的行号,用来展示用,并不是文本真正的内容,请忽略 ): 1.该编辑器里的光标是类似 vi编辑器里命令模式那样,停留在一个字符上方,而不是字符与字符之间。 2.编辑器文本为空的时候(初始时,或者把内容全部删除以后),会显示一个空行,光标停留在那行行首(如图 1)。此时执行 o命令的话,在下方插入一行(如图 2)。 3.当光标停留在一个空行的时候,光标会显示在行首,但此时执行 i命令和 a命令的效果是一样的(如图 3)。 再介绍一下撤销( undo)和重做 (redo)命令: 1.编辑器的 undo和 redo操作跟 vi编辑器的一样,是一个基于栈式的撤销功能。每当玩家输入一个命令的时候,如果可撤销的话(见第二条),就该操作压进 Undo栈里,栈的大小为无限大,允许撤销全部的操作。 2.只有真正改变编辑器内文本的命令才会进入 Undo栈,比如 g命令,以及未对文本发生修改的 d命令,还有 undo、 redo命令本身都是不可撤销的,即不会进入 Undo栈。 3.当执行 undo命令的时候,如果 Undo栈里有元素,则从栈顶弹出最后一个命令,撤销掉该命令,光标回到执行该命令前的位置,并且将命令压入 Redo栈里。 4.当执行 redo命令的时候,如果 Redo栈里有元素,则从栈顶弹出最后一个被撤销的命令,重新执行该命令,光标回到执行该命令后的位置,并且将命令重新压入 Undo栈里。 5.当执行 undo或 redo命令的时候,如果相应的栈里没有元素,则不进行任何操作,忽略该命令。 6.当执行任何输入的命令的时候,都会清空 Redo栈,即用 undo撤销一个命令 C的时候,再执行输入的其他命令以后,则不能再用 redo功能重做上一次撤销的命令 C。   完整的命令列表为:   g x y: 移动光标命令,将光标移动到第 x行,第 y列上方。当 x超过总行数时,则为最后一行。当 y超过该行列数的时候,则为最后一列。 i str:在光标所在字符前插入 str这句话,光标最终会停留在这句话的最后一个字符上。注意, str必定不为空,但是里面可能包含空格。 a str:在光标所在字符后插入 str这句话,其他同上。 o str:在光标所在行的下面另起一新行插入 str这句话,其他同上。 dd:删除光标所在行,光标最终会停留在下一行的首字符上。如果删除的是最后一行,则停留在最后一行的首字符上。 d n:从光标所在位置开始,往右删除 n个字符(输入保证 n>0),最多只会删除到行尾,不会跨过当前行。光标最终停留在删除以后的下一个字符位置上。 undo:撤销上一个对文本发生改动的命令,光标也回到上一个命令执行前所在的位置。如果没命令可以撤销,则什么都不做。 redo:重新执行上一个撤销的命令,光标也回到上一个命令执行后所在的位置。如果没有已经撤销的命令,则什么都不做。注意,如果 undo了一个命令,再执行新的命令,则也不能 redo。 其中命令名字与参数、参数与参数中间都是用一个空格分割   下图为测试用例例子里的的编辑器里的展示-笔试面试资料

提供最优质的资源集合

立即查看 了解详情