Make a "Ceeeeeeee" program Once I wrote a JavaScript program that would take as input a string and a character and would remove all characters except for the first one and the character given as input, one by one.

For example, computing this with inputs codegolf.stackexchange.com and e for the character yields:

codegolf.stackexchange.com
cdegolf.stackexchange.com
cegolf.stackexchange.com
ceolf.stackexchange.com
celf.stackexchange.com
cef.stackexchange.com
ce.stackexchange.com
cestackexchange.com
cetackexchange.com
ceackexchange.com
ceckexchange.com
cekexchange.com
ceexchange.com
ceechange.com
ceehange.com
ceeange.com
ceenge.com
ceege.com
ceee.com
ceeecom
ceeeom
ceeem
ceee


It keeps the first character and all es. All other characters are removed one by one.

Your task is to write a program (or function) that takes two inputs and outputs (or returns) a string that accomplishes this effect.

Specifications


You can assume that the string will not contain any newlines.
The second input will always be one character.
If the answer is in the form of a function, you may return an array of strings containing each line in the output.
The output can contain a trailing newline.


Test Cases

Test Cases, s:

Test Cases
Tst Cases
Ts Cases
TsCases
Tsases
Tsses
Tsss


Make a "Ceeeeeeee" program, e:

Make a "Ceeeeeeee" program
Mke a "Ceeeeeeee" program
Me a "Ceeeeeeee" program
Mea "Ceeeeeeee" program
Me "Ceeeeeeee" program
Me"Ceeeeeeee" program
MeCeeeeeeee" program
Meeeeeeeee" program
Meeeeeeeee program
Meeeeeeeeeprogram
Meeeeeeeeerogram
Meeeeeeeeeogram
Meeeeeeeeegram
Meeeeeeeeeram
Meeeeeeeeeam
Meeeeeeeeem
Meeeeeeeee


Hello World!, !:

Hello World!
Hllo World!
Hlo World!
Ho World!
H World!
HWorld!
Horld!
Hrld!
Hld!
Hd!
H!


Hello World!, z:

Hello World!
Hllo World!
Hlo World!
Ho World!
H World!
HWorld!
Horld!
Hrld!
Hld!
Hd!
H!
H


alphabet, a:

alphabet
aphabet
ahabet
aabet
aaet
aat
aa


upperCASE, e:

upperCASE
uperCASE
uerCASE
ueCASE
ueASE
ueSE
ueE
ue


This is code-golf, so the shortest code (in bytes) wins.
Vim, 27, 26, 25 bytes
DJqqYp:s/.\zs[^&lt;C-r&gt;-]&lt;CR&gt;@qq@qD

Try it online!
Input comes in this format:
e
codegolf.stackexchange.com

My naive first approach is three bytes longer:
i:s/.\zs[^&lt;Right&gt;]&lt;Esc&gt;&quot;addqqYp@a@qq@qdd

I'm also happy with this answer because it starts with my name.
DJqq:t$|s/.\zs[^&lt;C-r&gt;&quot;]&lt;CR&gt;@qq@qD
DJMcMayhem

See the similarity? Eh?
Less successful approaches:
i:s/.\zs[^&lt;Right&gt;]&lt;Esc&gt;&quot;addqqYp@a@qq@qdd
i:s/.\zs[^&lt;Right&gt;]&lt;CR&gt;@q&lt;Esc&gt;&quot;adkqqYp@aq@qdd
DJ:s/.\zs[^&lt;C-r&gt;&quot;]&lt;CR&gt;uqqYp@:@qq@qdd
DJqq:t.|$s/.\zs[^&lt;C-r&gt;&quot;]&lt;CR&gt;@qq@qdd

Explanation:
D                                   &quot; Delete everything on this first line
 J                                  &quot; Remove this empty line
  qq                                &quot; Start recording into register 'q'
    Y                               &quot; Yank this line
     p                              &quot; And paste it
      :s/                           &quot; Run a substitute command on the last line in the buffer. Remove:
         .                          &quot;   Any character
          \zs                       &quot;   Move the selection forward (so we don't delete the first one)
             [^&lt;C-r&gt;-]              &quot;   Followed by anything *except* for the character we deleted
                      &lt;CR&gt;          &quot; Run the command
                          @q        &quot; Call register 'q'
                            q       &quot; Stop recording
                             @q     &quot; Run the recursive macro
                               D    &quot; Delete our extra line