Nvi ve / veya orijinal vi'da birden çok kez geri alabilir miyim?


13

Bazen Vim'siz bir sistemdeyim ve varsayılanı nvi(BSD sistemleri) veya orijinali vi(Arch Linux) kullanıyorum.

Birkaç fark var, ancak en büyük sıkıntı sadece son operasyonumu geri alabilmem . uİkinci kez basmak bir "yineleme" dir.

Bunu çalıştırmanın bir yolu var mı?

Yanıtlar:


16

Gönderen 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.

Bu yüzden tuşuna basın uve daha .fazla geri almak için tuşuna basmaya devam edin ; uTekrar basarsanız , yön 'ters' olur ve basma .işlemi yeniden yapılır.

Bunu düne kadar hiç bilmiyordum; ve bir şekilde yeni bir özellik olduğunu düşündüm, ancak 1996'dan beri en azından 1.79'dan beri böyle çalıştığı görülüyor .

Bu vermez çalışmak orijinal vi ; burada geri alma şu şekilde belgelenir:

   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).

Bu, utekrar basmanın değişikliklerinizi yeniden yapacağını söylemenin gerçekten karmaşık bir yoludur .

Ayrıca Vim'in :help undosöylediği şey (ve neden işe yaramadığını varsaydım nvi):

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

1

Orijinalin viçoklu geri alması gereken en yakın şey ( Ubir satırda birden fazla değişikliği geri alabilecek olan bir yana ), en son dokuz değişikliği veya silmeyi içeren numaralı kayıtlardır.

Numaralı bir kayıttan koyarsanız, sonraki nokta komutları komutu tekrarladığında bu kaydı artırır.

Aşağıdaki metin ile Ör imleç çizgi ile gösterilen ile >,

  aaaa
> bbbb
  cccc
  dddd
  eeee

komut dd..şunlarla sonuçlanır:

  aaaa
> eeee

Daha sonra yazarsanız "1Pvi, kayıttan en son silme işlemini gerçekleştirir "1:

  aaaa
> dddd
  eeee

Vuruş ., bir sonraki en son kaydın içeriğini yapar "2Pve .tekrar vurarak kaydın içeriğini koyar "3.

Kısacası, "P..sildiğiniz tüm metni geri koyar ve sizi

  aaaa
> bbbb
  cccc
  dddd
  eeee

Parlak değil, ama hiç yoktan iyidir! Daha faydalı bir şekilde, numaralandırılmış kayıtlarınızda ne olduğunu hızlı bir şekilde incelemek için arabelleğin başında veya sonunda kullanabilirsiniz. Sonra ihtiyacınız olmayanı kolayca silebilirsiniz.

Vim altında belgelenmiştir :help redo-register.


-1

Orijinal vi'yı kullanarak, n adım geri gitmek için [n] u tuşuna basın. Adım adım geri gitmek için ...

  • n adım geri gitmek için [n] u tuşuna basın
  • ardından adımları tekrarlamak için [n] u tuşuna basın
  • sonra [n + 1] adım geri gitmek için [n + 1] u tuşuna basın
  • vb

1
Orijinal vi yakın bir şey var ve n adım geri gitmek gibi görünmüyor.
muru

Kabul. Orijinal Vi, yalnızca tek bir değişikliği ugeri alabilir veya tek bir satırı, düzenlemeye başlamadan önceki haline geri döndürebilir U.
Antony
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.