Yanıtlar:
`.
Komut son değişim getirecektir.
`
Bir işaretine gider ve .
otomatik son değişikliğin yapıldığı pozisyona ayarlanmış bir "özel" işaretidir. Daha :help `.
fazla bilgi için bakınız .
``
Son atlayışınızı yapmadan önce sizi imlecin bulunduğu yere geri getirecek olan da var . Bkz :``
daha fazla bilgi için yardım .
Bir başka yararlı işaret `^
; Bu, imlecin ekleme modu durdurulduğunda en son kez olduğu konumdur. Bakın :help `^
.
Bkz :help mark-motions
(otomatik olarak ayarlanır diğer bazı "özel" işaretleri dahil) işaretlerini kullanma hakkında biraz daha genel bilgi için.
'
yerine (kesme) kullanabilirsiniz `
.
İşte size verilen senaryoya uyan başka bir yaklaşım, ve hemen öncekinden atlayacağınız yere gg
(son değiştirilen satıra değil) atlayacaktır .
Tuşuna bastığınızda gg
, eski imleç konumunuz atlama listesine basılır . Kimden :help jumplist
:
Sıçramalar bir atlama listesinde hatırlanır.
CTRL-O
VeCTRL-I
komutu ile daha yaşlı atlamalardan önce imleç konumlarına gidebilir ve tekrar geri dönebilirsiniz. Böylece listede aşağı ve yukarı hareket edebilirsiniz. Her pencere için ayrı bir atlama listesi var. Maksimum giriş sayısı 100 olarak belirlenir.[...]
Bir atlama komutu kullanırsanız, geçerli satır numarası atlama listesinin sonuna eklenir. Aynı satır zaten atlama listesinde ise, kaldırılır. Sonuç olarak, tekrarlarken
CTRL-O
sadece bir kez eski konumlara dönersiniz.
Bu, +jumplist
özellik ile Vim (vi değil) kullanmanızı gerektirir . Eğer :echo has('jumplist')
baskılar 1
, o zaman bunu kullanabilirsiniz.
Dnetserr'ın cevabına ve Peter Rincker'in yorumuna eklemek için Vim, değişikliklerin bir listesini tutar ve bununla ilgili bazı komutlar vardır.
:changes
değişiklikleri nerede listeleyeceklerini ve nerede olduklarını göstereceklerdir. Örneğin:
change line col text
2 8 17 #include <stdio.h>
1 3 0 #include "stm32f407.auto.h"
>
>
Değişiklik yığınında olduğunuz şovların bulunduğu satır , jump list ( :jumps
) veya tag stack ( :tags
) gibi. Ayrıca atlama listesi ve etiket yığını gibi, bu listeyi de geçebilirsiniz.
Normal modda, hareketler vardır g;
bir önceki değişiklik konuma gitmek ve g,
bir sonrakine gitmek için. Ayrıca, değişiklikten önceki g;
veya g,
listeden bu değişime gitmek için yapılan değişikliği de yazabilirsiniz . Yukarıda, 2g;
beni stdio.h içeren değişimin gerçekleştiği yere götürür.
Yığın ortasındayken :changes
, göreceli mesafeleri göstermek için güncellemelerdeki sayılar . Örneğin:
change line col text
1 8 17 #include <stdio.h>
> 0 3 0 #include "stm32f407.auto.h"
1 10 4 other
Bu geri birini (gidebilir gösterir 1g;
ya da sadece g;
) veya ileri bir ( 1g,
ya da sadece g,
).
Bu, elde etmek istediğiniz değişiklik aslında birkaç değişiklik önce gerçekleştiyse, bu harika
Bunun dezavantajı normal bir hareket gibi görünmemesidir. Örneğin, yapamaz dg;
ise, önceki değişim konumuna imlecin silmek d'.
ve d'^
hareketleri olarak işi yapmak.
Vi'deki geri alma komutu, son komut geri alındığında bir yeniden yapma işlevi göreceğinden, en uu
son düzenlediğim yere geri dönmek için bir araç olarak kullandım .
nocompatible
Set ile Vim kullanıyorsanız (çoğu insanın yaptığı gibi), geri almak ve geri almak için u
ardından kullanmak istersiniz CTRL+R
. Aksi takdirde uu
Vi.
:set nocompatible
kullanılmaz.
vim
(ile nocompatible
) ile iki undos yapar uu
, ama ben kullanmak u
ve CTRL+r
aynı etki için.
g;
veg,
tuşlarını da kullanabilirsiniz . Bkz:h g;
ve:h g,