İfade kaydı ile hesaplamaları yapın
Hesaplamaları hem normal modda hem de ekle modunda yapabilirsiniz.
Normal mod
Normal modda, yazarsanız @=
imlecinizi yazarsanız, herhangi bir ifadeyi girebileceğiniz komut satırına gidersiniz. Enter tuşuna bastığınızda, ifadenin sonucu normal mod komutları olarak yürütülür.
Örneğin, geçerli satırın orta sütununa gitmek istediğinizi varsayalım. İşlev çağrısı col('$')
satırdaki sütun sayısını döndürür, böylece aşağıdakileri yazarak ne yapabiliriz:
@=col('$')/2<CR>|
Enter tuşuna bastığınızda, imleç ara belleğe geri döner ve vim |
bir numara girmiş gibi bir operatör (gibi ) bekler . Alternatif olarak, bu girmiş olabilirsiniz:
@=col('$')/2.'|'
... ama tabii ki daha fazla bayt.
Mod ekle
Sen basarak da ekleme modunda ifade kayıt kullanabilirsiniz <Ctrl-r>=
yerine @=
. Normal modda aynı şekilde çalışır, girdiğiniz ifadenin sonucu ekleme modunda yürütülecektir. Örneğin, yazdıysanız<Ctrl-r>=col('$')<CR>
, geçerli satırdaki sütun sayısı, yazdığınız gibi imlecin içine eklenir.
İfade kaydı hakkında daha fazla bilgi için yazın :help "=
.
İfadeleri yeniden kullanma
En son kullandığınız ifade, ifade kaydında saklanır "=
. Yazma @=<CR>
normal modda veya <Ctrl-r>=<CR>
ekleme modunda Makrolarda gibi çok onları kullanmak için izin yeniden ifadeyi değerlendirir.
İkamelerde hesaplamalar yapar
Düzenli ifade değişimleri yaparken ifadeleri de değerlendirebilirsiniz. Tek yapmanız gereken ikame işleminize başlamak \=
. Örneğin, bu dosyadaki satırları numaralandırmak istediğinizi varsayalım:
foo
bar
baz
İşlev çağrısı line('.')
geçerli satır numarasını döndürür, böylece iş kolaydır. Bunu girerek:
:s/^/\=line('.').' '/g<CR>
... istenen sonucu verir:
1 foo
2 bar
3 baz
Kullanabileceğiniz böyle bir ifadenin yakalanan grupları kullanmak için submatch()
örneğin işlevi, submatch(0)
eşdeğerdir \0
sıradan bir yerine, submatch(1)
eşdeğer \1
maalesef vb tuşa basarak bir sürü kadar bu yediği.
İfade değiştirme hakkında daha fazla bilgi için yazın :help sub-replace-expression
.