- Helix, modern özellikleri bir araya getiren terminal tabanlı bir modal metin editörü olan açık kaynaklı bir projedir
- Tree-sitter entegrasyonu sayesinde sözdizimi vurgulama, girinti hesaplama, kod gezinme gibi sözdizimi farkındalıklı düzenleme özellikleri sunar
- Language Server Protocol desteğiyle otomatik tamamlama, tanıma gitme, dokümantasyon görüntüleme, tanılama gibi IDE düzeyinde özellikler sağlar
- Rust ile yazılmıştır; Electron veya JavaScript olmadan çalışır ve SSH·tmux·terminal ortamlarında verimli şekilde kullanılabilir
- Eklenti sistemi ve GUI frontend gelecekte geliştirilecektir; hafif bir kod tabanı ve modern varsayılan ayarlar ile öne çıkar
Başlıca özellikler
- Helix, Kakoune'dan ilham alan çoklu seçim ve imleç sistemini temel düzenleme birimi olarak kullanır
- Komutlar birden çok seçim alanını aynı anda işleyerek paralel kod düzenleme olanağı sağlar
- Tree-sitter kullanarak hata toleranslı sözdizimi ağaçları oluşturur
- Bu sayede doğru sözdizimi vurgulama, otomatik girinti ve kod gezinme özelliklerini destekler
Kod işleme ve gezinme özellikleri
- Fonksiyon, sınıf, yorum gibi sözdizimi ağacı düğümü düzeyinde seçim ve gezinme özellikleri sunar
- Böylece yalnızca düz metin değil, sözdizimsel yapı tabanlı düzenleme mümkün olur
- Language Server Protocol (LSP) aracılığıyla dile özgü otomatik tamamlama, tanıma gitme, dokümantasyon görüntüleme, tanılama özellikleri sağlar
- Ek yapılandırma olmadan terminal ortamında IDE düzeyindeki yeteneklerden yararlanılabilir
Teknik temel
- Rust ile yazılmıştır; bu sayede kararlılık ve performans sunar
- Electron, VimScript veya JavaScript kullanmaz
- SSH, tmux, sıradan terminal ortamlarında çalışabilir
- Hafif yapısı sayesinde pil verimliliğini artırır
Yerleşik modern özellikler
- Fuzzy finder ile dosya ve sembol gezinmesi, proje genelinde arama desteği sunar
- Otomatik parantez kapatma, surround entegrasyonu, tema özelleştirme gibi çeşitli kullanım kolaylıkları yerleşik gelir
- Ayrı eklentiler olmadan da temel işlevlerin zengin biçimde entegre edildiği bir yapıya sahiptir
Sık sorulan sorular
- “Postmodern” ifadesi, Neovim 'modern Vim' ise Helix'in onun sonraki nesli olduğu yönünde şakacı bir anlam taşır
- GUI frontend, gelecekte WebGPU tabanlı bir prototip olarak geliştirilecektir
- Şu anda eklenti sistemi henüz uygulanmamıştır; gelecekte eklenmesi planlanmaktadır
- Kakoune ile farkı, Helix'in daha fazla özelliği yerleşik sunması ve Tree-sitter tabanlı kod analizi kullanmasıdır
- Vim'den farklı olarak Helix, en baştan yeniden tasarlanmıştır; kod tabanı küçüktür ve ayar dosyasıyla minimum uğraş gerektiren modern varsayılanlar sunar
Topluluk ve katılım
- GitHub üzerinden koda katkı yapılabilir
- Proje tartışmaları Matrix kanalında yürütülür
- Geliştirme desteği OpenCollective üzerinden sağlanabilir
1 yorum
Hacker News görüşleri
“Post-modern?!” şakasını görünce ilgimi çekti
Birçok mühendis ‘postmodern’i sadece modernin bir sonraki aşaması olarak anlıyor, ama bu sanat ve beşeri bilimlerdeki asıl anlamından farklı
Elbette bu kullanım büyük bir sorun değil, ama yine de gerçekten ‘postmodern’ bir yaratıcılık beklediğim için dikkatimi çekti
Ama ‘postmodernism’in aslında modernizme tepki olarak, ondan sonra ortaya çıkan bir kavram olduğu düşünülürse, bunu basitçe “modernden sonra” diye yorumlamak da tamamen yanlış sayılmaz bence
Yine de zamanla anlamı çok daha karmaşık hale geldi ve şimdi kulağa “dated af” gibi gelmesi de komik
“Helix, büyük anlatılara inanmayan ilk editör. Helix, görecelikçi editör. Helix, Foucault ve Derrida için en son güncellemelerle geliyor”
Birkaç yıldır Helix’i ana editörüm olarak kullanıyorum (Sublime → Atom → Vim → Helix)
LSP’lerin çoğu neredeyse hiç yapılandırma gerektirmeden çalışıyor, yapılandırma dosyaları da eski .vimrc’ye göre çok daha sade
Vim kas hafızasını değiştirmek sadece birkaç gün sürdü, ama hâlâ modal editörler hakkında karmaşık duygularım var
Kod katlama özelliğini ise hâlâ bekliyorum
Emacs’te multiple cursors ve tree-sitter tabanlı eklentilerle modal olmayan tarafta da güçlü düzenleme mümkün
Acaba benzer nedenlerle mi Helix’in modal yaklaşımı rahatsız ediyor?
Eski Unix klavyelerinde home row’a yakındı ama şimdi fazla uzakta
Eğitimlerin çoğunun alternatif tuşlardan bahsetmemesi yüzünden, kullanıcıların yarıdan fazlasının hâlâ Escape kullanmasını anlayamıyorum
Birkaç gün önce Helix’i tekrar denedim; yapay zekayı sadece LSP üzerinden kullanabilmek kabul edilebilir ama
dosya dışarıdan değişse bile otomatik yenilenmemesi çok can sıkıcıydı
Yapay zekanın değiştirdiği dosyanın güncel durumda olup olmadığını sürekli düşünmek zorunda kalıyorum
Bu yaklaşım çok daha sağlam ve cazip
Buna karşılık bazı yapay zeka araçları “IDE’ye gerek yok” deyip CLI merkezli ilerliyor; bence bu tam bir saçmalık
:reloadve:reload-allkomutları varBen
Ctrl-rtuşuna reload-all bağladımBir diğer seçenek de mux; bu araçta LLM’in önerdiği değişikliklere satır ve blok düzeyinde yorum ekleyebiliyorsun (henüz erken aşamada)
Claude Code kullanırken dosyanın otomatik değişmemesi hoşuma gidiyor
Vim C ise, Helix C++, Ki Editor da Rust gibi
Helix, Vim’in birçok fikrini miras almış ama tuş bağlama tutarlılığı zayıf ve kavramsal birleşim gücü de düşük
Örneğin buffer içinde
kile hareket ediyorsun ama dosya gezginindectrl+nkullanmak gerekiyorkbir giriş karakteri olarak kullanıldığı için başka bir tuşa ihtiyaç duyuluyorHelix’te de sebep muhtemelen bu
SSH ile bağlandığında klavye düzeni farklıysa ne olacak diye düşünüyorum
Helix’i gerçekten sevmek istedim
Varsayılan ayarlar iyi düşünülmüş ve öğrenmek için Vim alışkanlıklarımı bilerek bıraktım
Ama sonunda tuş bağlarının sadece basit bir uygulama uğruna verilmiş tavizler olduğu sonucuna vardım
Şimdi küçük düzenlemelerde Neovim’e, büyük işlerde ise Zed’e (vim modu) geri döndüm
Mesela dosyayı yeniden açınca önceki imleç konumuna dönmüyor
Bunu LLM ile düzeltebilirdim ama sonuçta Helix fork’u bakımını üstlenmek istemedim
Yıllarca birikmiş kas hafızasını bırakmak gerçekten çok zor
Bence hx + Zed kombinasyonu oldukça başarılı
Helix canlı dosya güncellemelerini desteklemediği için, kod ajanlarıyla birlikte kullanmak rahatsız edici
Helix’in SSS bölümündeki ikinci soruya bakılmasını öneririm
Python LSP’nin hiç yapılandırma gerektirmeden hemen çalışması etkileyiciydi
Ama 25 yıllık Vim kas hafızası yüzünden Helix’teki ince farklar çok kafa karıştırıyor
Sonunda sorunun Helix değil, benim kas hafızam olduğunu fark ettim
Vim ve Helix için de durum böyle olabilir
M-ESC ESCkombinasyonunu zararsız bir komuta bağlarsan pencerenin kapanması sorununu önleyebilirsinÖrnek:
(global-set-key (kbd "M-ESC ESC") 'keyboard-quit)dd,Ggibi farklara alıştıktan sonra gittikçe daha çok sevmeye başlıyorsunSon birkaç yıldır Helix’i varsayılan editörüm olarak kullanıyorum
Sadeliği, hızı, klavye odaklı gezinmesi ve Elixir LSP entegrasyonu özellikle hoşuma gidiyor
Helix’i ana editör olarak kullanıp epey kod dağıttım
Yapılandırma dosyam 50 satır bile değil, sadece birkaç Vim tuşu ekledim
Vim ile Helix arasında gidip gelmekte büyük sorun yaşamıyorum
Yapılandırmam burada
VS Code içinde doğrudan bir modal mod eklentisi geliştirdim; Kakoune ve Helix’in yaklaşımı bana ilginç gelmişti
“Değişecek kısmı önceden gösteren” yapı ve çoklu imleç merkezli tasarım mantıklı hissettirdi
Ama birkaç hafta sonra sonunda yine klasik Vim tarzına döndüm
Çoklu imleç yaklaşımı yalnızca ekrandaki tüm değişiklikleri görebildiğinde faydalıydı
Bugünlerde yapay zeka sayesinde koddan çok metin yazımı yaptığım için, bu düzenleme tarzının değeri biraz azalmış gibi geliyor
mc-hide-unmatched-lineskomutu var; böylece sadece imleç olan satırlar gösterilebiliyorÇoklu imleçler kısa ve basit düzenlemelerde iyi, ama karmaşık değişikliklerde toplu düzenleme araçları daha verimli
ekran dışındaki imleç sorununu çözmek için yapılmış