Neovim छोड़कर Zed पर जा रहा हूँ
(stevedylan.dev)- हर developer की अपनी एक text editor यात्रा होती है, और वह किसी न किसी प्रक्रिया से गुजरकर अपने मौजूदा टूल तक पहुँचता है। ऐसी कहानियाँ दिलचस्प होती हैं, और development tools व उनमें लगे प्रयास के प्रति गहरी सराहना पैदा करती हैं
- यह लेख development tools में रुचि रखने वाले लोगों के साथ अपनी यात्रा साझा करने और उन्हें नए tools आज़माने के लिए प्रोत्साहित करने के लिए लिखा गया है
Text editor यात्रा की शुरुआत
- Atom का पहली बार इस्तेमाल करते हुए HTML, CSS, Javascript की बुनियाद सीखना शुरू किया
- फिर VSCode पर स्विच किया, लेकिन उस समय पत्नी को photo editing के लिए laptop इस्तेमाल करना होता था, और जो MacBook मैंने इस्तेमाल किया उसमें VSCode के Electron build की वजह से performance गिर जाती थी
- इसी दौरान संयोग से Vim मिला, और keyboard-केंद्रित workflow व उसकी speed से प्रभावित होकर Vim सीखना शुरू किया
- शुरुआत में Vim RC को बदलते हुए इस्तेमाल किया, और बाद में chris@machine के videos के जरिए Neovim के बारे में जाना
- कई सालों तक Neovim का इस्तेमाल करते हुए बहुत high productivity मिली। configuration को fine-tune करने में काफी समय लगाया, लेकिन आखिरकार ऐसी स्थिति आ गई जहाँ config में लगभग कोई बदलाव करने की जरूरत नहीं रही
बदलाव
- लेकिन समय के साथ configuration files को लगातार सरल बनाना पड़ रहा था, और बुनियादी features बनाए रखने के लिए भी काफी मेहनत करनी पड़ती थी
- कभी-कभी plugin update करते ही Neovim में दिक्कत आ जाती, और काम रोककर समस्या सुलझाने में समय लगाना पड़ता। इसे ठीक करने के लिए config को सरल बनाने की कोशिश की, लेकिन बुनियादी functionality बनाए रखने का प्रयास फिर भी करना पड़ता था
- खासकर बड़े codebases पर काम करते समय Neovim धीमा पड़ जाता था और screen freeze जैसी समस्याएँ आती थीं, जिससे productivity प्रभावित होती थी
- दूसरे terminal emulators (Alacritty, Wezterm आदि) पर जाने की कोशिश की, लेकिन कोई बड़ा फर्क नहीं पड़ा
- पहले Zed के बारे में सुना था, लेकिन terminal-based न होने की वजह से इस्तेमाल बंद कर दिया था। फिर Zed की speed के बारे में अच्छी बातें सुनकर दोबारा आज़माने का फैसला किया
- 2 महीने तक हर दिन इस्तेमाल करने के बाद, Zed ने बेहद संतोषजनक अनुभव दिया और आगे भी इसे इस्तेमाल करने का इरादा है। Neovim पर लौटने का कोई विचार नहीं है
Zed इस्तेमाल करने का अनुभव
- मैंने Zed क्यों चुना, इसे समझाने के लिए अब तक के अपने सामान्य अनुभव और इसे अपने हिसाब से कैसे ढाला, इस पर बात करना चाहता हूँ
सब कुछ "बस ठीक से काम करता है"
- Zed की सबसे बड़ी खूबियों में से एक यह है कि "सब कुछ बस ठीक से काम करता है"
- खासकर Language Server Protocol (LSP) जैसे features को Neovim में सेट करने में काफी समय लगता है, लेकिन Zed में यह default रूप से अच्छे से काम करता है
- Zed में "definition देखना", "definition पर जाना", "code actions" जैसे key bindings पहले से मिलते हैं, और यह ज़्यादातर भाषाओं को support करता है, इसलिए समस्या नहीं आती
speed
- Zed चुनने का एक बड़ा कारण उसकी speed थी, और नतीजा बहुत संतोषजनक रहा
- बड़े codebases में भी यह बिना lag के तेज़ी से चलता है, और अब तक कोई performance issue नहीं मिला
- हो सकता है Neovim को और तेज़ बनाया जा सके, लेकिन productivity बढ़ाने के लिए समय गंवाने से बेहतर Zed इस्तेमाल करना है
Vim mode
- Neovim user होने के नाते, VSCode के Vim plugin के unstable और bug-filled होने से निराशा हुई थी
- Zed का Vim mode developers द्वारा सीधे बनाया गया feature है, यह काफी stable है और अहम features को अच्छी तरह support करता है
- key binding संरचना बहुत flexible है, और इसमें वे खूबियाँ हैं जो Vim users को पसंद आएँगी
AI features
- Zed AI features भी देता है, और इसमें default रूप से Copilot built-in है
- OpenAI, Ollama, Anthropic जैसे AI models को API के जरिए इस्तेमाल किया जा सकता है
- code के किसी हिस्से को चुनकर
ctrl-enterसे AI assistant बुलाने और inline code लिखवाने वाला feature भी उपयोगी है
Zed ≠ Neovim
- Zed, Neovim का पूरी तरह replacement नहीं है। Neovim की बड़ी ताकत यह है कि वह terminal में native रूप से मौजूद है
- साधारण file edits के लिए Neovim ज़्यादा सुविधाजनक है, लेकिन लंबे sessions या projects के लिए Zed बिल्कुल उपयुक्त है
Neovim users के लिए Zed को customize करना
Zed, Neovim का पूरा replacement नहीं है, लेकिन Neovim/Vim users को परिचित माहौल देने के लिए कई छोटे settings के जरिए अनुभव को काफी बेहतर बनाया जा सकता है
Vim mode और key bindings
- सबसे पहले Vim mode को enable करना चाहिए। Zed, Vim mode documentation page देता है, जहाँ basic Vim bindings और अतिरिक्त settings का तरीका बताया गया है
- Zed की बड़ी ताकतों में से एक यह है कि Vim mode के हिसाब से key bindings सेट की जा सकती हैं। उदाहरण के लिए, "Normal" mode और "Visual" mode में अलग key bindings लागू की जा सकती हैं
[
{
"context": "Editor && VimControl && !VimWaiting && !menu",
"bindings": {
"space b": "editor::ToggleGitBlame",
"shift-k": "editor::Hover",
"space l f": "editor::Format",
"space d": "diagnostics::Deploy",
"space f f": "file_finder::Toggle",
"space o": "tab_switcher::Toggle",
"space e": "workspace::ToggleLeftDock",
"space /": "workspace::NewSearch",
"n": "search::SelectNextMatch",
"shift-n": "search::SelectPrevMatch",
"space t": "workspace::NewCenterTerminal",
"g b": "editor::ToggleComments",
"+ +": "workspace::Save",
"space c": "pane::CloseActiveItem"
}
},
{
"context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",
"bindings": {
"shift-j": "editor::MoveLineDown",
"shift-k": "editor::MoveLineUp"
}
},
]
- साथ ही, Zed में panels के बीच switch करने के लिए key bindings सेट करके Neovim जैसा workflow बनाया जा सकता है
[
{
"context": "Dock || Terminal || Editor",
"bindings": {
"ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],
"ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],
"ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],
"ctrl-j": ["workspace::ActivatePaneInDirection", "Down"]
}
},
]
- जरूरत के मुताबिक settings समायोजित करने के लिए basic Vim keymap को reference के रूप में देखना भी अच्छा रहेगा। basic Vim keymap इस बात का उपयोगी संदर्भ है कि Zed क्या support करता है और कहाँ बदलाव किए जा सकते हैं
सरल UI
- Zed पहले से ही minimal UI देता है, लेकिन अगर आप Neovim config जैसी UI पसंद करते हैं, तो tab bar, scroll bar, toolbar आदि को disable किया जा सकता है
{
"cursor_blink": false,
"relative_line_numbers": true,
"scrollbar": {
"show": "never"
},
"vertical_scroll_margin": 0,
"tab_bar": {
"show": false
},
"toolbar": {
"breadcrumbs": true,
"quick_actions": false
},
}
plugin alternatives
- Zed में Telescope जैसे feature के विकल्प के रूप में files या buffers के बीच navigation के लिए tab switcher (Toggle) इस्तेमाल किया जा सकता है
{
"context": "Editor && VimControl && !VimWaiting && !menu",
"bindings": {
"space o": "tab_switcher::Toggle",
}
}
- project-wide search, Telescope का विकल्प है, जहाँ multi-buffer view के जरिए results देखे जा सकते हैं और आसानी से navigate किया जा सकता है
- terminal toggle, VSCode जैसा है, लेकिन Zed में main editing view से buffer के रूप में terminal खोलने का option भी है
{
"context": "Editor && VimControl && !VimWaiting && !menu",
"bindings": {
"space t": "workspace::NewCenterTerminal",
}
}
- यह Tmux और project switching functionality को पूरी तरह replace नहीं कर सकता, लेकिन Zed का project switching feature यह काम काफी अच्छी तरह कर देता है
{
"context": "Workspace",
"bindings": {
"cmd-k": [
"projects::OpenRecent",
{
"create_new_window": false
}
]
}
}
क्या आपको Zed इस्तेमाल करना चाहिए?
- अगर आप सोच रहे हैं कि Zed आज़माना चाहिए या नहीं, तो इसे कुछ दिनों तक इस्तेमाल करके देखना चाहिए
- Zed एक अलग और सक्षम text editor है, और आखिरकार वही tool महत्वपूर्ण है जो आपकी productivity बढ़ाए
- वह VS Code, JetBrains, या EMacs भी हो सकता है
- अपने लिए सबसे उपयुक्त tool चुनें, लेकिन नई चीज़ें आज़माने के मामले में बहुत ज़िद्दी न बनें
3 टिप्पणियां
Hacker News राय
शुरुआत में Zed पसंद आया था, लेकिन सहयोग और AI फीचर्स पर फोकस करने के कारण इसकी बुनियादी एडिटर क्षमताएँ कमजोर रह गईं, इसलिए यह कम उपयोगी लगने लगा
Helix इस्तेमाल करने की वजह यह है कि VSCodium से Vim या Neovim पर जाने की कोशिश की थी, लेकिन plugin सेटअप करना मुश्किल था
हाल ही में Vim से Zed पर स्विच किया है, और Zed कई मायनों में शानदार लगता है
Zed इस्तेमाल करते समय इसकी बहुत तेज़ और साफ़-सुथरी UI पसंद आती है
6 महीने पहले VSCode से Zed पर स्विच किया था, लेकिन हाल ही में फिर Neovim पर लौट आया/आई हूँ
उम्मीद है कि Zed और polished तथा stable बनेगा
क्या आपने Neovim distributions आज़माए हैं?
अगर VSCode में असली Neovim चाहिए, तो
vscode-neovimदेखने की सलाह हैKakoune और Helix में दिलचस्पी बढ़ने पर VSCode के लिए एक modal editing extension लिखा
macOS पर Zed को आज़माते समय यह तेज़ और फीचर-समृद्ध एडिटर लगा
मैं भी हाल ही में Helix पर आ गया हूँ.
Hacker News की राय की तरह, मैं अपने पुराने NeoVim में भी सभी plugins का उपयोग नहीं कर रहा था, इसलिए helix को टेस्ट किया और तुरंत उसी पर शिफ्ट हो गया. इसकी color theme वाकई काफ़ी चौंकाने वाली है
क्या आपका मतलब है कि डिफ़ॉल्ट थीम बहुत ज़्यादा बैंगनी है, इसलिए आपको वह पसंद नहीं है? :eyes: