Bunu harici filtre olarak Ex
kullanarak 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, :%!sort
dosyanızdaki tüm satırları sıralar; :2,8!sort
2-8 satırlarını sıralar vb.)
sed
olan dere editörü aracı ve tüm Unix benzeri sistemlerde bulunur. Anahtar kavramlar sed
burada 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 sed
diğer işlerken kaydetmek için giriş satırları).
-n
sed
komutunun, 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.)
$p
içinde sed
"sen son satırında ise komut vasıtası sed
bireyin 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, sed
komut 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 -4
Sadece 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 vi
veya ex
size 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, ex
modda, 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: