İçeriğe atla

Vi Kipi

Giriş

Vim Logosu

Kate’in Vi kipi, Vim benzeri kipsel düzenlemeyi Kate metin düzenleyicisine ve uzantı olarak aynı düzenleyici bileşenini paylaşan diğer KDE programlarına getiren bir projedir. Proje, 2008 yılında tüm temel işlevlerin yazıldığı bir Google Summer of Code projesi olarak başladı. Bu kodu korumaya ve geliştirmeyi sürdürdüm ve Vim’deki henüz eklenmeyen özelliklerin sayısı yavaş yavaş azalıyor. Çoğu Vim kullanıcısı Kate’in Vi kipinde üretken olacaktır. Eksik olanların listesi sayfanın alt kısmında bulunur.

Bu sayfa, bu çalışmaya güncellenmiş bir genel bakış niteliğindedir.

Vi giriş kipini etkinleştirmek için
Ayarlar → Kate Uygulamasını Yapılandır… → Düzenleme → Vi Giriş Kipi” sayfasına gidin.
Ayrıca ‘Düzen’ menüsündeki ‘Vi Giriş Kipi’ menü ögesiyle de açılıp kapatılabilir (Öntanımlı kısayol düğmeleri Meta+Kontrol+V’dir; Meta genellikle Windows düğmesine karşılık gelir).

Hedefler

Vi kipinin amacı, Vim’in tam yerini almak ve Vim’in tüm özelliklerini desteklemek değildir. Amacı, metin düzenlemenin “Vim yolunu” ve öğrenilen Vim alışkanlıklarını, Kate metin düzenleyicisini içsel düzenleyici olarak kullanan programlar için kullanılabilir hale getirmektir. Bu programlar şunlardır:

  1. Kate Metin Düzenleyicisi
  2. K Yaz — KDE’nin yalın metin düzenleyicisi
  3. K Geliştir — Birçok programlama dili için gelişmiş bir tümleşik geliştirme ortamı
  4. Kile — Bir LaTeX düzenleyicisi

Vi kipi, programlarla güzel bir şekilde tümleşmeyi ve Vim’in davranışından anlamlı olduğu yerde sapmayı amaçlamaktadır. Örneğin :w Kate’in Vi kipinde bir kaydetme iletişim kutusu açacaktır.

Vim ile Olan Uyumsuzluklar

Kate’in Vi kipinin Vim ile uyumsuz olan yalnızca birkaç özelliği vardır (eksik şeyleri saymazsak). Aşağıda nedenleri ile birlikte sıralanmıştır.

  1. Kate: U ve Kontrol+r yinelemedir
    Vim: Kontrol+r normal yinelemedir, U tek satırdaki tüm son değişiklikleri geri almak için kullanılır
    Kate’in Vi kipinde U’nun yineleme görevi görmesinin nedeni, öntanımlı olarak Kontrol+r kısayolunun Kate’in değiştirme işlevi (arama ve değiştirme) tarafından alınmasıdır. Öntanımlı olarak Vi kipi, Kate’in kısayollarını geçersiz kılmaz (bu, Ayarlar → Kate Uygulamasını Yapılandır… → Düzenleme → Vi Giriş Kipi bölümünde yapılandırılabilir), bu nedenle bir yeniden yapma eyleminin de “normal” bir düğmeye basılması olarak var olması gerekir. Ayrıca, Vim’deki U komutunun davranışı Kate’in içsel geri alma sistemiyle pek iyi eşleşmiyor, bu nedenle halihazırda desteklenmesi zor olacaktır.
  2. Kate: :print, “yazdır” iletişim kutusunu gösterir
    Vim: :print verilen aralığın satırlarını büyükbabası gibi yazdırır. :print gibi komutlar yalnızca Vi kipinde; ancak “normal” Kate kullanan kullanıcılar için de geçerlidir — bu nedenle, Vim’in davranışını taklit etmek yerine en az sürpriz ilkesini izleyerek, yazdırma iletişim kutusunu :print komutunun açmasına izin vermeyi seçtik.
  3. Kate: Y satırın sonuna kadar kopyalar.
    Vim: Y, tıpkı yy gibi tüm satırı kopyalar. Vi’nin Y komutuna yönelik davranışı pratikte bir hatadır; Hem değiştirme hem de silme komutları için cc/dd işlemi geçerli satırda yapacak ve C/D imleç sütunundan satırın sonuna kadar çalışacaktır. Ancak hem yy hem de Y geçerli satırı kopyalar. Kate’in Vi kipinde Y satırın sonuna kadar kopyalar. Bu, Vim belgelerinde “daha mantıklı” olarak açıklanır.
  4. Kate: :map, sağlanan JavaScript ifadesini kullanarak belgenin seçili satırlarını değiştirir.
    Vim: :map, sağlanan eşlemeyi Normal ve Görsel kiplere ekler. map komutu halihazırda Kate tarafından 4.12 sürümünde rezerve edilmişti; bunu değiştirmek için :nmap ve :vmap kombinasyonunu kullanabilirsiniz.

Desteklenen Komutlar

Desteklenen normal/görsel kip komutları

DüğmeAçıklama
aEkle kipine gir ve iliştir
AEkle kipine gir ve satırın sonuna iliştir
iEkle kipine gir
ISatırdaki ilk boş olmayan karakterden önce ekle
vGörsel kipe gir
VGörsel Satır kipine gir
<c-v>Görsel Blok kipine gir
gvGörsel’i yeniden seç
oAltına yeni satır aç
OÜstüne yeni satır aç
JSatırları birbirine kat
cDeğiştir
CSatırın sonuna kadar değiştir
ccSatırı değiştir
sKarakteri değiştir
SSatırı değiştir
ddSatırı sil
dSil
DSatırın sonuna kadar sil
xKarakteri sil
XKarakteri geriye doğru sil
guküçük harf yap
guuküçük harfli satır yap
gUBÜYÜK harf yap
gUUBÜYÜK harfli satır yap
yKopyala
yySatırı kopyala
YSatırın sonuna kadar kopyala
pYapıştır
PÖncesine yapıştır
r.Karakteri değiştir
RDeğiştir kipine gir
:Komut satırına geç
/Ara
uGeri al
<c-r>Yinele
UYinele
m.İm ayarla
>>Satırı girintile
<<Satırı geriye al
>Satırları girintile
<Satırları geriye al
<c-f>Bir sayfa aşağı sar
<sayfa aşağı>Bir sayfa aşağı sar
<c-b>Bir sayfa yukarı sar
<sayfa yukarı>Bir sayfa yukarı sar
<c-u>Yarım sayfa yukarı sar
<c-d>Yarım sayfa aşağı sar
zzİmleci görünümün ortasına koy
gaKarakter kodunu yazdır
.Son değişikliği yinele
==Satırı hizala
=Satırları hizala
~Harf biçimini değiştir
<c-a>Sayıyı topla
<c-x>Sayıdan çıkar
<c-o>Önceki atlamaya git
<c-i>Sonraki atlamaya git
<c-w>hSol görünüme geç
<c-w><c-h>Sol görünüme geç
<c-w><sol>Sol görünüme geç
<c-w>jAlt görünüme geç
<c-w><c-j>Alt görünüme geç
<c-w><aşağı>Alt görünüme geç
<c-w>kÜst görünüme geç
<c-w><c-k>Üst görünüme geç
<c-w><yukarı>Üst görünüme geç
<c-w>lSağ görünüme geç
<c-w><c-l>Sağ görünüme geç
<c-w><sağ>Sağ görünüme geç
<c-w>wSonraki görünüme geç
<c-w><c-w>Sonraki görünüme geç
<c-w>sYatay olarak böl
<c-w>SYatay olarak böl
<c-w><c-s>Yatay olarak böl
<c-w>vDikey olarak böl
<c-w><c-v>Dikey olarak böl
gtSonraki sekmeye geç
gTÖnceki sekmeye geç
gqqSatırı biçimlendir
gqSatırları biçimlendir
q. / qAdlı makro yazmacını kullanarak makro kaydını başlat/bitir

Desteklenen hareketler

DüğmeAçıklama
hSol
<sol>Sol
<geri sil>Sol
jAşağı
<aşağı>Aşağı
<giriş>İlk boş olmayana in
kYukarı
<yukarı>Yukarı
İlk boş olmayana çık
lSağ
<sağ>Sağ
<boşluk>Sağ
$Satırın sonuna git
<son>Satırın sonuna git
0. sütuna git
<baş>0. sütuna git
^Satırın ilk karakterine git
f.Karakter bul
F.Karakteri geriye doğru bul
t.Karaktere git
T.Karaktere geriye doğru git
;Son t. veya f. komutunu yinele
,Son t. veya f. komutunu yinele
nSonrakini bul
NÖncekini bul
ggİlk satıra git
GSon satıra git
wİleri doğru sözcük atla
WSÖZCÜK ileri
bGeriye doğru sözcük atla
BSÖZCÜK geri
eSözcüğün sonuna git
ESÖZCÜK’ün sonuna git
geÖnceki sözcüğün sonuna git
gEÖnceki SÖZCÜK’ün sonuna git
%Eşleşen ögeye git
`[a-zA-Z><]İme git
'[a-zA-Z><]İm satırına git
[[Önceki ayraç bloku başlangıcına git
]]Sonraki ayraç bloku başlangıcına git
[]Önceki ayraç bloku sonuna git
][Sonraki ayraç bloku sonuna git
*İmleç altındaki sözcüğün sonraki oluşuna git
#İmleç altındaki sözcüğün önceki oluşuna git
HPencerenin ilk satırına git
MPencerenin orta satırına git
LPencerenin son satırına git
gjSonraki görsel satıra git
gkÖnceki görsel satıra git

Desteklenen metin nesneleri

DüğmeAçıklama
iwSözcük içi
awBir sözcük
iWİç SÖZCÜK
aWBir SÖZCÜK
i"İç çift tırnak
a"Bir çift tırnak
i’İç tek tırnak
a’Bir tek tırnak
i`İç geri tırnak
a`Bir geri tırnak
ibİç parantez
i)İç parantez
i(İç parantez
abBir parantez
a)Bir parantez
a(Bir parantez
iBİç süslü ayraç
o}İç süslü ayraç
i{İç süslü ayraç
aBBir süslü ayraç
a}Bir süslü ayraç
a{Bir süslü ayraç
i<İç eşit değildir işareti
i>İç eşit değildir işareti
a<Bir eşit değildir işareti
a>Bir eşit değildir işareti
i[İç ayraç
I]İç ayraç
a[Bir ayraç
a]Bir ayraç
i,İç virgül
a,Bir virgül

Desteklenen Ekle kipi komutları

DüğmeAçıklama
<c-d>Girintiyi geriye al
<c-t>Girintile
<c-e>Alttan ekle
<c-y>Üstten ekle
<c-w>Sözcüğü sil
<c-r>.Yazmaç içeriğini ekle
<c-o>Bir komut için Normal kipe geç
<c-a>İmleç altındaki sayıyı artır
<c-x>İmleç altındaki sayıyı azalt

Virgül Metin Nesnesi

Bu Vim’de eksikliğini çok hissettiğim bir şey. Virgül metin nesnesi, C benzeri dillerdeki ve diğer virgülle ayrılmış listelerdeki parametre listelerini değiştirmeyi kolaylaştırır. Temel olarak iki virgül veya virgül ile parantez arasındaki alandır. Sağdaki çizimde gösterilen satırda, bu metin nesnesinin yayılabileceği üç aralık kırmızı renkle vurgulanmıştır.

virgül

Virgül metni nesnesi erimleri. İmleç, örneğin “arg2” üzerindeyse c i , (“iç virgülü değiştir”) düğmelerine basıldığında “double arg2” silinir ve Ekle kipinde imleç iki virgülün arasına yerleştirilir. Bir işlevin parametrelerini değiştirmenin çok uygun bir yoludur.

Vim Komut Satırı Öykünmesi

Kate 4.11; /, ? ve : komutlarının normal Kate Bul / Değiştir /Komut satırı çubuğu yerine yeni bir arama/komut getirmesini sağlayan gizli bir yapılandırma seçeneği sundu. Çubuğun amacı, Vim’in komut çubuğunun birçok özelliğini kopyalamak ve ayrıca Kate Vim modunun Kate’in Bul/Değiştir çubuğuyla etkileşimiyle ilgili birçok sorunu düzeltmektir (etkileşimli değiştirmenin çalışmaması; artımlı arama imleci doğru şekilde konumlandırılmaması; eşlemelerde/makrolarda çalışmaması vb. gibi).

Aşağıdaki kısayollar öykünülen komut çubuğu tarafından sağlanır; Vim’de olduğu gibi bunlar cmap, cnoremap vb. ile yeniden eşlenebilir:

DüğmeAçıklama
<c-r>.Yazmacın içeriğini ekler.
<c-r><c-w>İmleç altındaki sözcüğü ekler.
<c-p>Bağlama özgü tamamlamayı çağırır (aşağıya bakın),
tamamlama listesinde geri/yukarı hareket edin.
<c-p>Tamamlanma listesinde ileri/aşağı hareket edin.
<c-boşluk>Kate Vim Uzantısı.
Belgedeki sözcüğü kendiliğinden tamamlar.
<c-d>Kate Vim Uzantısı.
Bir sed-replace ifadesinde (i.e. s/bul/değiştir/[g][c][i]),
“bul” ifadesini temizler ve imleci oraya koyar.
<c-f>Kate Vim Uzantısı.
Bir sed-replace ifadesinde (i.e. s/bul/değiştir/[g][c][i]),
“değiştir” ifadesini temizler ve imleci oraya koyar.
<c-g>.Kate Vim Uzantısı.
.’de olduğu gibi, adlandırılmış kaydın içeriğini ekler;
ancak bir aramayla kullanıldığında regex olarak yorumlanan kaydın içeriğini
değil, kaydın gerçek içeriğini arayacak
şekilde bundan kaçırır.

“Bağlama özel tamamlamaya” aşağıdaki biçimde karar verilir:

  • Bir arama çubuğunda (/ veya ?), arama geçmişinden kendiliğinden tamamlama (*; ve # aracılığıyla başlatılan aramaları; sed-replace ifadeleriyle yapılan aramaları vb. içerir)
  • Boş bir komut çubuğunda (:), komut geçmişinden kendiliğinden tamamlama (Not: Komut adlarının kendiliğinden tamamlanması, yazmaya başladığınızda kendiliğinden başlatılır).
  • Bir sed-replace ifadesi içeren bir komut çubuğunda (örn. :s/bul/değiştir/gc), imleç “bul”un üzerine getirilirse, “arama” geçmişinden kendiliğinden tamamlama; “değiştir” seçeneğinin üzerindeyse, “değiştir” terimlerinin geçmişinden kendiliğinden tamamlama.

Komut çubuğunda “c” bayrağıyla (örneğin s/find/replace/gc) bir sed-replace ifadesi çalıştırıldığında, Vim tarzı etkileşimli bir arama/değiştirme ifadesi başlatılacaktır.

Öykünülmüş komut çubuğunun GIF canlandırmalarıyla bazı örnek kullanımları bu gönderide verilmiştir. 4.11’de, öykünülmüş komut çubuğu, katerc/kwriterc/kdeveloprc’nizde gizli yapılandırma seçeneği “Vi Input Mode Emulate Command Bar”ın “true” olarak ayarlanmasıyla etkinleştirilebilir.

Eksik Özellikler

Daha önce de belirtildiği gibi, Kate’in Vi kipinin amacı Vim’in özelliklerinin %​100’ünü desteklemek değildir; ancak fena halde eksikliği hissedilen bazı özellikler vardır.

  • Görsel Blok kipi – özellikle görsel blok seçiminin başına/ekleme yeteneği.
  • Kate uygulaması dışındaki programlarda ex komutların bulunması.
  • Arama kodunun iyileştirilmesi gerekiyor ve * ve # komutları yalnızca normal aramalar olmalıdır.

Eksikliğini hissettiğiniz başka özellikler varsa veya yukarıda belirtilenler konusunda yardım etmek istiyorsanız benimle iletişime geçmekten veya yama göndermekten çekinmeyin! :-)

Değişiklik Günlüğü

  • 16.05.2010:
    İlk sürüm. Güncel bilgilerin tek kaynağını oluşturmak için blog girişlerinden ve README dosyalarından bilgi toplandı.
  • 17.05.2010:
    Kontrol+A ve Kontrol+X eklendi (imleç altındaki sayıyı artır/azalt).
  • 30.08.2010:
    Sayfa, kate-editor.org sayfasına taşındı.
  • 10.09.2010:
    Virgül metin nesnesindeki metin düzeltildi ve bazı biçimlendirme düzeltmeleri yapıldı.
  • 03.02.2021:
    Düğme bağıntısı tabloları Hugo için Markdown’a dönüştürüldü.