Uçbirim Yeteneklerinin Tanımları
Karakter eklemek, bir satırın ortasında satırın kalanını sağa iterek boş bir alan oluşturmaktır. Bu işlem sırasında en sağ sütundaki karakter kaybedilir.
Karakter silmek, bir satırın ortasında satırın kalanını sola çekmek suretiyle bir karakterin örtülmesini sağlamaktır. Bu işlem sırasında en sağdaki sütunda bir boş alan ortaya çıkar.
Karakterlerin eklenmesi ve silinmesi görüntünün uzatma veya kısaltma anlamında güncellenmesini sağlayan uygulamalar için yararlıdır. Ayrıca metin düzenleyicilerde düzenlenen bir satırda sonuçların yeniden görüntülenmesi için de yararlıdır.
Birçok uçbirimde imlecin olduğu konumda tek bir karakterin eklenmesi ya da silinmesine yarayan komutlar varken bazıları silinecek ya da eklenecek karakter sayısını parametre olarak alan tek bir komutla çok sayıda karakterin silinmesini ya da eklenmesini sağlayabilir.
Çoğu uçbirim bir karakterin belli bir konumda çıktılanması işleminin normalde araya ekleme şeklinde olmasını sağlar. Araya ekleme kipine giriş ve çıkış için özel bir komut dizgesi kullanılır. Bir uçbirimin bir ekleme komutu yerine bir ekleme kipi ile tasarlanma sebebi, karakterlerin eklenmesi işleminin genellikle karakterlerin yazılması sırasında olagelmesidir. Ekleme kipinde bu işlem, kipe giriş ve çıkış için harcanan sabit zaman haricinde karakterlerin normalde yazımı kadar hızlıdır. Hatta, hat hızı yeterinden yüksekse ekleme kipinde karakterlerin çıktılanması için geciktirme bile gerekebilir.
Ekleme kipine girmenizi gerektiren bazı uçbirimler ekleme yapılan her konum için özel bir komut kullanmanızı gerektirebildikleri gibi bazıları da eklenen her karakterden önce ve sonra özel birer komut kullanmanızı da gerektirebilirler.
Karakterlerin silinmesi genellikle bir ya da daha fazla konum için bir komutun doğrudan kullanılması ile gerçekleşir; ancak bazı uçbirimlerde silme komutunu kullanabilmek için özel bir silme kipine girmeyi ve sonrasında da çıkmayı gerektirebilir. Bazan ekleme kipi ile silme kipi aynı kip olur.
Bazı uçbirimler çıktılanmış bir boşluk karakterinin konumu ile karakter içermeyen bir konumu farklı değerlendirir. Böyle uçbirimlerde, karakter ekleme veya silme işlemi etkisini satırın son sütunundaki karakterde değil imleç konumundaki karakterden itibaren gösterir. Hatta ilk satırda kaymayı durduracak bir konum olmadıkça etki birden fazla satırı da kapsayabilir. Bu tür uçbirimler seçimlik in yeteneğinin varlığı ile tanınırlar.
in yetenekli uçbirimlerde, karakterlerin silinip ardından tekrar yazılması olarak bildiğiniz karakter atlama tekniği daha sonraki karakter silme ve ekleme işlemlerinin bu satır üzerinde standartdışı şeyler yapmalarına sebep olur. Bunun olma ihtimali olan bir programda in yeteneğinin varlığına bakmalı ve in yeteneğinin varlığı durumunda, boşluk olarak görünecek sütunlara boşluk karakteri yazmaya dikkat etmelisiniz.
Uçbirim yeteneklerinin bolluğu tüm bu karmaşıklığın açıklanmasını gerektirir. Burada hepsini listeledik. Aşağıdaki listeyi yazılımcının bu yetenekleri bir algoritmada hesaba katacağı sıraya göre hazırladık.
Ekleme kipine girilmesini sağlayan dizge değerli yetenek.
vi metin düzenleyicisi bir karakterin eklenmesinin sadece im yeteneğinin varlığı halinde mümkün olacağını varsaydığından eğer uçbirimin özel bir ekleme kipi yoksa ama karakter eklemek için özel bir komutu varsa uçbirim tanımında im yeteneği boş değerle belirtilmiş olmalıdır.
Yeni uygulamalar vi gibi davranmamalıdır. im'e sadece tanımlanmış olduğu kadar değer biçmeliler.
Ekleme kipini bırakmayı sağlayan dizge değerli yetenek. im varsa bu yetenek de olmalıdır.
Ekleme kipine giriş ve çıkış için aynı komutu kullanan sadece bir kaç eski uçbirim kalmıştır ve bu dizge bu uçbirimlerde ekleme kipi etkinse etkisiz, etkisizse etkin yapar. Bu uçbirimler için bundan dolayı ei yeteneğinin im yeteneğine eşdeğer olduğundan bahsedilebilir. Bu tür uçbirimleri destekleyecekseniz, programınız ekleme kipinde olup olmadığını daima hatırlamak zorunda kalacaktır. Bununla birlikte, bu uçbirimlerin artık kullanılmadığını gözönünde tutarak onları desteklemeyi reddedebilirsiniz. Günümüz uçbirimlerinin hepsinde ekleme kipinden her çıkmak isteyişinizde ei komutunu rahatça kullanabilirsiniz.
İmleç konumuna bir karakter ekleyen dizge değerli yetenek. İşlem imleci hareket ettirmez.
Bir karakterin ekleme kipinde çıktılanması için karakteri eklemek yeterliyse, ic yeteneği boş değerle tanımlanmalıdır.
Eğer uçbiriminiz ekleme için bir seçim yolu (ekleme kipi ya da özel bir komut olarak) tanımlıyorsa ve im tanımlıyken ic'nin tanımsız olması çok sayıda karakter eklendiğinde en verimli işlemi belirttiğinden ic olmaksızın im'i tanımlamayın. Her ekleme yapılışında her ikisini de kullanmak gerekir anlamında her iki dizgeyi de tanımlamayın.
Ekleme kipinde eklenen karakterden sonrasını çıktılayan dizge değerli yetenek. Çoğunlukla bir karakter eklenmesinden sonra gecikme gerekliyse geciktirme uygulamak için kullanılır (bkz. Geciktirme).
İmleç konumundan itibaren n karakter ekleyen dizge değerli yetenek. ic dizgesinin bir boşlukla n kere yinelenmesine eşdeğerdir.
IC yeteneği varsa uygulamalar ekleme kipine girmeksizin bu yeteneği kullanabilirler.
Varlığının, ekleme kipindeyken imleç taşımanın ve uçbirimin ekleme kipinde kalacağının varsayılmasının güvenli olduğu anlamına gelen seçimlik yetenek.
Varlığı halinde, uçbirimin çıktılanmış bir boşluk karakterinin konumu ile karakter içermeyen bir konumu farklı değerlendireceğini belirten seçimlik yetenek.
Bir uygulama yazılımında uçbirimin karakter eklemesi yapabileceğini varsaymak için IC, im, ic veya ip yeteneklerinden birinin tanımlanmış olması yeterlidir.
n boşluk karakteri ekleyip imleci konumlamak için aşağıdaki algoritmayı izleyin:
IC yeteneği sağlanmışsa dizgeyi n parametreli çıktılamak yeterlidir. Aksi takdirde (veya IC dizgesine bakmak istemiyorsanız) aşağıdaki adımları uygulayın.
Uçbirim zaten ekleme kipinde değilse ve varsa im dizgesini çıktılayın.
4'den 6'ya kadar ki adımları n kere yineleyin.
Varsa ic dizgesini çıktılayın.
Bir boşluk çıktılayın.
Varsa ip dizgesini çıktılayın.
ei çıktılayarak ekleme kipinden çıkın. Bunu hemen yapmanıza gerek yoktur. Seçimlik mi yeteneği varsa imleci taşıyabilirsiniz ve imleç ekleme kipinde kalır; böylece yeniden ekleme kipine girmeksizin başka ekleme işlemleri de yapabilirsiniz.
Boşluk olmayan n karakter ekleyip imleci konumlamak için aşağıdaki algoritmayı izleyin:
Karakterleri çıktılamak için IC yeteneği sağlanmışsa dizgeyi n parametreli çıktılamak yeterlidir. Aksi takdirde (veya IC dizgesine bakmak istemiyorsanız) aşağıdaki adımları uygulayın.
4'den 6'ya kadar ki adımları çıktılanacak her karakter için tekrarlayın
Sonraki karakteri çıktılayın.
Bir husus dışında bu, özgün Unix termcap belirtimi ile aynı değildir: belirtim IC dizgesinin ekleme kipine girmeksizin kullanılabileceğini varsayar. Bildiğim kadarıyla bu böyledir, ekleme kipine girmek ve çıkmaktan kaçınmak mümkündür ve ayrıca karakterler eklendikleri konumlara gittikten sonra karakter ekleme geciktirmesinden de kaçınılabilir.
Karakterlerin silinmesi bu kadar karmaşık değildir; bir sütunun silinmesi dc dizgesi çıktılanarak yapılır. Yine de, dc'nin işini yapabilmesi için dm ile girilmesi gereken bir silme kipi olabilir.
İmleç konumundaki karakteri silen dizge değerli yetenek. Bu yeteneği olmayan bir uçbirim karakterleri silemez.
İmleç konumundan itibaren n karakteri silen dizge değerli yetenek. dc dizgesinin n kere yinelenmesi ile aynı etkiye sahiptir. DC yeteneği olan her uçbirim dc yeteneğine de sahiptir.
Silme kipine girmeyi sağlayan dizge değerli yetenek. Olmayışı silme kipinin olmadığı ve herhangi bir anda dc yeteneğinin kullanılabileceği (dc yeteneğinin olduğu varsayımıyla) anlamına gelir.
Silme kipinden çıkmayı sağlayan dizge değerli yetenek. dm mevcutsa bu yetenek de olmalıdır.
n karakteri silmek ve imleci konumlamak için bu adımları uygulayın:
DC yeteneği varsa, parametre n ile kullanmak yeterlidir. Aksi takdirde aşağıdaki adımları uygulamak gerekir.
Uçbirim zaten silme kipinde değilse ve varsa dm dizgesini çıktılayın.
dc dizgesini n kere çıktılayın.
Sonunda ed dizgesini çıktılayın. Eğer seçimlik mi yeteneği mevcutsa silme kipine yeniden girmek ve çıkmak gerekmeksizin imleci taşıyabilir ve başka silme işlemleri de yapabilirsiniz.
IC yeteneğinde olduğu gibi DC yeteneğinin de silme kipine girmeksizin çalışacağı (dc çalışmasa bile) varsayımıyla özgün termcap belirtiminden ayrılırız.
dm ve im yeteneklerinin her ikisi de mevcutsa ve aynı değere sahiplerse bu, uçbirimin hem silme hem de ekleme kipi olarak tek bir kipe sahip olduğu anlamına gelir. Bunun bilinmesi bir program için yararlıdır, çünkü bu durumda silme/ekleme kipini bırakmaksızın ve yeniden girmeksizin silme ve ekleme işlemleri yapabilir.
Satır Ekleme/Silme Başlangıç Çarpıcı ve Sıradan Görünüm Kipleri