Bunu harici filtre olarak Exkullanarak bir komutla da yapabilirsiniz sed:
:%!sed -n 'h;n;G;h;n;G;h;n;G;p'
Bu sürüm, 4'ün katlarının ötesindeki fazladan satırları yok sayar (siler). 4 satırdan az (ters) son kümede tutmak için şunu kullanın:
:%!sed -n '$p;h;n;G;$p;h;n;G;$p;h;n;G;p'
%Burada "tampon her satırını" anlamına gelir.
!Komut aracı "girdi olarak belirtilen hatlar ile aşağıdaki komutu çalıştırın ve yerine komutun çıkış belirtilen hatlar." (Buna filtre denir; sıralama gibi şeyler için çok kullanışlıdır, örneğin, :%!sortdosyanızdaki tüm satırları sıralar; :2,8!sort2-8 satırlarını sıralar vb.)
sedolan dere editörü aracı ve tüm Unix benzeri sistemlerde bulunur. Anahtar kavramlar sedburada kullanılan kullanırken ekstra metin sopa nerede olduğu ((varsayılan olarak sadece sırayla girişin her satırı içerir) "desen alanı" ve "tutma alanı" olan seddiğer işlerken kaydetmek için giriş satırları).
-nsedkomutunun, desen alanını yazdırma varsayılan eylemlerini bastırmak için bir seçenektir (çünkü bu durumda yalnızca açıkça söylediğimizde yazdırmak istiyoruz.)
$piçinde sed"sen son satırında ise komut vasıtası sedbireyin girdi, baskı (desen boşluk)".
h "mevcut alanın üzerine yazarak" desen alanı "nın mevcut içeriğini" tutma alanı "na yapıştırın."
n "desen alanı" nın içeriğini girişten sonraki satırla değiştir. "
G "örüntü alanına" ekle: bir satırsonu ve ardından hold tutma alanı’nın içeriği. "
Hepsi birlikte ele alındığında, sedkomut dört çıktı satırı depolar, bunları depolarken tersine çevirir ve sonra yazdırır. $pİkinci versiyonda ilave komutları dosyanın en son satır 4 hatlık bir çoklu dışında başka ulaşılırsa, satır yine basılır emin olun.
Vim'e özgü özellikler kullanmadan ve harici filtre kullanmadan alternatif, etkileşimli bir yaklaşım için:
:4
dördüncü satıra gitmek için.
:.m -4 | +3m . | +2m . | +5
önceki dört satırı (1-4) tersine çevirin ve imlecinizi 8. satırda bırakın.
.m -4Sadece mevcut çizgisini taşır sonra (taşınan satırda imleci bırakarak) dördüncü hatta hatları geri.
+3m .imleci taşınan satırda bırakarak, geçerli satırdan sonraki 3 satır olan satırı geçerli satırın hemen sonrasına taşır . +2m .Tabii ki aynı şekilde çalışıyor.
+5 imleci bulunduğu yerden beş satır aşağıya yerleştirir.
İstediğiniz şekilde tekrarlayın.
Vim'de bu komutun tamamını ile @:tekrarlayabilir, ardından ile tekrarlayabilirsiniz @@. POSIX'deki viveya exsize gerekir insert :.m -4 | +3m . | +2m . | +5 , metin satırı olarak adlandırılmış tampon (register) için silin ve ardından bu adlandırılmış tampon (register) yürütün.
Bu nedenle, exmodda, satırları yalnızca POSIX tarafından belirtilen özellikleri kullanarak etkileşimli olarak tersine çevirme ve 17 metin satırından başlayarak:
Entering Ex mode. Type "visual" to go to Normal mode.
:0a # Append following text after "line 0" (i.e. insert at start of file).
.m -4 | +3m . | +2m . | +5
. # End text insertion
:d k # Delete that line to register k
line1 # This is a printout of the current line
:4 # Move to line 4
line4
:@k # Execute register k to reverse lines 1-4
line8
:@@ # Execute register k again
line12
:@@ # Execute register k again
line16
:@@ # Execute register k again
line17
:%p # Print the whole buffer (just to see what was done)
line4
line3
line2
line1
line8
line7
line6
line5
line12
line11
line10
line9
line16
line15
line14
line13
line17
:wq # Save and quit
Daha fazla okuma: