11 पॉइंट द्वारा GN⁺ 2024-08-19 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • हर 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 टिप्पणियां

 
GN⁺ 2024-08-19
Hacker News राय
  • शुरुआत में Zed पसंद आया था, लेकिन सहयोग और AI फीचर्स पर फोकस करने के कारण इसकी बुनियादी एडिटर क्षमताएँ कमजोर रह गईं, इसलिए यह कम उपयोगी लगने लगा

    • अभी के लिए पुराने एडिटर और IDE पर वापस लौट गया/गई हूँ, और बाद में फिर से आज़माने का इरादा है
  • Helix इस्तेमाल करने की वजह यह है कि VSCodium से Vim या Neovim पर जाने की कोशिश की थी, लेकिन plugin सेटअप करना मुश्किल था

    • Helix तुरंत काम करने लगा, इसलिए वही इस्तेमाल कर रहा/रही हूँ, और इसके key bindings सहज लगे तथा Vim key bindings भी सीख सका/सकी
    • डिफ़ॉल्ट color theme थोड़ा चौंकाने वाला है
  • हाल ही में Vim से Zed पर स्विच किया है, और Zed कई मायनों में शानदार लगता है

    • लेकिन बुनियादी फीचर्स में काफी bugs हैं, इसलिए AI integration जैसी चीज़ों से पहले इन्हीं पर प्राथमिकता दी जानी चाहिए
  • Zed इस्तेमाल करते समय इसकी बहुत तेज़ और साफ़-सुथरी UI पसंद आती है

    • अगर Git integration और remote support बेहतर हो जाएँ, तो पूरी तरह स्विच किया जा सकता है
  • 6 महीने पहले VSCode से Zed पर स्विच किया था, लेकिन हाल ही में फिर Neovim पर लौट आया/आई हूँ

    • Zed का Vim integration वाला तरीका पसंद था, लेकिन बुनियादी फीचर्स की कमी और bugs की वजह से Neovim पर वापस जाना पड़ा
    • Zed जब और mature हो जाएगा, तो वापस आने की इच्छा है
  • उम्मीद है कि Zed और polished तथा stable बनेगा

    • तब तक Sublime Text 4 इस्तेमाल कर रहा/रही हूँ, जिसकी performance शानदार है, और LSP extension तथा Sublime Merge, VSCode की कमियों को पूरा कर देते हैं
  • क्या आपने Neovim distributions आज़माए हैं?

    • LazyVim, AstroVim, NvChad जैसे distributions में ज़रूरी plugins और integrations पहले से सेट होते हैं
  • अगर VSCode में असली Neovim चाहिए, तो vscode-neovim देखने की सलाह है

    • इससे असली VIM और VSCode के सभी फीचर्स साथ में इस्तेमाल किए जा सकते हैं
  • Kakoune और Helix में दिलचस्पी बढ़ने पर VSCode के लिए एक modal editing extension लिखा

    • यह VIM की ज़्यादातर क्षमताओं को सपोर्ट करता है, और AST-आधारित नए actions और modes भी जोड़ता है
    • इस पर एक blog post लिखने की योजना है
  • macOS पर Zed को आज़माते समय यह तेज़ और फीचर-समृद्ध एडिटर लगा

    • लेकिन *nix सिस्टम में यह vi/vim जितना सर्वव्यापी नहीं है
    • अलग-अलग इंफ्रास्ट्रक्चर और deployment constraints को देखते हुए, सर्वव्यापी एडिटर पर फोकस करना ज़्यादा आसान है
    • Zed, vi/vim का विकल्प बन सकता है, लेकिन ज़्यादातर vi/vim उपयोगकर्ताओं के पूरी तरह स्विच करने की संभावना कम है
 
taking 2024-08-19

मैं भी हाल ही में Helix पर आ गया हूँ.
Hacker News की राय की तरह, मैं अपने पुराने NeoVim में भी सभी plugins का उपयोग नहीं कर रहा था, इसलिए helix को टेस्ट किया और तुरंत उसी पर शिफ्ट हो गया. इसकी color theme वाकई काफ़ी चौंकाने वाली है

 
roxie 2024-08-26

क्या आपका मतलब है कि डिफ़ॉल्ट थीम बहुत ज़्यादा बैंगनी है, इसलिए आपको वह पसंद नहीं है? :eyes: