- 20 yıldır Vim kullanan bir geliştirici, Helix editörüne geçip 3 aylık kullanım deneyimini paylaşıyor
- Helix, karmaşık yapılandırma gerektirmeden dil sunucusu (LSP) desteğini varsayılan olarak sunmasıyla dikkat çekiyor
- Özellikle Vim/Neovim'e kıyasla güçlü arama özellikleri ve çoklu imleç gibi iyileştirmeler sayesinde, birden fazla dosyada bağlamı kavramak ve toplu düzenleme yapmak daha kolay
- Tuşlara basarken görünen hızlı başvuru penceresi (quick reference) sayesinde kısayolları unutmadan kullanmak mümkün
- Markdown listeyi otomatik oluşturma desteğinin olmaması, kalıcı undo eksikliği ve haftada yaklaşık bir kez yaşanan çökme gibi bazı rahatsız edici noktalar olsa da genel deneyim tatmin edici
- 20 yılda oluşan Vim kas hafızasını yeniden eğitme süreci beklenenden daha kolay olmuş; Vim tarzını zorla sürdürmek yerine "Helix tarzını" öğrenmek çok daha etkili olmuş
Helix'e geçme nedeni
- Helix kullanmaya başlamasının ana nedeni, dil sunucusu entegrasyonunu kolayca kullanabilmek
- Vim/Neovim'de dil sunucusu ayarlamak karmaşıktı; Helix'te ise ek yapılandırma olmadan hemen tanıma gitme ya da sembol adını değiştirme gibi işlemler yapılabiliyor
- Önceden çok sayıda eklenti ve yapılandırma dosyasını sürdürmek gerekiyordu, ancak Helix'in yerleşik desteği bu yükü azaltıyor
Helix'in başlıca avantajları
- Arama sisteminin başarısı
- Depo genelinde bir metin arandığında sonuçlar önizleme penceresinde gösteriliyor; böylece eşleşen dosyalar arasında kaydırarak çevredeki kodu da birlikte görmek mümkün
- Vim'in ripgrep eklentisinin aksine sonuçlar daha zengin bağlam sunduğu için hızlı karar vermeyi kolaylaştırıyor
- Hızlı kısayol başvuru özelliği
g tuşuna basıldığında gidilebilecek komutların listesi bir yardım açılır penceresi olarak gösteriliyor; bu da kullanımı sezgisel hale getiriyor
- Sık kullanılmayan kısayolları da kolayca kontrol etmek mümkün olduğundan öğrenme eğrisi daha yumuşak
Vim ile Helix arasındaki farklar
- İşaret (mark) özelliği için
ma, 'a yerine Ctrl+O, Ctrl+I ile imleç hareket geçmişi takip ediliyor
- Makrolar yerine çoğunlukla çoklu imleç düzenleme kullanılıyor
- Belge içinde toplu değişiklik yaparken
% ile tümünü seçip s ile regex seçimi yaparak gerekli çoklu düzenlemeler gerçekleştiriliyor
- Her seferinde makro yazmaktan çoklu imleç kullanmak çok daha pratik
- Sekmeler yerine
space + b ile buffer switcher kullanılarak hızlı geçiş yapılabiliyor
Helix'in rahatsız edici yönleri
- Metni yeniden akıtma (text reflow) özelliği, Vim'deki
gq kadar etkili değil
- Markdown liste otomatik oluşturma desteği yok
- Liste öğesinin sonunda "Enter" tuşuna basıldığında liste devam etmiyor
- Madde işaretli listeler için kısmi çözümler var ama numaralı listeler için yok
- Kalıcı undo özelliği henüz uygulanmamış
- Vim'de
undofile ile editörden çıktıktan sonra bile değişiklikler geri alınabiliyordu; Helix'te ise bu özellik henüz yok
- Dosyayı otomatik yeniden yükleme desteği yok
- Dosya disk üzerinde değiştirildikten sonra
:reload-all (:ra<tab>) komutunu elle çalıştırmak gerekiyor
- Ara sıra çökme yaşanıyor
- Haftada yaklaşık bir kez; bunun yoğun Markdown düzenleme ile ilgili olabileceği düşünülüyor
- Yeniden açmak yeterli olduğu için büyük bir sorun sayılmıyor
- Buna rağmen Helix kullanılmaya devam ediliyor
Geçiş süreci ve öğrenme deneyimi
- 20 yılda oluşan Vim kas hafızasını yeniden eğitmenin çok zor olacağından endişe edilmiş
- Tatil sırasında bir yan projede Helix kullanılmaya başlanmış ve 1-2 hafta sonra artık kafa karışıklığı kalmamış
- Başta Vim'e benzer tuş bağlarını zorla dayatmaya çalışılmış ama başarısız olunmuş; bunun yerine "Helix tarzını" öğrenmek çok daha kolay olmuş
- Hâlâ kafa karıştıran bazı noktalar var
- Vim'deki
w ile Helix'teki w, "kelime" tanımı açısından farklı çalışıyor (Helix kelimenin sonrasındaki boşluğu da kapsıyor, Vim kapsamıyor)
Terminal tabanlı düzenleme ortamı
- Yıllardır ağırlıklı olarak vim/neovim'in GUI sürümleri kullanıldığı için terminalde editör kullanmak biraz alışma gerektirmiş
- Sonunda şu iş akışı benimsenmiş
- Her proje için ayrı bir terminal penceresi kullanılıyor ve o pencerenin tüm sekmeleri aynı çalışma dizinine sahip oluyor
- Helix sekmesi terminal penceresinin ilk sekmesine yerleştiriliyor
- Birden fazla projeyi paralel yürütmek daha kolay olduğundan, bu yöntem önceki iş akışından bile daha iyi olabilir
Yapılandırma
- Yüzlerce satırlık Neovim yapılandırmasına kıyasla çok sade bir yapılandırma korunuyor
- Temelde yalnızca 4 klavye kısayolu ayarlanmış
- Başlıca ayarlar
- Tema:
solarized_light
- Varsayılan yank kaydı
+ olarak ayarlanarak sistem panosuyla senkronizasyon sağlanmış
#, yorum aç/kapat kısayolu olarak atanmış (Ctrl+C varsayılanı beğenilmemiş)
^ ve $, satır başına/sonuna gitmek için yeniden eşlenmiş (başka bir yöntemi öğrenmek istenmemiş)
<space>l, :reflow olarak atanmış (çok fazla metin yazıldığı için sık sık yeniden akıtma gerekiyor; Vim'deki gq kısayolu özlenmiş)
- Ayrı bir
languages.toml yapılandırma dosyasında dil bazlı tercihler tanımlanmış
- Python için: black biçimlendiricisi, pyright dil sunucusu, otomatik biçimlendirme kapalı
Sonuç: 3 aylık izlenim
- 3 ay çok uzun bir süre değil ve bir gün Vim'e geri dönme ihtimali hâlâ var
- Geçmişte nix'e geçip 8 ay sonra Homebrew'a geri dönme deneyimi olmuş (ancak bir sunucunun yönetiminde hâlâ NixOS kullanılıyor ve bundan memnun)
- Helix henüz tamamlanmış bir ürün değil, ancak "yapılandırmasız editör" yaklaşımının yönü net
- Sadelik ve yerleşik özellikler sayesinde uzun vadede Vim'in yerini alma potansiyeli taşıyor
- Ancak kullanımın sürüp sürmeyeceği, ileride kararlılık iyileştirmeleri ve özellik genişlemesine bağlı olacak
2 yorum
Hacker News görüşleri
Uzun zamandır Vim/Neovim kullanıyorum; hem kendi özel ayarlarımı yaptım hem de hazır yapılandırmalar denedim. Vim'i gerçekten sevmeme rağmen, Helix'in ek ayar yapmadan doğrudan kullanılabilmesi çok çekici
Ama Helix config'inin kendisi oldukça ilkel hissettiriyor; dürüst olmak gerekirse, Vim'i ilk birkaç yıl kullandıktan sonra Helix'te elde ettiğim ortamı zaten kopyalayabilirdim diye düşünüyorum ve bunu yaptıktan sonra da artık ayar cehennemi yaşamadığımı söylemek isterim
Yardım popup'larının hangi yolu izlemeniz veya hangi keybinding'i kullanmanız gerektiğini göstermesi çok hoş; normalde "go to definition" ya da "go to references" gibi özellikleri sık kullanmadığım için kısayolları kolay unutuyorum. Bu tür bağlamsal popup'ların yaygınlaşmasını isterdim; özellikle de yalnızca girişte tereddüt ettiğinizde akıllıca belirseler gerçekten çok faydalı olurdu
20 yıldır Vim/Neovim kullanıyorum ama which-key adlı eklentiyi ancak son 6 ay önce kurdum ve çok faydalı buluyorum
which-key.nvim GitHub
Ana language server kurulumunu (örneğin "go to definition" çalışacak şekilde) düzgünce oluşturmayı defalarca denedim ama Vim veya Neovim'de konforlu bir ortam kurmak bana hep fazla zor geldi
Vim yapılandırmasını ve ilgili bağımlılıkları taşıma derdi yok; geliştirme ortamı çok daha taşınabilir hissettiriyor (tabii karmaşık bir Vim kurulumu kadar değil, daha temel bir düzeyde)
Özellikle ilgili makaledeki açıklama ve ekran görüntülerini gördükten sonra bu özelliği ciddi biçimde istemeye başladım
Popup akıllıca timeout gibi koşullarla görünürse, ihtiyaç olmadığında rahatsız etmez ve yalnızca tereddüt ettiğinizde otomatik rehberlik sunar
Önceden ağırlıklı olarak neovim ve VS Code kullanıyordum; Helix benim için özel bir boşluğu dolduruyor
neovim'i yapılandırmakla uğraşmak ya da vim kullanmayı sürdürmek bana yorucu geldiğinden, VS Code ile nvim arasında bir orta noktaya ihtiyacım vardı; Helix tam buna uyuyor
vimscript ustası olsaydım belki farklı düşünürdüm ama değilim, o yüzden bana çok iyi geliyor
Helix'in daha modüler ya da UNIX benzeri çalışmasına gerek yok; şimdiki haliyle devam etmesini isterim
Zaten çok çeşitli bir araç ecosystem'i var ve Claude Code ile de entegre kullanılabiliyor (buffer refresh ile yeni düzenlemeler uygulanıyor)
En iyi editörlerden biri olduğu için projeye aylık destek vermeye de başladım
İleride gelişmesini istediğim en büyük konu, editör içinde görsel veya formül render edilebilmesi; bunun Kitty terminal protokolü ya da sixel gibi eklentilerle gelmesini umuyorum
Bunu özellikle Markdown dosyalarıyla not/blog yazarken çok faydalı bulurdum
Helix'e başarılar
VSCode veya (neo)vim tarafında birçok yerden eklenti çekmek gerektiği için hep tedirgin oluyordum
Lua geliştiricisi değilim ama LLM'ler nvim ayarlarını yapmak veya değiştirmek konusunda büyük yardımcı oluyor
helix'e geçmemin en büyük nedeni LSP/lint yapılandırmasının çok iyi olmasıydı
HEAD'de zaten merge edilmiş özelliklerle ilgili birkaç şey paylaşayım —
Zaten yerleşik fuzzy search tabanlı bir dosya seçici olduğu için, klasik bir dosya gezgini çok fazla ek fayda sağlamıyor
Helix için vim keybinding eklentisini de kullandım ama sadece kısmen uyduğu için daha da hayal kırıklığı yarattı
templ,sqlcvb.) dosyayı değiştirdiğinde Helix'in bunu otomatik algılayıp yeniden yüklememesi üzücüDeneyimli Helix kullanıcıları bunu nasıl çözüyor merak ediyorum
Vim/Neovim'de rahat bir language server kurulumu yapmak o kadar iş hâline gelmişti ki Helix'e geçtim
Ama son 5 yılda Neovim için bataryalar dahil gibi her şeyi hazır getiren dağıtımlar çıktı ve kurulum çok kolaylaştı
Birçok geliştiricinin editör debug etmeye vakit harcamak istemediğine katılıyorum; bence JetBrains'in popüler olmasının nedeni de bu
Yine de 20 yıllık bir Neovim kullanıcısının düzgün bir LSP ortamı kuramamış olması bana pek inandırıcı gelmiyor; yazarın gerçekten kendi deneyimini mi anlattığından emin değilim
Sonunda tam bir IDE kullanmak daha rahat geldiği için kurulum ve ayara girişmekte hep tereddüt ettim
Yazarın yaşadıkları bana gayet tanıdık geliyor
Ben de ayarları minimumda tutup barebones kullanıyorum; zor değildi ve Lua bana vimscript'ten çok daha ergonomik geliyor
ALE gibi araçları kullanmaya devam etmemin nedeni de bu
Helix kullananların da memnun olmasını dilerim
Başka editörler kullanılabiliyor ama neredeyse tüm debugging ve yapılandırma vscode merkezli olduğu için onu kullanmanız teşvik ediliyor
Neovim+treesitter+LSP kurulumu da artık oldukça pürüzsüz çalışıyor; eskiden zor olsa da bugün büyük bir sorun değil
Helix'e geçiş motivasyonu LSP ise biraz şüpheli geliyor; belki de yazarın asıl derdi LSP'nin kendisidir
noun-verb yaklaşımının dezavantajlarından biri tekrar komutunun (
.) mümkün olmamasıVim'de
dd..,dap..gibi tekrarlar yapılabiliyor ama noun-verb modelinde bu zorDaha temel olarak, tuş sayısı yetmiyor sorunu ortaya çıkıyor
Fazla sayıda temel işlem için Alt tuşuna ihtiyaç var ve vim'deki gibi normal/visual/insert modları yok; sadece visual/insert var
motion/nesne ayrımı da net değil, bu da key mapping'i zorlaştırıyor ve tuş kıtlığı yaratıyor
Gerçekten kod yazarken gereken zihinsel modele daha uygun hissettiriyor
echasnovski'nin geliştirdiği bir eklenti koleksiyonu; farklı ihtiyaçları karşılıyor, aynı zamanda tutarlılık ve iyi dokümantasyon sağlıyor
nvim 0.12(nightly) ile birlikte yerleşik eklenti yöneticisi (vim.pack) sayesinde sadece mini.nvim ve lspconfig kurmak bile yeterli
mini.nvim resmi sitesi
mini.nvim GitHub deposu
neovim'i eklentisiz, otomatik tamamlama olmadan, hatta syntax highlighting bile kapalı kullanıyorum
Bu yaklaşımın getirdiği öz disiplinin daha iyi kod yazdırdığını hissediyorum
Herkes için uygun olmayabilir ama en azından bir kez denemeyi tavsiye ederim
Code action ya da goto definition da kullanmıyorum; anlık hata gösterimi bazen yararlı ama derleyici zaten çok hızlı olduğu için büyük fark yaratmıyor
LSP'yi tamamen kapatma isteğim var; 20 yıl öncesine göre programlama becerimi dramatik biçimde geliştirdiğini düşünmüyorum
Syntax highlighting konusunda da çok renkli temaların dikkat dağıttığını ve anlam katmadığını düşünüyorum
Tek renkli ya da iki renk ağırlıklı temaları tercih ediyorum; değişken adıyla fonksiyon adının ayrı renkte olmasına bile ihtiyaç duymuyorum
Yine de her şeyi akılda tutmak zorunda kalmanın zamanla yormayacağını ya da bu yöntemin gerçekten daha iyi kod üretip üretmediğini merak ediyorum
Renkler, koddaki hata ve yanlışları göze daha kolay çarpan, ayrıca kod içinde gezinmeyi hızlandıran ek bir bilgi katmanı sağlıyor
Ama aşırıya kaçmıyorum; syntax highlighting ve LSP üzerinden sözdizimi hatası geri bildirimini koruyorum
Otomatik tamamlama ya da belge bağlantılamayı kullanmıyorum
helix-editor.vercel.app
Resmî belgelerden çok daha okunaklı ve birçok ipucu/hile içeriyor; böylece verimli düzenleme yöntemleri veya keybinding'ler gibi konularla Helix'in bazı eksileri (örneğin yerleşik terminal olmaması) bir ölçüde telafi edilebiliyor
Uzun süreli vim kullanıcıları için kickstart'ı, özellikle modüler çatalı kickstart-modular.nvim, tavsiye ederim
kickstart.nvim
Çok minimal bir başlangıç noktası olduğu için harika
Yalnız biraz büyük; ben fold marker kullanarak bölümleri kapatıp yönetmeyi daha kolay hâle getiriyorum
LSP ve plugin ayarlarının kolaylığı gibi nedenlerle zaman zaman Helix'e ilgi duyuyorum, ancak ellerim vi/vim'e fazla alıştığı için bu pek kolay olmuyor.