Helix Editor 25.07
(helix-editor.com)- 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ı
:writeailesindeki 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-sittercrate) vetree-sitter-highlightvurgulayıcısı kullanılıyordu tree-sitter-highlightartı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
Syntaxtipinde 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
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
xtuşunun imlecin altındaki karakteri silmesi ya dadile 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.exeindirerek gayet iyi çalışıyorBenim 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 oluyorvim(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ı
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ı:
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
viiçin alias tanımladım ve$EDITORolarak da Helix’i ayarladım. CLI’de hızlı düzeltme ya da debug gerektiğinde hep Helix’i kullanıyorumHelix’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 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