Yaratıcı | Bill Joy |
---|---|
İlk versiyon | 1976 |
Son sürüm | 050325 (25 Mart 2005) |
Depozito | ex-vi.cvs.sourceforge.net/ex-vi/ex-vi |
Yazılmış | VS |
İşletim sistemi | Unix türü |
Tür |
Modal metin editörü ( d ) UNIX yardımcı programı ( d ) |
Lisans | BSD lisansı |
İnternet sitesi | ex-vi.sourceforge.net |
vi bir olduğunu tam ekran metin editörü tarafından yazılmış Bill Joy içinde 1976 erken sürümüne BSD Unix dağılımı .
Mevcut Unix sistemlerinin çoğunda , genellikle orijinal vi yazılımının bir klonu olarak otomatik olarak bulunur .
Adı vi mümkün olan en kısa (yani açık) kısaltması gelen görsel komut metin editörü ve ex bu komut geçer, çünkü eski düzenleyici gelen hat ile hat moduna için tam ekran modunda : bu nedenle ilk olarak sadece görsel bir arayüz (bölgesindeki İngilizce, Görsel Arayüz editör ex) (kendisi çevrimiçi editör bir uzantısı ed ). ex her zaman vi'de : tuşuna basılarak kullanılabilir : komut modunda. Pratikte, vi veya ex çağrılırken , tek bir program başlatılır: davranışına çağrıldığı ada göre karar verilir.
Kurulum dosyasının hem baş harflerine hem de adına karşılık gelen vi adı, genellikle tam teşekküllü bir harf yerine İngilizce iki harf, yani "vi-aille" , [vi: aɪ] söylenerek telaffuz edilir. kelime [vi] . Bu ismin Roma rakamı VI (altı) ile benzerliği tesadüftür.
vi bir modal düzenleyicidir, yani düğmelerin ve tuşların anlamı, hangi modda olduğuna bağlı olarak değişir.
Ekleme modunda , yazılan metin belgeye eklenir. Ekleme modundan Esc tuşuna basmak, tuşların imleç hareketlerine veya düzenleme işlevlerine karşılık geldiği komut moduna geçer . Örneğin, j imleci bir satır aşağı hareket ettirir, x imlecin altındaki karakteri siler ("imlecin altındaki" konum, imlecin karakterler arasına, alt çizgi karakterinin üstüne veya dikdörtgenin altına yerleştirilmesi durumunda imlecin sağını belirleyebilir. terminalin imleci nasıl temsil ettiğine bağlı olarak blok).
Komut modunda yazılan tuşlar metne eklenmez, bu da vi'ye yeni başlayan kullanıcılar için yaygın bir kafa karışıklığı nedenidir.
Komut modunda , Alt veya Ctrl tuşlarını basılı tutmak zorunda kalmadan tek tuş vuruşlarıyla birçok işlem seri olarak gerçekleştirilebilir . Daha ayrıntılı işlemler, daha birincil işlemlerden oluşur. Örneğin, d3w (üç kelime siler d için silme ve w için kelime ,) c2fa değişiklikleri ( değişiklik ) metni (bulana kadar bulmak ) ikinci ( 2 ) bir . Deneyimli işçiler, o da izin verir, çok verimli çalışması için izin verir kullanıcının her zaman ellerini klavyede tutması.
Vi'nin ilk sürümleri, hangi modda olduklarına dair hiçbir gösterge vermedi. Düzenleyicinin komut modunda olduğundan emin olmak için kullanıcıların otomatik olarak Esc tuşunu yazması yaygındı (zaten bu moddaysa vi bip sesi çıkarır). Vi'nin daha modern versiyonları, modu bir durum çubuğunda veya grafik olarak gösterir (örneğin imlecin şekli veya rengi). Vi'nin grafiksel uygulamaları (örn. GVim ), düzenleme işlevlerine erişmek için fare ve menülerin kullanımını da destekler.
vi oldu fiilen standart editör unix ve birçok favori editörü oldu hacker gelinceye kadar Emacs içinde 1984 . Emacs'ın bir metin düzenleyiciden daha fazlası olduğunu ve yine de genellikle vi ile rekabet ettiğini unutmayın. Bugüne kadar (2011), vi veya klonlarından biri neredeyse tüm Unix kurulumlarında bulunabilir. Tek UNIX Şartnamesi (daha spesifik olarak “IEEE Standart 1003.2, Bölüm 2: Kabuk ve yardımcı” vi) içerir. Bu nedenle, bu spesifikasyona uyan herhangi bir sistem vi'yi içerir.
vi, çeşitli Unix değişkenlerinin kullanıcıları tarafından hala yaygın olarak kullanılmaktadır. Emacs "düzenleyicisinin" ağır sürümlerinden daha hızlı başlar ve daha az bellek kullanır. Sonuç olarak, Emacs hayranları bile bunu e-posta veya küçük düzenlemeler için bir düzenleyici olarak kullanıyor .
Bir kurtarma disketini oluştururken ( sabit diski artık düzgün çalışmayan sistemler için kurtarma diski ), vi genellikle düzenleyici olarak seçilir, çünkü kompaktlığı (disketlerde alan çok sınırlıdır) ve insanların çoğunun kurtarma işlemlerini gerçekleştirerek onu kullanabilirler.
vi ve Emacs, editörün savaşında sürekli savaşan taraflardır .
Birçok vi tabanlı metin editörü mevcuttur. Klonlar vi'nin özgür veya özgür olmayan uygulamalarıdır , yani teorik olarak standart POSIX vi komut setini izlerler. Bununla birlikte, bu klonların çoğu ek özellikleri de destekler. Türevler, vi'nin çalışma prensibini (kısmen veya tamamen) kendi operasyonları için koruyan programlar, metin düzenleyiciler veya değillerdir.
Aşağıdaki harici bağlantılarda daha eksiksiz bir liste bulunabilir .
Vi'de yeni olan kullanıcılar, ilk olarak komutların her biri için kullanılan kısayollar nedeniyle ve ikinci olarak bu kısayolların etkisi vi'nin hangi modda olduğuna bağlı olarak değiştiği için zorluklarla karşılaşırlar.
Vi ile başlamanın etkili bir yolu, daha basit komutları açıklayan bir öğreticiyi baştan sona takip etmektir. Vi'nin bir uygulamasını sağlayan çoğu sistem ayrıca vi için bir öğretici içerir.
Birkaç açıklama ve basit örneklerle çalışma prensibini anlayarak, kullanıcıların çoğunluğu vi ile hedeflerine ulaşabilir. Bununla birlikte, vi ile akıcılığın, genellikle karşılaştırıldığı diğer editörlere göre daha uzun sürdüğü kabul edilir. Vi savunucuları, bu ilk zorluğun, kendinizi rahat hissettiğinizde editörün etkinliğiyle telafi edilmekten daha fazlası olduğunu iddia ediyorlar.
Yeni başlayanlar genellikle vi'deki komutlarla karıştırılır. Bunlar genellikle tek bir harfe indirgenir ve özellikle editör açıkça ayırt edilemeyen farklı bakış açıları (okuma, ekleme, açık mod vb.) Sunduğundan ve bu modlar arasındaki geçiş genellikle fark edilmediğinden ilk bakışta ezberlemek çok zordur. .
Vi'deki komutların çoğu şu şekilde seçilir:
Vi ile başlarken, vi'nin birkaç işlem moduna sahip olduğunu anlamak önemlidir. İki ana mod, komut modu (vi'nin başladığı) ve ekleme modudur . Siparişleri i ( i nsertion) ya da sahiptir ( bir dding) kontrol modu anahtarı ise, ekleme moduna geçmek için izin Esc uç modu ve komut moduna dönüş çıkmak için.
vi ayrıca, metin düzenleme görevlerini otomatikleştirmek için gerçek bir programlama dilini entegre ederek makro komutları tanımlama olanağı sunan başka bir işletim moduna sahiptir .
Bir dosyayı açarken komutları otomatik olarak yürütmesi için vi'yi argümanlarla çağırmak da mümkündür. Örneğin, komut satırı:
vi -c "1,%s/Deux/Trois/g|:wq" FICHIERvi'yi çalıştırır, bu dosya "FILE" dosyasını açar, ardından dosyadaki tüm "İkili" leri "Üçler" ile değiştirir ve son olarak dosyayı kaydeder ve çıkar.
vi, makro komutlarını ve kısaltmaları tanımlamanıza izin verir.
Makrolar, bir tuş vuruşunu diğeriyle değiştirmenize izin verir, bu da yeni komutlar tanımlamanıza olanak tanır. Örneğin,
:map v 10dd10 satırlık blokları kaldıran komut kipi v komutu oluşturur .
Kısaltmalar, oldukça uzun bir harf dizisi yazmaktan kaçınır. Örneğin :
:ab GNU gnu is not unixHerhangi bir belirsizliği gidermek için yeterli sayıda karakter yazılır yazılmaz , ekleme modunda gnu ile değiştirilen GNU kısaltmasını oluşturur (kısaltmalar genellikle sözcüğün sonunu belirtmek için bir boşluk eklendiğinde uzatılır).
Vi ve komutlarının davranışı, vi'nin "seçenekler" olarak adlandırdığı şeyle ayarlanabilir. : Set komutu, onları görüntülemek ve değiştirmek için kullanılır. Bazı seçenekler Boole'dir, yani yalnızca iki değer alabilirler: doğru veya yanlış veya daha tam olarak etkinleştirildi ve devre dışı bırakıldı . Örneğin :
:set numberkısaltılabilen
:set nuveya
:se nuher satırın numarasını görüntüler.
:set nonumber :set nonueşdeğerdir ve bu seçeneğin devre dışı bırakılmasına izin verir.
Boolean seçenekleri arasında şunları bulabiliriz (kapsamlı olmayan liste):
Sipariş verildi | Etki |
---|---|
: ignorecase ayarla | dizeleri ararken büyük / küçük harf kullanımını göz ardı et |
: salt okunur olarak ayarla | açık dosyanın değiştirilmesini yasaklar |
: otomatik girintiyi ayarla | Düzenlerken kodu otomatik olarak girintiler |
: cetveli ayarla | imlecin bulunduğu satır ve sütun numarasını gösterir |
: gösteri modunu ayarla | vi'nin içinde olduğu modu göster |
Diğer seçenekler bir değer alır. Örneğin :
:set tags=./tagsvi, dosya işaretçilerinin nerede bulunacağını söyler .
Mevcut tüm seçenekler kümesi ile görüntülenebilir
:set allVi seçenekleri seti (makrolar ve kısaltmaların yanı sıra) ~ / .exrc dosyasına eklenerek her düzenleme oturumu için ayarlanabilir . Bu dosya vi başladığında otomatik olarak okunur ve içerdiği komutlar kullanıcı tarafından yazılmış gibi yürütülür ( : ilk gerekli değildir). Misal:
set nu map @ dd ab sig Mr. Robert Le NomBienLongAşağıdaki tablo, en basit düzenleme görevleri için gerekli olan vi editörünün bazı temel komutlarını vermektedir. Komut girmek için, önce Esc tuşuna basarak düzenleyici modundan çıkmalısınız .
Sipariş verildi | Etki |
---|---|
# komut | komutu # kez çalıştır (örneğin 5dd 5 satırı siler) |
! sipariş | bir kabuk komutu çalıştırın (örneğin :! gcc -o hello hello.c ) |
>> ve << | sırayla satırın başına bir sekme ekleyin ve kaldırın |
/ toto ve ? toto | sırasıyla imleçten sonra ve imleçten önce foo karakter dizisinin oluşumlarını arar ( n bir sonraki oluşuma gider ve N bir önceki oluşuma gider) |
: # | imleci satır # üzerine yerleştir |
: $ | imleci son satıra yerleştir |
:. = | mevcut satırın numarasını döndürür |
0 | imleci satırın başına taşı |
$ | imleci satırın sonuna taşı |
h ve l | imleci sırasıyla bir karakter sola ve sağa hareket ettirin |
j ve k | imleci sırasıyla bir sonraki ve bir önceki satıra taşı |
İyi oyun | imleci dosyanın başlangıcına taşı |
G | imleci dosyanın sonuna taşı |
H ve L | imleci ekranda sırasıyla yukarı ve aşağı hareket ettirin |
-de | imleci bir karakter sağa hareket ettirin ve ekleme moduna girin |
AT | imleci mevcut satırın sonuna taşır ve ekleme moduna geçer |
vs | alt komuta bağlı olarak belirli sayıda karakteri siler ve ekleme moduna geçer (örneğin, cl mevcut karakteri değiştirmenize izin verir, cw mevcut kelimenin sonunu) |
VS | imleç konumundan satır sonuna kadar karakterleri siler ve ekleme moduna geçer |
gg | mevcut satırı sil ve arabelleğe kopyala |
dw | imleçten sonraki kelimeyi kaldır ve tampona kopyala |
dW | imleçten sonraki karakter dizisini bir sonraki boş karaktere kadar kaldırın |
: e | ardından bir dosya adı, düzenlemek için bu dosyayı açın |
D | satırın sonunu imleçten kaldır |
ben | imleç konumunda ekleme moduna geçer |
ben | imleci satırın başına götürür ve ekleme moduna geçer |
Ö | mevcut satırın altında yeni bir satır aç |
Ö | mevcut satırın üzerinde yeni bir satır aç |
p | arabelleğin içeriğini imleçten sonra (veya arabellekte satırlar içeriyorsa geçerli satırdan sonra) ekle |
P | arabelleğin içeriğini imleçten önce (veya arabellekte satırlar içeriyorsa geçerli satırın önüne) ekle |
: q | vi'den çık |
: q! | değişiklikler kaydedilmemiş olsa bile vi'den çık |
r | imlecin altındaki karakteri değiştirin |
sen | önceki komutun etkilerini iptal eder |
w | imleci sonraki kelimenin ilk karakterine yerleştirir |
: w | mevcut dosyayı kaydet |
: wq veya : x veya ZZ | mevcut dosyayı kaydet ve çık |
x | imlecin altındaki karakteri sil |
X | imlecin solundaki karakteri siler |
yy | geçerli satırı arabelleğe kopyala ( p kopyalanan satırı geçerli satırdan sonra ekler) |
yw | kelimeyi arabellekte imleçten sonraki kelimeyi kopyala ( p , kopyalanan kelimeyi imleçten sonra ekler) |
Aşağıdaki komutlar, bir kullanıcı daha karmaşık düzenleme komutları ararken vi'nin ne yaptığını gösterir.
Sipariş verildi | Etki |
---|---|
"ryy | "r" kayıt defterindeki geçerli satırı ezberle |
"rp | "r yazmacının içeriğini mevcut satırdan sonra veya imleçten sonra ekle |
: # 1, # 2t # 3 | 3. satırdan sonra 1. - 2. satırları kopyala |
: # 1, # 2a # 3 | 3. satırdan sonra 1. satırları 2. satıra taşı |
: # 1, # 2s / toto / tutu / g | hatlarına # 1 # 2 karakter dizesi tüm oluşumları üzerinde değiştirme toto tarafından tutu |
:% s / toto / tutu / g | her satırda değiştirir karakter dizesi tüm tekrarları toto tarafından tutu |
:% s% / to% tu / tu% g | her satırda değiştirin karakter dizesinin tüm oluşumları için / 'e göre tu / tu (biz başka ayırıcı karakteri kullanabileceği bu gösterileri daha / - burada % ) |
: s /.*/ \ U & / | mevcut satırı büyük harfe çevir |
:% s / ^ foo // | Her satırda karakter dizesi ilk geçtiği siler foo o satırın başında ise |
: # 1, # 2 g / to / g | 1. ve 2. satırlar arasındaki foo karakter dizesini içeren satırları siler |
: g! / toto / g | foo karakter dizesini içermeyen satırları sil |
: g / ^ ^ ^ ^ ^ ^ ^ ^ d | boş satırları kaldır |
: # 1, # 2g / toto / s / tutu / titi / gc | karakter dizesi içeren 2. satır # 1 teyitleri sonra yerine toto karakter dizesi geçtiği tüm tutu tarafından titi |
: r toto.txt | toto.txt dosyasının içeriğini ekle |
: r! ls -l | ls -l komutunun sonucunu mevcut dosyaya ekle |
: # 1, # 2w toto.txt | toto.txt dosyasındaki 1 - 2 numaralı satırları kaydedin |
: e! | mevcut dosyayı yeniden açın (örneğin, dosya bu arada değiştirildiyse kullanılır) |