Ex modundaki Vim şu durumlarda faydalıdır:
- Etkileşimli (çoklu) dosyaları etkileşimli olarak (betiğin bir parçası olarak) düzenlemeniz gerekir.
- Bağlantınız çok yavaş veya işlemlerinizden sonra ekran güncellenmiyor.
- Eşlemeler ve kısaltmalar devre dışı bırakıldı.
- Gibi ortak anahtarlar Escapeveya Controldüzgün çalışmıyor.
Temel vi
olarak görsel mod ex
bu yüzden Vim Ex Mode sadece benziyor ex
(hala aynı kodu çalıştırıyorlar), bu yüzden ex
vi ve tersi içinden komut moduna geçmek mümkün . Aslında iki mod vardır: Ex mod ( vim -e
) ve vi uyumlu Ex moddan ( vim -E
) daha gelişmiş komutlar sağlayan gelişmiş Ex mod . Bakınız: Ex modu ile gelişmiş Ex modu arasındaki fark nedir?
Ör editörler bir ailenin köküdür: edit
, ex
ve vi
. Ex, bir süper kümedir ed
ve en kayda değer uzantısı bir ekran düzenleme tesisidir. ex (1)
Düzenleme en yaygın kullanımı ve benzeri olarak bir şekilde kullanan insanlar olmayan etkileşimli dosyaları olduğu sed
ve awk
bununla birlikte daha akışı yönlendirilmiş ediyoruz, - onlar sadece başından sonuna kadar ileri dosyayı okumak (bunlar birden fazla satır ile çalışmak üzere tasarlanmış değiliz ) vim
arabellek odaklı iken - dosyada istediğiniz gibi güçlü kılan ileri ve geri hareket edebilirsiniz.
Temelde:
sed
Bir S düzenleyici ED itor , bir dosya editörü değil.
Bununla birlikte, insanlar dosyaları düzenlemeye çalıştığı için kötüye kullanıyor gibi görünüyor ve gerçek şu ki dosyaları düzenlemiyor. İkincisi, yerinde ( -i
) gibi seçenekleri standart olmayan FreeBSD uzantılarıdır ve diğer işletim sistemlerinde bulunmayabilir. Bu nedenle, taşınabilir kodlardan, G / Ç ek yükü ve kötü yan etkilerden (sembolik simgeleri yok etmek gibi) kaçınmak istiyorsanız ex
, standart UNIX komut tabanlı editörü (birlikte ed
) BashFAQ olan kullanmanız gerekir .
Ex modunda faydalı bulduğum diğer şeyler python
, arka arkaya birçok komutu çalıştırabileceğiniz, düzenli ifadeleri çalıştıran / hata ayıklayan, vim konfigürasyonunu kontrol eden, harici komutları çalıştıran veya kayıtları çalıştıran vb. .
Örneğin:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
Ex modunda normal moddan daha kolaydır (yalnızca son komutunuzu görebilirsiniz).
Pratik kullanımlar
Aşağıdaki takma adları benim var .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Not: Kullanarak bufdo
değil ex
POSIX uyumlu yöntem (uyarınca kılavuzun ), bu yüzden o zaman bunu kullanarak düşünebilirsiniz find
yerine. !
(Aksi oluşturulur uyarı) kaydetmeden tamponlar geçiş zorlamak için kullanılır.
İlki, tüm kaynak dosyalarımdaki boşlukları kırpmak için kullanıyorum, örneğin:
trim **/*.php
İkincisi, tüm sekmeleri boşluklara (tekrarlı olarak) dönüştürür , örneğin:
retab **/*.php
Benim için kullanmak retab
yeterli, ancak burada açıklanan bazı olumsuzluklar var . -V
Ayrıntılı verbilite çıktısı için ekstra ekleyin .
Yukarıdaki örneklerin zsh / bash4 globbing ( **
) yöntemini kullandığına dikkat edin , bu nedenle kabuğunuzun desteklediğinden ve etkin olduğundan emin olun.
Daha pratik örnekler için (html dosyalarını ayrıştırma gibi) kontrol edin:
Ayrıca Ex-mode hakkında daha fazla bilgi için:
Q
veq:
oldukça farklı. SadeceQ
sağdan mı bahsediyorsun ?