Többször is visszavonhatom az nvi és / vagy az eredeti vi programot?

Néha Vim nélküli rendszeren vagyok, és az alapértelmezett nvi (BSD rendszerek) vagy eredeti vi (Arch Linux).

Elég sok különbség van, de a legnagyobb bosszúság az, hogy csak visszavonhatom utolsó művelet. A u második megnyomásakor a művek “újragyártás”.

Van valamilyen módja annak, hogy ez működjön?

Válasz

Feladó 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. 

Tehát nyomja meg a u gombot, majd nyomja meg a gombot. további visszavonáshoz; Ha megnyomja a u ismét “megfordítja” az irányt, és megnyomja a gombot. egy újrakezdés lesz.

Soha nem tudtam erről tegnapig; és azt hittem, hogy ez valahogy új funkció, de úgy tűnik, hogy így működött, mivel 1996-tól legalább nvi 1.79 óta .

Ez nem “t dolgozzon a eredeti vi ; ahol a visszavonás a következőképpen van dokumentálva:

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

Ez valóban bonyolult módszer annak a kijelentésére, hogy az u újbóli megnyomásával a változtatások újra végrehajtódnak.

Amit a Vim “s :help undo is mond (és miért feltételeztem, hogy ez nem fog működni a nvi):

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

Válasz

A legközelebbi dolog az eredeti vi többször kell visszavonni (leszámítva a U t, amely egy soron belül több változtatást is visszavonhat) a számozott regiszterek, amelyek a legfrissebb kilenc változtatást tartalmazzák vagy törlések.

Ha számozott regiszterből tesz be, akkor a következő dot parancsok növelik a regisztrációt, amikor megismétli a parancsot. a következő szöveggel, a kurzor sorával > jelzéssel,

 aaaa > bbbb cccc dddd eeee 

a eredményei:

 aaaa > eeee 

Ha ezután beírja az "1P parancsot, a vi a legutóbbi törlés a "1 nyilvántartásból:

 aaaa > dddd eeee 

Ütés . a következő legutóbbi regiszter tartalmát teszi fel, ha "2P teti, és a . gombot ismét lenyomva a "3.

Összefoglalva tehát: "P.. az összes törölt szöveget visszahelyezi, így a

 aaaa > bbbb cccc dddd eeee 

Nem zseniális, de jobb, mint a semmi! Hasznosabban használhatja a puffer elején vagy végén, hogy gyorsan megvizsgálja, mi van a számozott regiszterekben. Ezután könnyedén törölheti azt, amire nincs szüksége.

A vim dokumentálja :help redo-register alatt.

Válasz

Az eredeti vi használatával nyomja meg az [n] gombot u visszalépés n lépéssel. Fokozatos visszalépés lépésről lépésre …

  • nyomja meg a [n] u gombot, hogy visszalépjen n lépéssel
  • majd nyomja meg a [n] u gombot n lépés megismétléséhez
  • majd nyomja meg az [n + 1] u gombot, hogy visszalépjen [n + 1] lépés
  • stb.

Megjegyzések

  • Van valami, ami közel áll az eredeti vi-hez , és ez nem ' t n lépést hátralép.
  • Egyetértett. Az eredeti Vi csak egyetlen módosítást képes visszaállítani a u paranccsal, vagy egyetlen sort visszaállítani annak módjára. volt, mielőtt elkezdte szerkeszteni a következővel: U.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük