- Helix एक टर्मिनल-आधारित modal text editor है, जो आधुनिक फीचर्स को एकीकृत करने वाला एक open source प्रोजेक्ट है
- Tree-sitter इंटीग्रेशन के जरिए यह syntax highlighting, indentation calculation, code navigation जैसी syntax-aware editing features प्रदान करता है
- Language Server Protocol को सपोर्ट करके यह auto-completion, go to definition, documentation view, diagnostics जैसी IDE-स्तरीय सुविधाएँ उपलब्ध कराता है
- Rust में लिखा गया है, इसलिए यह Electron या JavaScript के बिना चलता है, और SSH·tmux·टर्मिनल environment में प्रभावी ढंग से इस्तेमाल किया जा सकता है
- plugin system और GUI frontend भविष्य में विकसित किए जाने की योजना में हैं, और इसकी खासियत हल्का codebase और आधुनिक default settings हैं
मुख्य विशेषताएँ
- Helix, Kakoune से प्रेरित multi-selection और cursor system को अपने मुख्य editing unit के रूप में इस्तेमाल करता है
- commands कई selection areas को एक साथ नियंत्रित करती हैं, जिससे parallel code editing संभव होती है
- Tree-sitter का उपयोग करके error-tolerant syntax tree बनाई जाती है
- इसके जरिए सटीक syntax highlighting, auto indentation, code navigation फीचर्स मिलते हैं
कोड मैनिपुलेशन और नेविगेशन फीचर्स
- function, class, comment जैसे syntax tree node units के आधार पर selection और movement की सुविधा देता है
- साधारण text नहीं, बल्कि syntax structure आधारित editing संभव होती है
- Language Server Protocol (LSP) के जरिए भाषा-विशिष्ट auto-completion, go to definition, documentation view, diagnostics फीचर्स देता है
- अतिरिक्त configuration के बिना टर्मिनल environment में IDE-स्तरीय सुविधाओं का उपयोग किया जा सकता है
तकनीकी आधार
- Rust में लिखा गया है, जिससे स्थिरता और performance सुनिश्चित होती है
- Electron, VimScript, JavaScript का उपयोग नहीं करता
- SSH, tmux, सामान्य टर्मिनल environment में चल सकता है
- हल्की संरचना के कारण battery efficiency बेहतर होती है
बिल्ट-इन आधुनिक फीचर्स
- fuzzy finder के जरिए file और symbol navigation, तथा project-wide search को सपोर्ट करता है
- auto bracket closing, surround integration, theme customization जैसी कई सुविधा-जनक features बिल्ट-इन हैं
- अलग plugin के बिना भी समृद्ध default features का एकीकृत ढांचा प्रदान करता है
अक्सर पूछे जाने वाले प्रश्न
- “पोस्टमॉडर्न” अभिव्यक्ति का मतलब मज़ाकिया तौर पर यह है कि यदि Neovim ‘modern Vim’ है, तो Helix उसके बाद की पीढ़ी है
- GUI frontend को भविष्य में WebGPU-आधारित prototype के रूप में विकसित किया जाना तय है
- फिलहाल plugin system लागू नहीं किया गया है, लेकिन भविष्य में इसे जोड़ने की योजना है
- Kakoune से अंतर यह है कि Helix में ज़्यादा फीचर्स बिल्ट-इन हैं, और यह Tree-sitter आधारित code analysis का उपयोग करता है
- Vim से अलग, Helix को शुरुआत से नया डिज़ाइन किया गया है, इसका codebase छोटा है, और यह कम से कम config बदलावों के साथ आधुनिक defaults देता है
समुदाय और भागीदारी
- GitHub पर code contribution किया जा सकता है
- Matrix चैनल में प्रोजेक्ट पर चर्चा होती है
- OpenCollective के जरिए development support दिया जा सकता है
1 टिप्पणियां
Hacker News की राय
“Post-modern?!” वाला मज़ाक देखकर दिलचस्पी हुई
कई engineers ‘postmodern’ को बस modern के अगले चरण के रूप में समझते हैं, लेकिन art और humanities में इसका मूल अर्थ इससे अलग है
बेशक, इस तरह का इस्तेमाल कोई बहुत बड़ी समस्या नहीं है, लेकिन फिर भी सचमुच की ‘postmodern’ creativity की उम्मीद थी, इसलिए यह बात ध्यान खींच गई
लेकिन क्योंकि ‘postmodernism’ मूल रूप से modernism के बाद उसकी प्रतिक्रिया के रूप में पैदा हुई अवधारणा है, इसलिए इसे बस “modern के बाद” मान लेना पूरी तरह गलत भी नहीं लगता
हाँ, समय के साथ इसका अर्थ कहीं अधिक जटिल हो गया, और अब इसका “dated af” जैसा लगना अपने आप में मज़ेदार है
“Helix, पहला editor जो grand narratives पर विश्वास नहीं करता। Helix, relativist editor। Helix, Foucault और Derrida के नवीनतम updates के साथ”
मैं कई सालों से Helix को अपना main editor बनाकर इस्तेमाल कर रहा हूँ (Sublime → Atom → Vim → Helix)
ज़्यादातर LSP लगभग बिना किसी configuration के काम करते हैं, और config file भी पुरानी .vimrc की तुलना में कहीं अधिक संक्षिप्त है
Vim की muscle memory बदलने में कुछ ही दिन लगे, लेकिन फिर भी modal editor को लेकर मन में मिला-जुला भाव है
code folding feature का अब भी इंतज़ार है
Emacs में multiple cursors और treesitter-आधारित plugins के साथ non-modal तरीके से भी काफ़ी शक्तिशाली editing संभव है
क्या Helix का modal तरीका भी कुछ ऐसे ही कारणों से असुविधाजनक लगता है?
पुराने Unix keyboards में यह home row के पास हुआ करती थी, लेकिन अब यह बहुत दूर है
ज़्यादातर tutorials alternative key का ज़िक्र तक नहीं करते, इसलिए यह समझना मुश्किल है कि अब भी आधे से ज़्यादा users Escape को वैसे ही क्यों इस्तेमाल करते हैं
कुछ दिन पहले Helix फिर से इस्तेमाल किया, और AI को सिर्फ LSP के ज़रिए इस्तेमाल कर पाना तो ठीक लगा
लेकिन बाहर से file बदलने पर auto-refresh न होना बहुत असुविधाजनक था
बार-बार यह चिंता होती रही कि AI द्वारा बदली गई file कहीं पुरानी स्थिति में तो नहीं दिख रही
यह तरीका कहीं अधिक स्थिर और आकर्षक लगता है
दूसरी ओर कुछ AI tools कहते हैं “IDE की ज़रूरत नहीं”, और CLI-केंद्रित दिशा में जाते हैं; मुझे वह पूरी तरह बकवास लगता है
:reloadऔर:reload-allcommands हैंमैंने
Ctrl-rपर reload-all bind कर रखा हैएक और विकल्प mux है, जहाँ LLM द्वारा सुझाए गए changes पर line/block स्तर पर comments किए जा सकते हैं (अभी शुरुआती version में)
Claude Code के साथ काम करते समय files का अपने-आप न बदलना मुझे पसंद है
Vim अगर C है, तो Helix C++ जैसा है, और Ki Editor Rust जैसा
Helix ने Vim के कई ideas विरासत में लिए हैं, लेकिन keybinding consistency कमज़ोर है और conceptual composition भी उतनी मज़बूत नहीं
उदाहरण के लिए buffer में
kसे move होता है, लेकिन file explorer मेंctrl+nइस्तेमाल करना पड़ता हैkinput character के रूप में इस्तेमाल होता है, इसलिए अलग key लेनी पड़ती हैशायद Helix में भी वही कारण हो
SSH से जुड़ते समय keyboard layout अलग हो तो क्या होगा, यही सवाल है
मैं सच में Helix को पसंद करना चाहता था
default settings अच्छी थीं, और इसे सीखने के लिए मैंने जानबूझकर Vim की कुछ आदतें छोड़ीं
लेकिन आख़िरकार इस निष्कर्ष पर पहुँचा कि keybindings साधारण implementation को आसान बनाने के लिए किए गए समझौते हैं
अब छोटे edits के लिए Neovim और बड़े काम के लिए Zed(vim mode) पर लौट आया हूँ
उदाहरण के लिए, file दोबारा खोलने पर cursor पिछली position पर नहीं लौटता
LLM से इसे ठीक कराया जा सकता था, लेकिन अंततः Helix fork maintain करना नहीं चाहता था
कई सालों में बनी muscle memory को छोड़ना वाकई बहुत कठिन है
मुझे hx + Zed combination काफ़ी शानदार लगता है
Helix live file updates support नहीं करता, इसलिए code agents के साथ इसका इस्तेमाल असुविधाजनक है
किसी ने Helix की FAQ का दूसरा सवाल देखने की सलाह दी
Python LSP का बिना configuration सीधे काम करना प्रभावशाली लगा
लेकिन 25 साल की Vim muscle memory के कारण Helix के सूक्ष्म अंतर बहुत उलझन पैदा करते हैं
आख़िर में समस्या Helix नहीं, मेरी muscle memory ही है
शायद Vim और Helix के साथ भी ऐसा हो सकता है
M-ESC ESCको किसी harmless command से bind कर दें, तो window बंद होने की समस्या से बचा जा सकता हैउदाहरण:
(global-set-key (kbd "M-ESC ESC") 'keyboard-quit)dd,Gजैसे फ़र्कों की आदत पड़ जाए तो यह धीरे-धीरे और पसंद आने लगता हैपिछले कुछ सालों से Helix को default editor की तरह इस्तेमाल कर रहा हूँ
इसकी simplicity, speed, keyboard-centric navigation, और Elixir LSP integration खास तौर पर पसंद हैं
Helix को main बनाकर मैंने काफ़ी code ship किया है
मेरी config file 50 lines से भी कम है, और मैंने बस कुछ Vim keys जोड़ी हैं
Vim और Helix के बीच आना-जाना भी कोई बड़ी समस्या नहीं
मेरी settings यहाँ हैं
मैंने VS Code के लिए खुद modal mode extension बनाई थी, इसलिए Kakoune और Helix का approach दिलचस्प लगा
“जो बदलने वाला है उसे पहले दिखाने” वाली संरचना और multi-cursor केंद्रित design काफ़ी तर्कसंगत लगी
लेकिन कुछ हफ्तों बाद आख़िरकार फिर क्लासिक Vim style पर लौट गया
multi-cursor तरीका तभी उपयोगी लगा जब स्क्रीन पर सारे बदलाव एक साथ दिखाई दे रहे हों
आजकल AI की वजह से code से ज़्यादा sentence writing करनी पड़ती है, इसलिए इस editing style की उपयोगिता कुछ कम लगती है
mc-hide-unmatched-linescommand है, जिससे सिर्फ cursor वाली lines दिखाई जा सकती हैंmulti-cursor छोटे और सरल edits के लिए अच्छा है, लेकिन जटिल संशोधनों के लिए batch editing tools ज़्यादा प्रभावी हैं
स्क्रीन के बाहर वाले cursors की समस्या हल करने के लिए बनाया गया था