1 puan yazan GN⁺ 2025-07-17 | 1 yorum | WhatsApp'ta paylaş
  • Helix 25.07, temel bileşenlerin değiştirilmesini ve çok sayıda yeni özelliğin eklenmesini içeriyor
  • Dosya gezgini, LSP belge renk gösterimi, komut modu iyileştirmeleri gibi yeniliklerle kullanılabilirlik ve iş akışı büyük ölçüde gelişti
  • Sözdizimi vurgulama ve sorgu optimizasyonu için yeni crate Tree-house kullanıma sunuldu
  • Tree-house, injection ve local işleme yeteneklerini, performansı ve bakım kolaylığını ciddi ölçüde güçlendiriyor
  • Gelecekte daha geniş bir çok dilli deneyim ve hız iyileştirmesi için temel oluşturuldu

Helix 25.07 öne çıkan güncellemeler

Helix 25.07 sürümü, uzun zamandır beklenen temel özellik değişiklikleri ve çeşitli yeni özellik eklemelerinden oluşuyor. Bu sürüme 195 katkıcı katıldı. Helix; çoklu seçim, LSP, Tree-sitter ve deneysel DAP desteğine sahip bir modal metin düzenleyicidir.

Yeni başlıca özellikler

Dosya gezgini

  • 25.07 ile <space>e üzerinden kullanılabilen dosya gezgini özelliği eklendi
  • Bu gezgin, telescope benzeri bir arayüz sunuyor
  • Dizin içindeki hiyerarşik yapıda gezinmeyi kolaylaştırıyor ve büyük projeleri gezerken daha hassas kontrol sağlıyor

LSP belge renk gösterimi

  • Artık Helix, LSP sunucusundan belge renk bilgisi istiyor ve RGB renk aralıklarını satır içinde gösteriyor
  • Örneğin tailwindcss-language-server, vscode-css-language-server gibi sunuculardan alınan renkler sayesinde kod içinde renk kutuları görsel olarak doğrudan görülebiliyor

Komut modu (:) iyileştirmeleri

  • Komut ayrıştırma ve otomatik tamamlama kodu baştan yazıldı, böylece hatalar düzeltildi ve kullanılabilirlik arttı
  • :write ailesindeki komutlara --no-format bayrağı gibi bayrak desteği eklendi
  • Komut içinde değişken/değer genişletme (%{variable_name}, %sh{명령어} vb.) özelliği ve otomatik tamamlama eklendi
  • Karmaşık giriş değerlerini işlemek için yapı genişletilebilir bir ayrıştırıcı mimarisine dönüştürüldü; böylece ileride komutların genişletilmesi kolaylaşacak

Tree-house: Tree-sitter entegrasyonu için yeni yapı

Tree-sitter nedir

  • Tree-sitter, hızlı ve hatalara dayanıklı ayrıştırıcılar üretmek ve kullanmak için bir framework'tür
  • Sözdizimi DSL'i ile ayrıştırıcı kuralları yazılır; düzenleyici ve araçlar içinde sözdizimi ağaçları üretilip kullanılır
  • Örneğin GitHub'ın kod gezgini ve vurgulaması, kod sunucularındaki spell-check, diff araçları gibi yerlerde kullanılır
  • Tree-sitter sorguları, alt ağaç desen eşleme ve sözdizimi düğümü yakalama için kullanılır

Helix'in önceki Tree-sitter entegrasyonu ve sorunları

  • Helix'in ilk dönemlerinde resmi Rust binding'leri (tree-sitter crate) ve tree-sitter-highlight vurgulayıcısı kullanılıyordu
  • tree-sitter-highlight artımlı değil, bu nedenle belgenin tamamı her seferinde yeniden ayrıştırılmak zorunda kalıyor; bu da performans düşüşü ve kaynak israfına yol açıyordu
  • Helix bunu iyileştirmek için kendi vurgulayıcısını fork etti, ancak zamanla yapı karmaşıklaştı ve bakım zorlaştı

Tree-house'un eklenmesi ve avantajları

  • Tree-house; ayrılmış ayrıştırma/sorgu yapısı, temiz kod, mevcut kronik hataların sonlandırılması ve paralel ayrıştırma gibi geleceğe dönük bir mimari üzerine odaklanıyor
  • En büyük güçlü yanı, injection işlemlerini sağlam biçimde ele alması

Injection: çoklu dil/katman desteği

  • Injection, örneğin Markdown içinde bir Rust kod bloğu bulunduğunda, yalnızca o aralığın ayrıca Rust olarak ayrıştırılması yöntemidir
  • Karmaşık durumlarda da (ör. Rust yorumları içinde Markdown, onun içindeki kod bloğunda tekrar Rust) katmanlar ağaç yapısı ile yönetilerek doğru destek sağlanır

Artımlı injection

  • Yalnızca gerçekten değişen katmanlar hızlıca yeniden ayrıştırılır ve sorgular çalıştırılır; böylece en küçük iş birimi kullanılır
  • Çok büyük listeler veya iç içe yapılar içeren Markdown belgelerinde verimlilik en üst düzeye çıkar

Yerel değişken vurgulama (locals)

  • Fonksiyon içindeki parametreler gibi yerel değişkenler, tanımlandıkları ve başvuruldukları kapsamda doğru şekilde vurgulanır
  • Önceden tanım görünüm alanının dışında kaldığında vurgunun kaybolmasına neden olan kronik sorun, Tree-house ile çözüldü

Genelleştirilmiş injection desteği

  • Syntax tipinde injection katmanlarını aramak ve sorgulamak logaritmik zamanda mümkün hale geldi
  • TreeCursor, QueryIter gibi API'lerle tüm injection katmanlarına uygulama yapılabiliyor
  • HTML <script> içindeki kod, Markdown kod blokları gibi dil sınırları arasında tutarlı davranış için altyapı hazırlanmış oldu

Sonuç

  • Helix 25.07; dosya gezgini, renk inlay'leri, komut modu/ayrıştırıcı iyileştirmeleri gibi kullanılabilirlik yeniliklerinin yanı sıra Tree-house tabanlı yeni mimarisiyle yeni nesil metin düzenleyiciler arasında güçlü bir aday olarak öne çıkıyor
  • Ayrıntılı güncelleme içeriği için changelog incelenebilir
  • Topluluk ve katkı katılımı Matrix ile GitHub deposu üzerinden sürdürülebilir

1 yorum

 
GN⁺ 2025-07-17
Hacker News görüşleri
  • Helix gerçekten harika; dosya seçici, sözdizimi vurgulama, linting gibi birçok özelliği eklenti kurmadan ya da karmaşık ayarlar yapmadan doğrudan sunuyor. Buna karşılık vim ya da neovim varsayılan olarak epey ayar istiyor. Kullanmak istiyorum ama asıl dezavantajı, tuş bağlarının vim’den farklı çalışması. Alışık olduğum x tuşunun imlecin altındaki karakteri silmesi ya da d ile bir işlemi beklemesi gibi, yıllardır kullandığım vim tuş davranışları birebir olmayınca kafa karıştırıcı ve sinir bozucu oluyor. Muhtemelen birçok vim kullanıcısı da bu konuda benzer hissediyordur ve alışkanlığı değiştirmek çok zor. Özellikle de vim her yerde varsayılan olarak bulunduğu için kaçınılmaz bir ortam gibi. Neyse ki evil-helix adlı bir Helix soft fork’u Vim tuş bağlarını ekliyor; bu yüzden benim yaşadığım rahatsızlığı yaşayanlara tavsiye etmek isterim. Ayrıca Helix ve evil-helix Windows(cmd) üzerinde de rust kurmadan sadece .exe indirerek gayet iyi çalışıyor

    • Benim için mesele yeni bir şey öğrenmek istememek değil; sorun, bu tuş bağlarını başka yerlerde kullanamamak. Neredeyse tüm çevrimiçi editörler ve workstation’lar vim tuş bağları sunuyor, ayrıca Linux’a ssh ile bağlandığınızda her zaman vim bulunması önemli. Biraz QWERTY klavye gibi; daha iyi dizilimler olsa bile, neredeyse her ortama anında uyum sağlayabilme esnekliğinden vazgeçemiyorum

    • Yeni araçlar öğrenmekte hiçbir sorunum yok. Helix’i yeterince kullandım ama isim-fiil modeli bana daha kötü göründü ve görsel geri bildirim de kod okurken daha çok dikkat dağıtıcı oldu. Vim’de son komutu yinelemek (. bağı gibi) gibi şeyler rahatça yapılabiliyorken, Helix’te bundan vazgeçmek gerekiyor. Durum yönetimine de vim’den daha fazla dikkat etmek gerekiyor; vim’de dosya içinde şu anki konumumu takip etmem yeterliyken, Helix’te daha önce nerede olduğumu da düşünmem gerekiyor. Ben iyi varsayılan ayarlara sahip, modlu düzenleme sunan ve gereğinden fazla görsel senkronizasyon dayatmayan bir editör istiyorum. Senkronizasyon arttıkça bir düzenleme dili olarak avantajını kaybediyor. Düzenlemeden çok daha ilginç olan programlamaya odaklanmak istiyorum; daha fazla dikkat gerektiren editörler, editör olarak da daha zayıf oluyor

    • vim(neovim)’i yaklaşık 20 yıl kullandıktan sonra helix’e geçtiğimde hiç zorlanmadım ve şimdi çok daha fazla tercih ediyorum. Bazı modsal davranışları değiştirdim ama helix’in mantığını izleyerek kullanıyorum. Çoklu seçim ya da LSP gibi özelliklerin kutudan çıkması ve çok adımlı girişlerde olası eylemleri ipucu olarak gösteren güçlü yardım sistemi büyük avantaj. Arada saf vim kullanmam gerekse bile, zihnimdeki eşlemeler biraz değişmiş olsa da temel komutları hatırladığım için çabucak uyum sağlayabiliyorum

    • Helix şu anda programlanabilir yapılandırma için Scheme ekliyor. Programlanabilirlik geldiğinde, emacs’in repeat/transient map’leri, durum bazlı izleme gibi çeşitli ince ayarlar mümkün olacak gibi görünüyor. LLM devrimi sayesinde 8. ve 9. dili bile kolayca kurcalayabildiğimiz bir dünyada, ayrıntılı yapılandırmaya izin veren araçların piyasada daha çok öne çıkacağını düşünüyorum

    • Vim tuş bağları, Helix kullanmamamın tek nedeniydi. Harici bir fork ile vim desteği mümkünse, Helix resmî olarak da isterse destekleyebilir gibi görünüyor; acaba bilerek mi yapmıyorlar diye düşündürüyor

  • Helix’i gerçekten çok seviyorum. Vim’in kendisine uymadığı kişiler ya da vim fikrini sevip kolay uyum sağlayamayanlar için güçlü bir öneri. Mevcut vim türevlerine göre öğrenmesi ve kullanması çok daha kolaydı, ayrıca varsayılan ayarları da son derece kullanışlı

    • Helix’i gerçekten çok seviyorum; açıkçası fare tabanlı dosya gezgini gibi GUI tarafında biraz daha kullanım kolaylığı eklenirse, vscode’a karşı güçlü bir rakip olabilir diye düşünüyorum
  • Bu kadar yetenekli bir editörün hâlâ minimal kalması ve gereksiz yapay zeka özelliklerine odaklanmaması hoşuma gidiyor

  • Tebrikler, Helix’in başarılı olmasını diliyorum ama bana göre değil gibi. Neovim kullanıyorum ve istediğim şeylerin neredeyse hepsini yapabiliyorum. Yine de tamamen memnun değilim. İstediğim editör şu özelliklere sahip olmalı:

    • modern bir kod tabanı, tamamen sıfırdan yazılmış
    • Vim tuş bağları; bu kas hafızası çok güçlü olduğu için Vim tarzında ısrarcıyım, daha iyi olduğu söylense bile etkilenmiyorum, tam olarak Vim gibi çalışmasını istiyorum
    • iyi varsayılanlar; Neovim’de çok fazla ayar var ve varsayılanlar her zaman tatmin edici değil
    • Treesitter tabanlı, WASM üzerinde çalıştırılabiliyorsa daha da iyi (Zed, güncel Neovim gibi)
    • genişletme sistemi için Lua; JS ya da Scheme pek istemiyorum, ideal olarak WASM modülleri üzerinden yalnızca gerekli işlevleri açan bir yapı, eklenti ayarı için Turing-tam olmayan bir yapılandırma dili istiyorum
    • TUI ve isteğe bağlı GUI
    • LSP, DAP, snippet, otomatik tamamlama, test/debug UI gömülü
    • Oil.nvim benzeri bir dosya sistemi görünümü gömülü
    • Telescope/FZF-lua tarzı arama gömülü
    • git entegrasyonu, magit/neogit benzeri bir git UI de memnuniyet verici olur
    • Flash.nvim tarzı, Treesitter tabanlı AST düzenleme ve etiketli atlama gömülü
    • makrolar ve çoklu imleç
    • isteğe bağlı, imleç tabanlı yapay zeka entegrasyonu (Chat UI)
    • Vim kas hafızasını ben de kabul ediyorum ama bence birçok insan buna fazla takılıyor. İşletim sistemi, editör ve IDE’yi birkaç kez değiştirdim; değiştirdiğim ilk birkaç gün inanılmaz derecede bunaltıcı, sinir bozucu oluyor ve insan çiftçiliğe mi dönsem diyor, ama o süre geçince her seferinde yeni bir kas hafızası oluşuyor. Birkaç günlük rahatsızlık yüzünden yazılımın sunduğu diğer sayısız avantajdan vazgeçmek bana yazık geliyor

    • Helix’in, bahsedilen koşullardan hangisini karşılamadığını tam olarak anlayamadım. Bana kalırsa Helix bunların neredeyse hepsini karşılıyor gibi görünüyor

    • Gereksinimlere bakınca, sonuçta Neovim’de yalnızca Lua’nın başka bir dille değiştirilmesini istiyor gibi görünüyor

  • Helix’e bayılıyorum, tebrikler. Varsayılan tema güzel, varsayılan ayarlar da mükemmel. Kurup hemen kullanabiliyorsunuz, ekstra ayar gerekmiyor. Henüz IDE’nin yerini tamamen almadı ama vi için alias tanımladım ve $EDITOR olarak da Helix’i ayarladım. CLI’de hızlı düzeltme ya da debug gerektiğinde hep Helix’i kullanıyorum

  • Helix’i gerçekten çok sevdim ve sempati duydum ama undo davranışı pek mantıklı gelmedi; bir kerede fazla şeyi geri alıyor ve doğal hissettirmiyor. Bu yüzden gerçekten iş kaybettiğim bile oldu

    • Undo ile ilgili beni rahatsız eden iki nokta vardı:

      • undo sırasında düzenlenen içerik ekranda görünmüyorsa o bölgeye atlaması güzel, ama aynı tuş vuruşuyla undo işlemini de hemen yapması kafa karıştırıyor. Diğer editörlerde içerik görünmüyorsa sadece oraya gider, geri alma yapmaz. Helix’te bir kez basınca gerçekten bir şey değişip değişmediğini mutlaka kontrol etmek gerekiyor
      • undo fazla büyük parçalar hâlinde yapılıyor. Ekleme modunda 30 dakika yazı yazsam bile, mod değiştirene kadar tek seferde undo oluyor. Save point’leri elle eklemek gerekiyor; ben bunu daha ince undo için boşluk tuşuna atamaya çalıştım ama bu da seçim alanlarının kaybolması gibi yan etkilere yol açtı. Temiz bir çözüm bulamadım. Genel olarak Helix’ten memnunum ama undo derinliğinin elle müdahale gerektirmesi gerçekten üzücü
    • Undo ve "son komutu yinele" biraz tuhaf gerçekten, ama diğer özellikleri o kadar iyi ki Helix’i ana editörüm olarak kullanıyorum. Yine de iş kaybı yaşadığınız kısımda neden tekrar redo yapamadığınızı merak ettim

  • Helix’te bir "Kakoune modu" olmasını isterdim. İşte Windows kullandığım için Kakoune en uygun seçenek değil, Helix ise neredeyse mükemmel görünüyordu ama tuş bağlarını aşmak zor. Helix’in tuş bağlama felsefesi, Kakoune’un yalınlığından daha ayrıntılı ve bu beni rahatsız ediyor. Ayrıca Helix’in tuş bağı yapılandırması da Kakoune’u gerçekten taklit edecek kadar güçlü değil. Vim’in tutarsız ve mantıksız davranışlarından bıkıp Kakoune’a geçmiştim; Helix bu konuda bir adım geri gibi geliyor

  • "Post modern" editör ifadesi eğlenceli. Fish shell’in "90’lar için shell" söyleminden sonra duyduğum en iyi ikinci şaka olabilir. Videoda TUI tabanlı olması dikkat çekiciydi ve biraz Emacs TUI havası veriyor

  • Helix düzeyinde hepsi bir arada bütünlüğe sahip bir vim benzeri editöre gerçekten ihtiyaç var. Neovim dağıtımlarında parçalar birbirine fazla gevşek bağlanmış oluyor ve hep hafif tatsız bir şeyler kalıyor. Genel olarak Vim arayüzünün baştan tasarlanması gerektiğini de düşünüyorum ama eylem-nesne merkezli modlu yaklaşımın korunmasını isterim

    • Evil-Helix bu isteğe uyuyor gibi görünüyor. Hâlâ epey pürüzlü yanları var gibi, ama bakmaya değer https://github.com/usagi-flow/evil-helix

    • Action-Object modlu yaklaşımın ne olduğunu merak ettim

  • Helix ve benzer editörlerin sözdizimi vurgulama ve kod anlama özelliklerine dair ayrıntılı açıklama etkileyiciydi. tree-sitter tabanlı yapı ve işlevlerin sorgu dili için çok uygun göründüğünü, sembol arama ya da referans bulmanın ötesinde genel amaçlı bir sorgu DSL’i mümkün kıldığını düşündüm; acaba böyle bir özellik zaten var mı diye merak ediyorum