"Neovim से productivity में quantum jump" प्रस्तुति सामग्री
(docs.google.com)रिकॉर्ड किया गया वीडियो : https://www.youtube.com/watch?v=XYQnyJVGk-4&t=1s
परिशिष्ट : https://kodingwarrior.github.io/wiki/appendix/excelcon-2nd/
2023-06-03 को दूसरे ExcelCon में मैंने "Neovim से productivity में quantum jump" विषय पर प्रस्तुति दी थी, और देर से ही सही, इसे यहाँ भी साझा कर रहा हूँ.
प्रस्तुति का सारांश
सिर्फ Neovim का उपयोग करने भर से productivity कैसे बढ़ी?
- VSCode, Notion, RoamResearch, GitKraken आदि को बारी-बारी से इस्तेमाल करने के बजाय Neovim में एकीकृत करने से अनावश्यक cognitive load कम हुआ
- macOS और archilinux को बारी-बारी से इस्तेमाल करने के बावजूद, हर जगह एकसमान development environment बनाए रखा जा सकता है (dotfiles)
- डिवाइस की performance को लेकर चिंता करना बंद हो गया
- Before : AndroidStudio, VSCode, RoamResearch आदि कई applications खोलकर काम करने के कारण बार-बार thrashing होता था. Source code टाइप करने में भी बहुत समय लगता था / After : हवाई जहाज़ के टेकऑफ़ जैसी आवाज़ भी सुनाई नहीं देती. Memory usage भी काफ़ी कम है.
productivity बढ़ाने के लिए 3 step
- productivity में सुधार की शुरुआत इस meta-cognition से होनी चाहिए कि मैं किन कामों में अनावश्यक रूप से समय खर्च कर रहा हूँ.
- सबसे पहले, मैं जिन tools का उपयोग करता हूँ उनसे परिचित हो जाऊँ.
- देखें कि मैं कौन-से काम बार-बार करता हूँ, और क्या उन दोहराए जाने वाले कामों में लगने वाला समय कम करने के लिए कोई उपयोगी तरीका है. (ex. template, plugin, macro, snippet, …)
- चरण 2 की प्रक्रिया में अपने लिए उपयुक्त चीज़ चुनकर उसे आदत में शामिल करें.
जो बातें सीमित समय के कारण समझा नहीं सका, उन्हें मैंने ब्लॉग पर परिशिष्ट के रूप में संकलित किया है.
- Neovim शुरुआती उपयोगकर्ताओं के लिए starter kit, जिनमें AstroNvim, LazyNvim शामिल हैं
- Neovim के लिए विशेष tree-sitter plugin
- auto-completion सुविधा देने वाला nvim-cmp
मैं उन लोगों के लिए Discord community (vim.kr) भी चला रहा हूँ जो Vim को अच्छी तरह इस्तेमाल करना चाहते हैं, इसलिए कृपया इसमें रुचि दिखाएँ :)
11 टिप्पणियां
https://github.com/github/copilot.vim
मैं vsc copilot का बहुत अच्छा उपयोग कर रहा हूँ, इसलिए खोजकर देखा तो Neovim Copilot Plugin भी है। इसे आज़माने को लेकर सोच रहा था, लेकिन अब लगता है एक बार Neovim भी आज़माना चाहिए।
मैंने अपनी पहली नौकरी बदलने वाली कंपनी में देखा कि वे vim + tmux Linux server पर remote से जुड़कर development करते थे।
इस environment में remote pair programming संभव था, इसलिए यह काफ़ी प्रभावशाली लगा। (code changes तुरंत reflect होते थे, और terminal भी share होता था)
remote server पर मौजूद dotfiles(
.vimrc,.bashrc) की वजह से मैंने vim को सच में इस्तेमाल करना शुरू किया।यह याद है कि sample होने की वजह से शुरू करना आसान लगा था, इसलिए main text में dotfile की बात से मैं सहमत हूँ haha
मैं भी NVIm से vscode पर आया था, लेकिन यह लेख देखकर फिर से वापस जाने का मन हो रहा है. haha
टेक्स्ट एडिटर की बात हो रही है, यह सच में खुशी की बात है। आखिरकार जब यह स्वीकार कर लेते हैं कि अंत में हर काम टेक्स्ट को संभालने का ही है, तो अपने टेक्स्ट environment पर ध्यान देना बोझ नहीं लगता। मैंने पिछले साल से Emacs इस्तेमाल करना शुरू किया, और सच में सब कुछ कीबोर्ड से करना संभव हो गया। जैसा आपने 0वें बिंदु में कहा, इससे बहुत सा अनावश्यक समय कम हो गया। vim.kr खूब फले-फूले!!
वीडियो में शायद मुझसे छूट गया हो, इसलिए पूछ रहा/रही हूँ। आपने जो कहा कि आपने Notion को neovim से replace कर दिया, उसका मतलब क्या यह है कि आपने neovim में wiki system बनाकर वही इस्तेमाल किया, या फिर इसका मतलब यह है कि Notion को neovim में operate करने के लिए कोई library है? मेरे सवाल का आशय यह है कि क्या कंपनी में इस्तेमाल होने वाला Notion भी neovim से operate किया जा सकता है?
बिल्कुल, मैंने Notion को इस तरह ऑपरेट नहीं किया था।
अगर Notion API सपोर्ट करता हो, तो सैद्धांतिक रूप से उसे neovim से ऑपरेट करना संभव हो सकता है, लेकिन अभी तक मैंने ऐसा कोई प्रयास नहीं देखा है.
कंपनी में इस्तेमाल होने वाले Notion को neovim से ऑपरेट किया जा सकता है या नहीं, यह शायद policy से जुड़ा मामला होगा, इसलिए पक्के तौर पर कहना मुश्किल है।
Notion API उपलब्ध कराता है, लेकिन व्यवहारिक रूप से कई तरह की सीमाएँ सामने आ रही थीं, इसलिए इम्प्लीमेंटेशन रुका हुआ था। मैं सोच रहा था कि क्या कोई अच्छा समाधान है। जवाब के लिए धन्यवाद :D
यह कहना ज़्यादा सही होगा कि मैंने एक wiki सिस्टम बनाया है।
telekasten.nvimनाम का plugin मेरी ज़रूरतों को 100% से भी ज़्यादा पूरा करता है, और इसमें लगभग सभी ज़रूरी features मौजूद हैं.Template feature भी काफ़ी अच्छी है। internal document management की functionality भी बढ़िया है.
मेरी पसंदीदा features में से एक, graph visualization, भी मैंने
force-graphनाम की library से खुद तैयार की थी.मुझे लगा यह संदर्भ के लिए उपयोगी होगा, इसलिए संबंधित source code links भी छोड़ रहा हूँ.
https://github.com/kodingwarrior/kodingwarrior.github.io/… -- graph visualization के लिए आवश्यक vertices (दस्तावेज़) / edges (internal links) डेटा जनरेट करना
https://github.com/kodingwarrior/kodingwarrior.github.io/… --
force-graphआधारित visualizationमैं भी neovim इस्तेमाल करता हूँ और मुझे एक नई दुनिया मिली। इसलिए मैंने आसपास के डेवलपर्स से भी एक बार इसे आज़माने को कहा, लेकिन कोई भी इसमें नहीं आया। neovim इस्तेमाल करते हुए डेवलपमेंट एनवायरनमेंट सेटअप करने के लिए ज़रूरी चीज़ों को मैंने और विस्तार से समझा। यह भी नहीं पता था कि कोरिया में Vim कम्युनिटी है। मैं उसे खोजकर ज़रूर जाऊँगा, आपसे मिलकर बहुत खुशी हुई!
यह कंपनी और टीम पर निर्भर करता है, लेकिन... हैरानी की बात है कि डेवलपमेंट एनवायरनमेंट सेटअप में दिलचस्पी न रखने वाले लोग काफ़ी होते हैं..
Vim को अच्छी तरह इस्तेमाल करना हो, तो आखिरकार लगता है कि zsh और tmux भी साथ में इस्तेमाल करने पड़ते हैं.
Emacs से अलग, अच्छी बात है कि दाढ़ी होना ज़रूरी नहीं है.