Vi Kipi
Giriş
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.
“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:
- Kate Metin Düzenleyicisi
- K Yaz — KDE’nin yalın metin düzenleyicisi
- K Geliştir — Birçok programlama dili için gelişmiş bir tümleşik geliştirme ortamı
- 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.
- Kate:
U
veKontrol+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 kipindeU
’nun yineleme görevi görmesinin nedeni, öntanımlı olarakKontrol+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’dekiU
komutunun davranışı Kate’in içsel geri alma sistemiyle pek iyi eşleşmiyor, bu nedenle halihazırda desteklenmesi zor olacaktır. - 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. - Kate:
Y
satırın sonuna kadar kopyalar.
Vim:Y
, tıpkıyy
gibi tüm satırı kopyalar. Vi’ninY
komutuna yönelik davranışı pratikte bir hatadır; Hem değiştirme hem de silme komutları içincc
/dd
işlemi geçerli satırda yapacak veC
/D
imleç sütunundan satırın sonuna kadar çalışacaktır. Ancak hemyy
hem deY
geçerli satırı kopyalar. Kate’in Vi kipindeY
satırın sonuna kadar kopyalar. Bu, Vim belgelerinde “daha mantıklı” olarak açıklanır. - 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üğme | Açıklama |
---|---|
a | Ekle kipine gir ve iliştir |
A | Ekle kipine gir ve satırın sonuna iliştir |
i | Ekle kipine gir |
I | Satırdaki ilk boş olmayan karakterden önce ekle |
v | Görsel kipe gir |
V | Görsel Satır kipine gir |
<c-v> | Görsel Blok kipine gir |
gv | Görsel’i yeniden seç |
o | Altına yeni satır aç |
O | Üstüne yeni satır aç |
J | Satırları birbirine kat |
c | Değiştir |
C | Satırın sonuna kadar değiştir |
cc | Satırı değiştir |
s | Karakteri değiştir |
S | Satırı değiştir |
dd | Satırı sil |
d | Sil |
D | Satırın sonuna kadar sil |
x | Karakteri sil |
X | Karakteri geriye doğru sil |
gu | küçük harf yap |
guu | küçük harfli satır yap |
gU | BÜYÜK harf yap |
gUU | BÜYÜK harfli satır yap |
y | Kopyala |
yy | Satırı kopyala |
Y | Satırın sonuna kadar kopyala |
p | Yapıştır |
P | Öncesine yapıştır |
r. | Karakteri değiştir |
R | Değiştir kipine gir |
: | Komut satırına geç |
/ | Ara |
u | Geri al |
<c-r> | Yinele |
U | Yinele |
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 |
ga | Karakter 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>h | Sol 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>j | Alt 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>l | Sağ 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>w | Sonraki görünüme geç |
<c-w><c-w> | Sonraki görünüme geç |
<c-w>s | Yatay olarak böl |
<c-w>S | Yatay olarak böl |
<c-w><c-s> | Yatay olarak böl |
<c-w>v | Dikey olarak böl |
<c-w><c-v> | Dikey olarak böl |
gt | Sonraki sekmeye geç |
gT | Önceki sekmeye geç |
gqq | Satırı biçimlendir |
gq | Satırları biçimlendir |
q. / q | Adlı makro yazmacını kullanarak makro kaydını başlat/bitir |
Desteklenen hareketler
Düğme | Açıklama |
---|---|
h | Sol |
<sol> | Sol |
<geri sil> | Sol |
j | Aşağı |
<aşağı> | Aşağı |
<giriş> | İlk boş olmayana in |
k | Yukarı |
<yukarı> | Yukarı |
– | İlk boş olmayana çık |
l | Sağ |
<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 |
n | Sonrakini bul |
N | Öncekini bul |
gg | İlk satıra git |
G | Son satıra git |
w | İleri doğru sözcük atla |
W | SÖZCÜK ileri |
b | Geriye doğru sözcük atla |
B | SÖZCÜK geri |
e | Sözcüğün sonuna git |
E | SÖ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 |
H | Pencerenin ilk satırına git |
M | Pencerenin orta satırına git |
L | Pencerenin son satırına git |
gj | Sonraki görsel satıra git |
gk | Önceki görsel satıra git |
Desteklenen metin nesneleri
Düğme | Açıklama |
---|---|
iw | Sözcük içi |
aw | Bir sözcük |
iW | İç SÖZCÜK |
aW | Bir 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 |
ab | Bir parantez |
a) | Bir parantez |
a( | Bir parantez |
iB | İç süslü ayraç |
o} | İç süslü ayraç |
i{ | İç süslü ayraç |
aB | Bir 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üğme | Açı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 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üğme | Açı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
veKontrol+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ü.