Vim: 231 Anahtar Komutları
Bir karakterden önceki ^ herhangi bir o karakteri yazarken kontrolü elinizde tutmanız gerektiğini belirtir.
mbomayiwo^V^R"^V^V^V^X ^V^["sy0dd`a@f ^["bc0yiwo^V^V^V^X^V^R"^V^[0l@sa^V^V^V^A-^V^[0f-"ayhdd`a@i ^["dc0mbyiwo^V^R"Exe@b^V^[0fel"ty2ldd`b@t ^["ec0wmbyiwo@f @d^V^[@z ^["fc0"xyiwwmbyiwocw^V^V^V^Rx^V^V^V^[@a@i @e^V^[@z ^["ic0IB0 B^V^R" ^V^OWB0 ^V^OA B0^V^[0*w"tyiWdd`b@t ^["zd0dd`bAe^[0@e
Adımlar böylece bunu da yönetebilirsiniz!
- Çizgiyi Vim'e kopyala
- Yazıp
:s/\^V/<Ctrl-V><Ctrl-V>/g
enter tuşuna basın (ikisi size mavi bir ^ V vermelidir)
- Yazıp
:s/\^R/<Ctrl-V><Ctrl-R>/g
enter tuşuna basın (şimdi mavi ^ Rs görmelisiniz)
- Yazın
:s/\^X/<Ctrl-V><Ctrl-X>/g
ve enter tuşuna basın (artık mavi ^ x'ler görmelisiniz)
- Yazıp
:s/\^O/<Ctrl-V><Ctrl-O>/g
enter tuşuna basın
- Yazıp
:s/\^A/<Ctrl-V><Ctrl-A>/g
enter tuşuna basın
- tip
:s/\^\[/<Ctrl-V><Ctrl-[>/g
enter tuşuna basın (bu komut biraz farklıdır, çünkü ['dan kaçmam gerekiyordu)
- tip
0"yy$
. Komut şimdi y kaydında saklanır
- Bir satırdaki girişi ayarlayın ve
@y
Birisi komutu paylaşmanın daha iyi bir yolunu biliyorsa, lütfen bana bildirin. Bunun uzun olduğunu biliyorum, ama bulabildiğim en iyisi bu.
Giriş çıkış
Giriş dizesi, dosyadaki herhangi bir satırda yalnız olmalıdır. 1 0 0 4 3 0 0 0 7
Çıktı basitçe giriş dizesinin üzerine yazacaktır 1 2 3 4 3 4 5 6 7
açıklama
Algoritma
- Sıfır olmayan bir numaradan başlayın, son sayı olmadığından emin olun.
- Sıfır olmayan bir sonraki sayıyı bulun
- Farklarını al. Cevap negatifse, aralığı tamir etmek için azaltmalısınız, aksi halde aralığı onarmak için artırmalısınız.
- İlk karaktere geri dönün ve önceki sayıyı artırarak / azaltarak her sıfırı değiştirin.
- Son karaktere ulaşana kadar tekrarla
Kullanılan Makrolar
@ e - Sonu kontrol et. Son sayının kendisine eklenmiş bir e değeri olacaktır. İmlecin altındaki sayının sonunda bir e varsa, e'yi silin ve yürütmeyi durdurun. Aksi takdirde, @b ile bir enterpolasyon döngüsü başlatın.
mbyiwo^R"Exe@b^[0fel"ty2ldd`b@t
@b - İnterpolasyon döngüsüne başlayın. Çıkarma işlemi (s) için imlecin altındaki numarayı kaydedin ve ardından bir sonraki sıfır olmayan terimi bulun (f)
mayiwo^R"^V^X ^["sy0dd`a@f
@s - @d içinde kullanılacak çıkarma komutunu saklar. Basitçe (val)^X
nerede(val)
interpolasyon adımının başlangıcında sayısıdır. Bu, @b komutu ile ayarlanır.
f - Sıfır olmayan bir sonraki terimi bulun. Geçerli değeri adsız kayıt defterine yazın, ardından bir @f @d
sonraki satıra yazın ve sonra @z çalıştırın. Bu, eğer sayı sıfır ise, bu komutu tekrarlar ve eğer değilse @d komutunu çalıştırır.
wmbyiwo@f @d^[@z
@z - Adsız kayıt 0 ise koşullu çalıştır. Bu komut, formattaki yeni bir satırda iki komut bekler command1 command2
. Adsız sicil 0 ise command1
, yürütülür, aksi takdirde command2
yürütülür. Hiçbir komutun içinde boşluk kalmayacağını unutmayın.
IB0 B^R" ^OWB0 ^OA B0^[0*w"tyiWdd`b@t`
@t - Geçici komut kaydı. Yürütmeden önce çeşitli komutları kısa bir süre için saklar. Öncelikle if ifadelerinde kullanılır.
@d - İnterpolasyon yönünü belirleyin. Dizideki ilk sayıyı imlecin altındaki sayıdan çıkarır (@s). Sonuç negatifse, enterpolasyon azalmalıdır, böylece ^ X @a olarak kaydedilir. Aksi takdirde, artmalıyız ki ^ A @a'ya kaydedilir. Bu kaydedildikten sonra, bu enterpolat döngüsünün başına geri dönün ve gerçekte enterpolasyon yapmak için @i çalıştırın
yiwo^V^X^R"^[0l@sa^V^A-^[0f-"ayhdd`a@i
@a - Mağazalar ya ^A
ya^X
İnterpolasyon adımında . Bu @d komutu ile ayarlanır.
@i - İnterpolat. Geçerli konumdaki numarayı @x'e kopyalayın ve bir sonraki sayıya geçin. Bu sayı sıfırsa, @x ile değiştirin ve yukarı veya aşağı doğru şekilde değiştirmek için @a komutunu çalıştırın, ardından bu komutu tekrarlayın. Sayı sıfır değilse, bu enterpolasyon döngüsünün sonuna ulaştık. Bu numara ile başlangıç olarak yeni bir numara başlatılmalıdır, bu yüzden sonu kontrol etmek ve tekrar çalıştırmak için @e komutunu çalıştırın.
"xyiwwmbyiwocw^V^Rx^V^[@a@i @e^[@z
@ x - Geçici depolama kaydı. İnterpolat komutunda kullanılır (@i)
Tuş vuruşlarını yıkmak
mbo :Set b mark to current position and open a new line below to write macros
mayiwo^V^R"^V^V^V^X ^V^["sy0dd`a@f ^["bc0 :Write to @b and reset line
yiwo^V^V^V^X^V^R"^V^[0l@sa^V^V^V^A-^V^[0f-"ayhdd`a@i ^["dc0 :Write to @d and reset line
mbyiwo^V^R"Exe@b^V^[0fel"ty2ldd`b@t ^["ec0 :Write to @e and reset line
wmbyiwo@f @d^V^[@z ^["fc0 :Write to @f and reset line
"xyiwwmbyiwocw^V^V^V^Rx^V^V^V^[@a@i @e^V^[@z ^["ic0 :Write to @i and reset line
IB0 B^V^R" ^V^OWB0 ^V^OA B0^V^[0*w"tyiWdd`b@t ^["zd0 :Write to @z and reset line
dd`b :Delete this line and move cursor back to original line
Ae^[ :Append an e to the last number
0@e :Move to the beginning of the line and run
0
Programımız yerine başka bir değer alabilirnull
miyiz?