Vim, “u” ve “CTL-R” kullanırken tek bir “düzenleme” nin boyutunu nasıl belirler?


17

Kullanırken uveya CTL-Rgeri almak veya vim bir düzenleme yeniden yapmak, ben metnin alter parçalar, sadece en son tuş görünüyor.

Tek bir düzenleme olarak kabul edilen yığının boyutunu ne belirler?

Yanıtlar:


19

İçin tanımını arıyorsunuz undo-blocks.

Gönderen :h undo-blocks:

Geri alma komutlarından biri, komutta yapılan değişiklik ne olursa olsun, normal olarak yazılan bir komutu geri alır. Bu geri alınamayan değişiklik dizisi bir geri alma bloğu oluşturur. Böylece, yazılan tuş (lar) bir işlevi çağırırsa, işlevdeki tüm komutlar birlikte geri alınır.

Aynı blok için de kullanılır redo. Gönderen :h redo:

Son değişiklikler hatırlanır. Metni her değişiklikten önceki haline geri döndürmek için yukarıdaki geri al ve yinele komutlarını kullanabilirsiniz. Ayrıca, değişiklikleri geri alma işleminden önce geri alarak değişiklikleri tekrar uygulayabilirsiniz.


4
CTRL-G uEkleme modunda komutla tek bir geri alma bloğunu manuel olarak ayırabilirsiniz ; bu, bazı ekleme modu makrolarınız varsa kullanışlıdır.
fruglemonkey

8

Vim'ın kalıcı düzenleme sıklıkla olarak görülüyor operatörü (örneğin c, d, ...) bir üzerine uygulanan hareketi (örneğin iw, w, }, ...). Harika bir ürün olarak Vim tıknaz geri alır. Diğer editörlerin birçok küçük geri alma işlemini geri alma bloklarına dönüştürmek için bazı tahminlerde bulunması gerektiği gibi, Vim bunu doğal olarak yapar. Başka bir yan etki, bu size bir tekrar operatörü verir .(dot komutu olarak da bilinir).

Sorunuz özellikle tuş vuruşlarından bahsediyor, böylece ekleme modundayken küçük değişiklikleri nasıl geri alabileceğinizi bilmek istediğinizi varsayalım. Cevap, bu "Vim yolu" değildir. "Vim Way", her seferinde kısa seri çekim için kesici modda olacağınız anlamına gelir. Bu, ekleme modunda hatalar yapıldığında, genellikle normal moda geri dönüp metni düzeltir veya sadece geri alırsınız ve metni uyeniden yazarsınız.

Bazen ekleme modundayken geri alma bloğunun bölünmesi gerekebilir. Bu <c-g>uekleme modundayken yapılabilir. Daha fazla bilgi için :h :undojve bölümüne bakın :h undo-blocks.

Daha fazla yardım için aşağıdakileri öneriyorum:

:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt

Bu konuda bazı ekran görüntüleri de var:


"Tıknaz geri al" - gördüğüm en iyi açıklama.
Matt Parker

6

Bunu da bu şekilde düşünebilirsiniz: metni düzenlemek için her ekleme moduna Escgeçtiğinizde ve vurduğunuzda , bu bir blok oluşturur. Bu bloğu geri almaya çalışırsanız, ekleme moduna girmeden önce aynı konuma gidersiniz.

Bu nedenle, zaman zaman ekleme modundan çıkarak değişikliklerinizi "kaydedebilirsiniz": diyelim ki ekleme moduna geçip bir işlev yazıyorsunuz. Kodlamaya devam edebilir ve bir sonraki işleve geçebilirsiniz, ancak bazen normal moda geri dönüp tekrar ekleme moduna geçmeniz tercih edilir. Bu şekilde, kodunuzun basit bir şekilde yapılandırılmasını sağlayabilirsiniz ve geri dönmeniz gerekirse hangi konumda olacağınızı bilirsiniz.

Not: Taşımak için okları kullanırsanız, Esc+ [ hjkl] tuşlarına basmanız gibi

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.