nviや元のviで複数回元に戻すことはできますか?


13

Vimのないシステムで、デフォルトnvi(BSDシステム)またはオリジナルvi(Arch Linux)を使用することがあります。

かなりの違いがありますが、最大のイライラは、最後の操作しか取り消せ ないことです。もう一度押すとu「やり直し」になります。

これを機能させる方法はありますか?

回答:


16

からnvi(1)

 u       Undo the last change made to the file.  If repeated, the u command
         alternates between these two states.  The . command, when used
         immediately after u, causes the change log to be rolled forward or
         backward, depending on the action of the u command.

したがってu、を押してから.、さらに元に戻すには押し続けます。uもう一度押すと、方向が逆になり、押す.とやり直しになります。

昨日までこれについては知りませんでした。どういうわけか新機能だと思っていましたが、1996年から少なくともnvi 1.79以降はこのように機能しているようです。

これはしないで働く元のvi。ここで、取り消しは次のように文書化されています。

   u      Undoes the last change made to the current buffer.  If repeated,
          will alternate  between  these  two  states,  thus  is  its  own
          inverse.  When  used after an insert which inserted text on more
          than one line, the lines are saved in the numeric named  buffers
          (3.5).

uもう一度押すと変更がやり直されると言うのは本当に複雑な方法です。

これはVimの:help undo言うことでもあります(そしてなぜ私もそれが動作しないと思ったのかnvi):

 u                       Undo [count] changes.  {Vi: only one level}

1

オリジナルviが複数の取り消し(U1行内で複数の変更を元に戻すことができる)に最も近いものは、最新の9つの変更または削除を保持する番号付きのレジスタです。

番号付きレジスタから入力すると、後続のドットコマンドは、コマンドを繰り返すときにそのレジスタをインクリメントします。

たとえば、次のテキストを使用して、カーソル行をで示します>

  aaaa
> bbbb
  cccc
  dddd
  eeee

コマンドのdd..結果は次のとおりです。

  aaaa
> eeee

次に、と入力すると"1P、viはレジスタから最新の削除を行います"1

  aaaa
> dddd
  eeee

叩く.ことによって、次の最も最近のレジスタの内容を置く"2P、と打つ.再びはレジスタの内容を配置します"3

つまり、要するに、"P..削除したすべてのテキストを元に戻し、

  aaaa
> bbbb
  cccc
  dddd
  eeee

華麗ではありませんが、何もないよりはましです!さらに便利なことに、バッファの先頭または末尾で使用して、番号付きレジスタの内容をすばやく検査できます。その後、不要なものを簡単に削除できます。

これはvimの下に文書化されてい:help redo-registerます。


-1

元のviを使用して、[n] uを押してnステップ戻ります。段階的に戻るには...

  • [n] uを押してnステップ戻ります
  • [n] uを押してnステップをやり直します
  • [n + 1] uを押して[n + 1]ステップ戻る

1
私が持っている近いオリジナルのviに何かをし、戻ってn個のステップに行くようには見えません。
ムル

同意した。元のViは、で変更を1つだけ元に戻すuか、で編集を開始する前の状態に1行を復元できますU
アントニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.