- 20 साल से Vim इस्तेमाल कर रहे एक डेवलपर ने Helix एडिटर पर स्विच करने के बाद 3 महीनों के उपयोग का अनुभव साझा किया
- Helix की सबसे बड़ी खूबी यह है कि यह बिना जटिल सेटअप के language server (LSP) को डिफ़ॉल्ट रूप से सपोर्ट करता है
- खास तौर पर Vim/Neovim की तुलना में इसकी बेहतर search functionality और multi-cursor जैसी सुविधाएँ कई फ़ाइलों में context समझने और bulk editing को आसान बनाती हैं
- key दबाने पर दिखने वाला quick reference popup शॉर्टकट भूलने से बचाता है और उनका उपयोग आसान बनाता है
- Markdown list auto-generation की कमी, persistent undo का न होना, और हफ्ते में लगभग एक बार crash जैसे कुछ असुविधाजनक पहलू हैं, फिर भी कुल मिलाकर उपयोग का अनुभव संतोषजनक रहा
- 20 साल में बनी Vim muscle memory को फिर से सीखना उम्मीद से आसान रहा, और Vim के तरीके को थोपने के बजाय "Helix तरीका" सीखना कहीं अधिक प्रभावी साबित हुआ
Helix पर स्विच करने की वजह
- Helix इस्तेमाल करने का मुख्य कारण language server integration को आसानी से उपयोग करना था
- Vim/Neovim में language server setup जटिल था, जबकि Helix में बिना अलग configuration के तुरंत definition पर जाना या symbol rename करना संभव है
- पहले बहुत सारे plugins और config files संभालने पड़ते थे, लेकिन Helix के built-in support से यह बोझ कम हो गया
Helix के मुख्य फायदे
- search system की श्रेष्ठता
- पूरे repository में string search करने पर परिणाम preview window में दिखते हैं, जिससे matching files को scroll करते हुए आसपास का code भी साथ में देखा जा सकता है
- Vim के ripgrep plugin से अलग, यहाँ परिणामों का context ज़्यादा समृद्ध है, इसलिए तेज़ी से निर्णय लिया जा सकता है
- तेज़ shortcut reference feature
g key दबाने पर उपलब्ध navigation commands की सूची help popup में दिखाई देती है, जो काफ़ी सहज है
- कम इस्तेमाल होने वाले shortcuts भी आसानी से देखे जा सकते हैं, इसलिए learning curve बहुत कठिन नहीं लगता
Vim और Helix के बीच अंतर
- mark feature में
ma, 'a की जगह Ctrl+O, Ctrl+I से cursor movement history को ट्रैक किया जाता है
- macro की जगह ज़्यादातर multi-cursor editing का उपयोग किया जाता है
- दस्तावेज़ में bulk changes के लिए
% से select all → s से regex selection → फिर ज़रूरी multi-editing की जाती है
- हर बार macro लिखने की तुलना में multi-cursor कहीं ज़्यादा सुविधाजनक है
- tab की जगह
space + b से buffer switcher का उपयोग कर तेज़ी से स्विच किया जा सकता है
Helix की असुविधाएँ
- text reflow feature, Vim के
gq जितना प्रभावी नहीं है
- lists के साथ इसकी compatibility कमज़ोर है
- Markdown list auto-generation का सपोर्ट नहीं है
- list item के अंत में "Enter" दबाने पर list आगे जारी नहीं रहती
- bullet lists के लिए आंशिक workaround है, लेकिन numbered lists के लिए नहीं
- persistent undo feature अभी implement नहीं हुआ है
- Vim में
undofile के ज़रिए editor बंद होने के बाद भी changes undo किए जा सकते थे, लेकिन Helix में यह सुविधा अभी नहीं है
- file auto-reload का सपोर्ट नहीं है
- disk पर file बदलने के बाद
:reload-all (:ra<tab>) को manually चलाना पड़ता है
- कभी-कभी crash हो जाता है
- लगभग हफ्ते में एक बार, और संभव है कि इसका संबंध ज़्यादा Markdown editing से हो
- दोबारा खोल लेने पर काम हो जाता है, इसलिए यह बहुत बड़ी समस्या नहीं है
- इसके बावजूद लेखक Helix का उपयोग जारी रखे हुए है
स्विच करने की प्रक्रिया और सीखने का अनुभव
- 20 साल की Vim muscle memory को फिर से ढालना बहुत मुश्किल होगा, ऐसी चिंता थी
- छुट्टियों के दौरान एक side project में Helix का इस्तेमाल शुरू किया, और 1–2 हफ्तों बाद यह अब उलझन भरा नहीं लगा
- शुरुआत में Vim-जैसे key bindings को ज़बरदस्ती लागू करने की कोशिश की गई, लेकिन वह सफल नहीं हुई; इसके बजाय "Helix तरीका" सीखना कहीं आसान साबित हुआ
- फिर भी कुछ हिस्से अब भी भ्रमित करते हैं
- Vim का
w और Helix का w, "word" की परिभाषा में अलग हैं (Helix में शब्द के बाद की space भी शामिल होती है, Vim में नहीं)
terminal-आधारित editing environment
- कई सालों तक मुख्य रूप से GUI version के vim/neovim का उपयोग किया गया था, इसलिए terminal में editor इस्तेमाल करना थोड़ा adaptation मांगता था
- अंततः चुना गया workflow
- हर project के लिए अलग terminal window का उपयोग, और उस window के सभी tabs में एक ही working directory रहती है
- Helix tab को terminal window के पहले tab में रखा जाता है
- कई projects को parallel संभालना सुविधाजनक है, और यह पहले वाले workflow से भी बेहतर हो सकता है
configuration
- जहाँ Neovim configuration सैकड़ों लाइनों की थी, वहीं यहाँ बहुत सरल configuration रखी गई
- मुख्य रूप से सिर्फ 4 keyboard shortcuts सेट किए गए
- मुख्य configuration बिंदु
- theme:
solarized_light
- default yank register को
+ पर सेट किया गया ताकि system clipboard के साथ sync हो सके
# को comment toggle shortcut के रूप में सेट किया गया (default Ctrl+C पसंद नहीं था)
^ और $ को line की शुरुआत/अंत पर जाने के लिए remap किया गया (कोई दूसरा तरीका सीखना नहीं चाहते थे)
<space>l को :reflow पर सेट किया गया (क्योंकि बहुत text लिखना होता है, इसलिए reflow अक्सर चाहिए; Vim का gq shortcut याद आता था)
- अलग
languages.toml configuration file में language-specific preferences सेट की गईं
- Python के लिए: black formatter, pyright language server, और auto-format disabled
निष्कर्ष: 3 महीनों की छाप
- 3 महीने बहुत लंबा समय नहीं है, और कभी Vim पर वापस लौटने की संभावना अब भी है
- पहले nix पर स्विच करके 8 महीने बाद Homebrew पर लौटने का अनुभव रहा है (हालाँकि एक server management के लिए अब भी NixOS का संतोषजनक उपयोग हो रहा है)
- Helix अभी पूरी तरह परिपक्व नहीं है, लेकिन "zero-config editor" की दिशा स्पष्ट है
- इसकी सादगी और built-in features की वजह से इसमें लंबे समय में Vim का विकल्प बनने की संभावना है
- हालांकि इसे लगातार इस्तेमाल किया जाएगा या नहीं, यह आगे stability improvements और feature expansion पर निर्भर करेगा
2 टिप्पणियां
Hacker News राय
मैं लंबे समय से Vim/Neovim इस्तेमाल करता रहा हूँ, खुद custom config भी बनाया और तैयार configs भी इस्तेमाल किए, और Vim मुझे सच में बहुत पसंद है, फिर भी Helix का बिना अलग setup के तुरंत उपयोग के लिए तैयार होना बेहद आकर्षक है
लेकिन Helix का config खुद मुझे काफ़ी primitive लगता है, इसलिए कभी-कभी लगता है कि Vim के शुरुआती कुछ साल ही ठीक से इस्तेमाल किए होते तो Helix जैसा environment वहीं बना लिया होता, और फिर यह भी कह पाता कि अब config hell नहीं रहा
यह बहुत अच्छा लगता है कि help popup बता देता है कि कहाँ जाना है या कौन-सा keybind दबाना है; मैं आमतौर पर "go to definition" या "go to references" जैसे features बार-बार नहीं इस्तेमाल करता, इसलिए shortcuts भूल जाना आसान है; ऐसे context popup अगर व्यापक रूप से अपनाए जाएँ तो बहुत अच्छा होगा, और अगर वे सिर्फ तब smart तरीके से दिखें जब मैं इनपुट देने में झिझकूँ, तो और भी उपयोगी होंगे
मैं 20 साल से Vim/Neovim इस्तेमाल कर रहा हूँ, लेकिन सिर्फ पिछले 6 महीनों में ही
which-keyplugin लगाया, और वह बहुत उपयोगी साबित हुआwhich-key.nvim GitHub
मैं बार-बार अपनी मुख्य language server setup (जैसे "go to definition" काम करे) ठीक से खड़ा करने की कोशिश करता रहा, लेकिन Vim या Neovim में आरामदायक environment बनाना बहुत कठिन लगा
Vim config और उससे जुड़ी dependencies को साथ ले जाने का झंझट नहीं रहता; dev environment कहीं ज़्यादा portable लगता है (हालाँकि complex Vim setup जितना नहीं, बल्कि थोड़ा ज़्यादा basic)
खासकर उस article में इसका विवरण और screenshots देखकर मुझे यह feature बहुत तीव्रता से चाहिए लगा
अगर popup smart तरीके से timeout जैसी conditions पर दिखे, तो ज़रूरत न होने पर बाधा नहीं बनेगा और सिर्फ झिझक के समय अपने-आप मार्गदर्शन देगा
पहले मैं मुख्य रूप से neovim और VS Code इस्तेमाल करता था, लेकिन Helix एक खास खाली जगह भरता है
neovim को configure करना या vim पर टिके रहना झंझट लग रहा था, इसलिए VS Code और nvim के बीच कुछ चाहिए था, और Helix बिल्कुल वही निकला
अगर मैं vimscript का उस्ताद होता तो शायद फैसला अलग होता, लेकिन मैं नहीं हूँ, इसलिए यह मेरे लिए बिल्कुल सही है
मैं नहीं चाहता कि Helix और modular बने या UNIX-स्टाइल में ही ढलने की कोशिश करे; जैसा है वैसा ही अच्छा है
पहले से ही कई तरह का tool ecosystem मौजूद है, और Claude Code के साथ भी integration करके इस्तेमाल किया जा सकता है (buffer refresh से नए edits लागू हो जाते हैं)
यह सबसे बेहतरीन editors में से एक है, इसलिए मैंने हर महीने project support भी शुरू कर दिया है
अगर आगे किसी सुधार की उम्मीद करूँ, तो editor के भीतर image या formula rendering सबसे ज़्यादा मिस होती है; उम्मीद है यह Kitty terminal protocol या sixel जैसे plugin से संभव होगा
markdown files में notes/blog लिखते समय यह खास तौर पर बहुत उपयोगी होगा
Helix के लिए शुभकामनाएँ
VSCode या (neo)vim में कई जगहों से plugins लाने पड़ते हैं, इसलिए हमेशा हल्की बेचैनी रहती थी
मैं Lua developer नहीं हूँ, फिर भी LLM nvim config सेट करने या बदलने में बहुत मदद करता है
helix पर आने की सबसे बड़ी वजह यह थी कि इसका LSP/lint setup बहुत अच्छा है
telescope+rgजैसा file picker से जुड़ा fuzzy search: PR #11285HEAD में पहले ही merge हो चुके features पर कुछ बातें साझा करूँ —
built-in fuzzy search आधारित file picker पहले से मौजूद होने की वजह से सामान्य file explorer बहुत ज़्यादा अतिरिक्त utility नहीं देता
Helix के लिए vim keybind plugin भी इस्तेमाल किया, लेकिन वह सिर्फ आंशिक रूप से मेल खाता था, जिससे निराशा और बढ़ी
templ,sqlcवगैरह) file बदलते हैं, तो Helix उसे अपने-आप detect करके reload नहीं करताजानना चाहूँगा कि अनुभवी Helix users इसे कैसे संभालते हैं
Vim/Neovim में language server को आराम से configure करना इतना बड़ा काम बन गया था कि अंततः Helix पर आ गया
लेकिन पिछले 5 सालों में Neovim के लिए battery-included जैसी distributions आ गई हैं, जिनसे setup बहुत आसान हो गया है
मैं इस बात से सहमत हूँ कि बहुत-से developers editor debugging पर समय नहीं लगाना चाहते; शायद इसी वजह से JetBrains लोकप्रिय है
लेकिन 20 साल के Neovim user का ठीक से LSP environment कभी न बना पाना थोड़ा अविश्वसनीय लगता है; यह लेखक का ईमानदार अनुभव है या नहीं, इस पर संदेह होता है
आख़िर में पूरा IDE इस्तेमाल करना ही आसान लगा, इसलिए install और setup को लेकर हमेशा हिचकिचाहट रही
इसलिए लेखक का अनुभव relatable लगा
मैं भी barebones setup ही रखता हूँ, फिर भी यह कठिन नहीं था, और Lua vimscript से कहीं ज़्यादा ergonomic लगता है
यही वजह है कि मैं ALE जैसे tools इस्तेमाल करता रहता हूँ
Helix इस्तेमाल करने वालों के लिए भी मेरी शुभकामनाएँ
दूसरे editors इस्तेमाल किए जा सकते हैं, लेकिन लगभग सारी debugging और setup vscode-केंद्रित होती है, इसलिए उसे recommend करने का माहौल बन जाता है
Neovim+treesitter+LSP setup भी अब काफ़ी smooth है; पहले कठिन रहा हो, पर आजकल यह बड़ा issue नहीं है
अगर Helix पर जाने की वजह LSP है, तो थोड़ा सवाल उठता है; शायद लेखक को LSP से ही असली शिकायत हो
noun-verb शैली की एक कमी यह है कि repeat command (
.) जैसी चीज़ मुमकिन नहीं होतीVim में
dd..,dap..जैसी repeated actions संभव हैं, लेकिन noun-verb मॉडल में यह कठिन हैऔर मूल समस्या यह भी है कि keys कम पड़ने लगती हैं
बहुत-सी basic operations के लिए Alt key इस्तेमाल करनी पड़ती है, और vim की तरह normal/visual/insert modes भी नहीं हैं; सिर्फ visual/insert हैं
motion और object का भेद भी इतना स्पष्ट नहीं है, इसलिए key mapping मुश्किल हो जाती है और key shortage जैसी स्थिति बनती है
असल में कोड लिखते समय जिस तरह की सोच चाहिए, उससे यह ज़्यादा मेल खाती लगती है
mini.nvimहैयह
echasnovskiद्वारा बनाया गया plugins का संग्रह है, जो तरह-तरह की ज़रूरतों के साथ consistency और documentation भी देता हैnvim 0.12 (nightly) से built-in plugin manager (
vim.pack) के साथ सिर्फmini.nvimऔरlspconfiginstall करना काफ़ी हैmini.nvimके बारे में जानना है, उनके लिएmini.nvim आधिकारिक साइट
mini.nvim GitHub repository
lspजैसे "advanced" editor tools को पूरी तरह छोड़ देना कितना मुक्त करने वाला अनुभव है, इस पर हैरानी खत्म नहीं होतीमैं neovim को plugins, autocomplete, यहाँ तक कि syntax highlighting के बिना इस्तेमाल कर रहा हूँ
मुझे लगता है कि इस तरीके की self-discipline बेहतर code लिखने में मदद करती है
यह सबके लिए नहीं होगा, लेकिन एक बार ज़रूर आज़माना चाहिए
मैं code action या goto definition भी इस्तेमाल नहीं करता, real-time errors कभी-कभी देखते हैं, लेकिन compiler इतना तेज़ है कि उसका भी बहुत मतलब नहीं रह जाता
कभी-कभी LSP बंद कर देने का मन करता है; 20 साल पहले की तुलना में LSP ने मेरी programming ability को कोई चमत्कारिक बढ़त दी हो, ऐसा नहीं लगता
syntax highlighting के मामले में भी, मुझे लगता है कि बहुत रंग-बिरंगे themes ध्यान भटकाते हैं और खास अर्थ नहीं देते
मैं single-color या दो-रंग वाले themes पसंद करता हूँ, और variable name तथा function name के अलग रंग भी ज़रूरी नहीं लगते
फिर भी सवाल है कि सब कुछ याद रखते-रखते थकान जमा नहीं होती, या क्या यह तरीका सच में बेहतर code बनाता है
रंग code में mistakes या errors को आँखों के सामने अधिक स्पष्ट करते हैं, और code navigation को भी तेज़ बनाते हैं; यह जानकारी की एक अतिरिक्त परत है
हालाँकि इतना extreme नहीं जाता; syntax highlighting और LSP के syntax error feedback तक ही रखता हूँ
autocomplete या documentation auto-linking का उपयोग नहीं करता
nic-revsद्वारा बनाया गया Helix docs का renewed version सुझाऊँगाhelix-editor.vercel.app
यह official docs से कहीं ज़्यादा पढ़ने योग्य है, और इसमें tips/tricks भी बहुत हैं, जिनसे efficient editing methods, keybinds, और Helix की कुछ कमियाँ (जैसे built-in terminal का न होना) कम की जा सकती हैं
अगर आप लंबे समय से vim user हैं, तो
kickstart(खासकर इसका modular fork kickstart-modular.nvim) सुझाऊँगाkickstart.nvim
यह एक बहुत बढ़िया minimal starting point है
हालाँकि file बड़ी है, इसलिए मैं उसे fold markers के साथ sections में समेटकर manage करना आसान बनाता हूँ
LSP, plugin सेटिंग आदि की सहजता की वजह से कभी-कभी helix में दिलचस्पी होती है, लेकिन हाथ vi/vim के इतने आदी हो चुके हैं कि यह आसान नहीं है।