چرا Vim چیزی فراتر از یک ویرایشگر است – زبان، حرکات و حالتهای Vim توضیح داده شده است

در طول مدتی که به عنوان یک توسعهدهنده بودم، از VS Code، Sublime، Notepad++، TextMate و موارد دیگر استفاده کردهام. اما میانبرهایی مانند cmd(+shift)+end
و پرش با option+arrow-keys
از کلمه ای به کلمه دیگر باید در برخی موارد سریعتر باشند.
داشتم به محدودیت هایم می رسیدم. هر کاری که انجام میدادم، سریع انجام میدادم، اما سریعتر نشدم.
من از آن زمان فهمیدم که Vim تنها ویرایشگری است که با گذشت زمان سریعتر از آن استفاده می کنید.
Vim تنها بر اساس میانبرها است. وقتی این را کشف کردم و کمی بازی کردم، احساس بیحسی و کمی احمق کردم، زیرا این میانبرها (به نام زبان Vim) را خیلی زودتر در حرفهام یاد نگرفته بودم.
متوجه شدم که برای رسیدن به هر موقعیت خاصی که میخواهم بپرم یک ضربه کلید وجود دارد. مثل یک بازی بود که می دیدم آیا می توانم از میانبرهای کمتری برای انجام یک ویرایش خاص استفاده کنم. اینجاست که بسیاری از کاربران Vim از کدنویسی و نوشتن لذت زیادی می برند. حرکت مکان نما من با دقت جراح احساس رهایی بخش بود.
اگرچه سرعت یک مزیت کوچکتر است، اما وقتی دیدم دیگران در Vim در حال پیمایش هستند، من را شروع کرد. پس از بالا رفتن از منحنی یادگیری شیب دار، این هنوز یکی از قوی ترین مهارت هایی است که در زندگی حرفه ای ام آموخته ام، کار کردن برای امرار معاش با کامپیوتر.
بیایید اسطوره Vim را از بین ببریم و بیاموزیم که چگونه می توان همه میانبرها را با استفاده از زبان خاص Vim به خاطر آورد. ما خواهیم دید که چگونه با حرکات vim حرکت کنیم، و آنچه را که تا کنون آموختهام به اشتراک میگذارم، و اینکه چرا میتوانید Vim را نیز امتحان کنید.
یادگیری زبان Vim
چیزهای زیادی در مورد Vim گفته شده است - سرعت آن چقدر است، فقط افراد لینوکس از آن استفاده می کنند، و اینکه خروج از Vim غیرممکن است.
برای خودم عاشق "زبان Vim" شدم. ببینید، من در به خاطر سپردن هر چیزی بد هستم و فکر می کردم که Vim برای من نیست. اما به یک دلیل خاص اینطور نبود: حرکات Vim و زبان آن.
فهمیدم که یک دستور زبان پشت ویرایشگر وجود دارد. با آن، ابتدا آنچه را که می خواهید انجام دهید، چند بار، و سپس آنچه را که می خواهید اعمال کنید، بیان می کنید.
بیایید بیشتر به Vim و زبان پشت آن بپردازیم.
زبان و حرکات Vim چگونه کار می کند
Vim زبان یا گرامر فوقالعادهای در پشت میانبرهای خود دارد. به جای به خاطر سپردن هزاران میانبر، می توانید یک زوج را یاد بگیرید و آنها را ترکیب کنید.
اینها اغلب زبان Vim یا حرکات Vim برای حرکت در اطراف نامیده می شوند. این هنوز ربطی به ویرایشگر ندارد - اینها جهانی هستند و در ویرایشگرهای دیگر نیز موجود هستند.
به عنوان مثال، VSVim برای VSCode، IdeaVim برای محصولات JetBrains، حالت Vintage برای Sublime و غیره وجود دارد. اما افزونههای مرورگر مانند Vimium یا Firenvim نیز وجود دارد، و Gmail حتی برخی از میانبرهای Vim را برای پیمایش ( j
، k
برای حرکت، g
برای پرش) تطبیق داده است.
هر کسی که هشت ساعت در روز با کامپیوتر تایپ می کند باید زبان Vim را یاد بگیرد. بله، در ابتدا سخت است، اما در مورد همه چیز جدید و متفاوت اینطور است. اما هر روز بهتر شدن و کدنویسی یا نوشتن سرگرم کننده تر باید انگیزه کافی باشد. شما آنقدر مشغول نیستید که یاد بگیرید - هر چه پیش بروید یاد خواهید گرفت.

Vim Grammar
همانطور که گرامر زبان گفتاری دارای افعال، موضوع و مفعول است، زبان Vim نیز چنین است. گرامر افعال مختلفی برای شروع دارد. کپی کردن (یا یاکینگ) در Vim با y
، حذف با d
، چسباندن با p
، تغییر با c
و غیره.
به عنوان مثال، ساده ترین میانبر کپی کردن یک خط با yy
است. در این حالت، yank فعل است و y
دوم مترادف y_
است. y
دو برابر می شود که تایپ را آسان تر می کند زیرا این یک عملیات مشترک است.
بعد، می توانیم حرکات را اضافه کنیم. هر فعل برای حرکات خود فاعل می گیرد. حرکات زیادی وجود دارد (بیشتر در بخش بعدی) - ساده ترین آنها با اعداد است.
به عنوان مثال، برای کپی کردن سه خط، یک 3 در جلو اضافه می کنید، مانند 3yy
. شما می توانید این کار را با تمام افعال انجام دهید، مانند حذف سه خط 3dd
. یکی دیگر برای انتقال به ابتدا یا انتهای پاراگراف، {
و }
خواهد بود.
علاوه بر افعال و فاعل، زبان Vim دارای اشیا نیز می باشد. برای مثال، میتوانیم متن را در کلیپبوردهای مختلف (به نام ثبات در Vim) با "ay
.» ذخیره کنیم. در اینجا، آن را در ثبات a کپی میکنیم، که مفعول است. میتوانیم با انجام همین کار، اما با استفاده از فعل paste، دوباره آن را جایگذاری کنیم. به جای yank "ap
.
حتی صفت و قید با پیشوند نیز وجود دارد. معمولاً از فعل و مفعول استفاده می کنید. اما به جای پایین آوردن سه خط با 3J
، که به سه خط زیر می پیوندد، می توانید d5}
اضافه کنید، که به معنای "حذف از خط فعلی تا پایان پاراگراف پنجم از اینجا به پایین است. "
برای من، جادویی ترین چیز در مورد Vim نحوه پیمایش و ویرایش متن است - و هنوز ربطی به ویرایشگر ندارد.
مطمئناً Vim کسی بود که این اقدامات را معرفی و به کمال رساند، اما باز هم - می توانید آنها را در هر جای دیگری دریافت کنید. این به عمق زبان Vim می رود، با این حال ما هنوز باید ویرایشگر را لمس کنیم. دانستن این مهم است.
با این حال، امیدوارم که شما قدرت چنین الگوهایی را مشاهده کرده باشید. با چند فعل و مفعول، میتوانید صدها ترکیب را بدون به خاطر سپردن هر یک به صورت جداگانه بشناسید.
میتوانید ویدیویی در مورد تسلط بر زبان Vim تماشا کنید یا یک توضیح کامل از زبان Vim را در این نظر فوقالعاده StackOverflow بخوانید.
Vim Motions
حرکات Vim نحوه پیمایش شما است، چه به انتهای کلمه بروید و چه به ابتدای سند - اینها همه حرکات هستند.
اینها اولین چیزهایی هستند که هنگام یادگیری Vim شروع به یادگیری (و متنفر) می کنید. کشف آنها در ابتدا بسیار سخت است، اما آنها چیزی هستند که وقتی به آنها عادت کردید می خواهید در همه جا از آنها استفاده کنید.
Vim به جای استفاده از کلیدهای جهت دار، از jk
برای حرکت به پایین و بالا و hl
برای حرکت به چپ و راست استفاده می کند. ایده اصلی این است که از کلیدهایی استفاده کنید که دست راست شما به طور طبیعی روی آنها قرار دارد. برای پیمایش نیازی به حرکت دست ها یا حتی انگشتان ندارید.
باز هم، این یک چیز کوچک به نظر می رسد، اما وقتی آن را یاد گرفتید، می دانید که چرا همه در مورد آن به شما می گویند.
برخی از حرکات رایج عبارتند از:
h,j,k,l - left, down, up, right w,W - to start of next word or WORD b,B - to start of previous word or WORD e,E - to end of word or WORD $ - to end of line ^ - to start of line
شما می توانید مهمترین حرکات را برای شروع در این چیت شیت پیدا کنید:

نحوه استفاده از حالت های Vim (عادی، درج، بصری و دستوری)
حالت ها چیز دیگری است که ممکن است در ابتدا شما را گیج کند.
وقتی Vim را راهاندازی میکنید، چیزی را که روی صفحهکلید خود کلیک میکنید تایپ نمیکنید، زیرا در حالت «درج» که احتمالاً از ویرایشگرهای دیگر با آن آشنا هستید، نیستید. در عوض، حالت عادی که در آن قرار دارید به شما امکان می دهد دستورات توضیح داده شده در زبان Vim و حرکات بالا را انجام دهید.
Vim تنها ویرایشگری است که ویرایش متن را به جای نوشتن از یک صفحه خالی بهینه می کند .

این دلیل دیگری است که Vim شما را بسیار کارآمد می کند: شما حالت های مختلفی برای هر مرحله از کار یا کار فعلی خود دارید.
حالت عادی برای خواندن کد و پیمایش سریع است.
حالت Insert برای زمانی است که می خواهید کد یا متنی اضافه کنید.
حالت بصری منحصر به فرد است، مانند برجسته کردن متن با ماوس، اما با حرکات Vim بالا.
و حالت فرمان نیروگاه است، جایی که می توانید دستورات لینوکس مانند قالب بندی یک فایل JSON را با :%!jq
تایپ کنید (در حالی که jq یک ابزار خط فرمان است که روی دستگاه شما نصب شده است) و آنها را در Vim اجرا کنید. در اینجا نیز می توانید از دستورات Vim مانند :sort
برای مرتب سازی فایل های خود استفاده کنید.
من میتوانم به اینجا ادامه دهم، اما میخواهم در حال حاضر به خود ویرایشگر بپردازم و تحلیل کنم که چرا در ابتدا آن را یاد گرفتم و چگونه شروع کنم.
مقدمه ای بر ویرایشگر Vim (Neovim، Lunarvim و Helix)
پس ویرایشگر Vim چیست؟ با ویرایشگر ساده vi شروع شد، یک ویرایشگر اساسی که زبان Vim را پیاده سازی می کند و می تواند متن را ویرایش کند. کمی شبیه Notepad++ است که ممکن است در ویندوز از آن استفاده کنید، اما بدون ماوس و منوی زمینه.
Vim به سادگی یک نسخه بهبود یافته از Vi با ویژگی های بیشتر است.

امروزه حتی یک نسخه جدیدتر از Vim به نام Neovim وجود دارد. این نسخه بسیار محبوب است و من نیز شروع به استفاده از Neovim کرده ام. در مقایسه با Vim، Neovim از Lua ، یک زبان برنامهنویسی واقعی، برای پیکربندی و گسترش ویرایشگر استفاده میکند. این کار نوشتن پلاگین ها و پیکربندی Neovim را در مقایسه با Vimscript اصلی Vim آسان تر می کند.
Neovim مکانی عالی برای شروع یادگیری Vim از امروز است، زیرا افزونه های بسیار جذابی دارد. Neovim همچنین چندین بار برنده محبوب ترین IDE در نظرسنجی StackOverflow شد، آخرین بار در سال 2022.
همچنین ویرایشگری به نام Helix در Rust ساخته شده است، اما دارای انحرافات جزئی از زبان Vim است که آن را به مکانی کمتر بهینه برای شروع تبدیل می کند.
اگر میخواهید بدون نیاز به دانستن چیزی در مورد Neovim و صرف ساعتها روی تنظیمات، شروع کنید، میتوانید با LunarVim شروع کنید. این یک توزیع با تمام ویژگی هایی است که از VS Code قبلاً در آن گنجانده شده است.
فرض کنید با ترمینال راحت هستید و متوجه می شوید که می خواهید ویرایشگر را مطابق میل خود تغییر دهید. در آن صورت، میتوانید سفر خود را با یک پیکربندی ساده تک فایلی با توضیحات زیادی که خارج از جعبه کار میکنند، آغاز کنید. شما همچنین می توانید هر پیکربندی را با باز کردن فایل پیکربندی واحد یاد بگیرید.
چرا Vim را یاد گرفتم
با استفاده از روش ورودی استانداردی که روزانه در ویراستاران خود استفاده می کنیم، در نهایت در سطح خاصی دچار رکود خواهیم شد. مطمئناً، میتوانید از cmd+arrow-keys
(در مک) برای پرش به ابتدای یک خط یا option+arrow-keys
برای پرش بین کلمات به جای کاراکترها استفاده کنید.
اما وقتی به آن مسلط شدید چه اتفاقی می افتد؟ اگر بخواهید چیزی را در وسط جمله تغییر دهید چه؟ راه دیگری برای چندین بار پرش با این گزینه وجود ندارد یا هر بار دست های خود را دور می زنید تا به ماوس برسید تا دقیقا روی نقطه کلیک کنید.
یک روز، یک همکار را دیدم که در Vim کار می کند، و همه چیز کلیک کرد. زبان و حرکات Vim چیزهایی بودند که در تمام مدت به آن نیاز داشتم. پس پلاگین VS Code را نصب کردم، چند ویدیوی یوتیوب را تماشا کردم و سفر خود را برای یادگیری حرکات اولیه آغاز کردم.
من همچنین عاشق یادگیری چیزهای جدید هستم و، حتی بهتر از آن، همیشه به دنبال راه هایی برای افزایش بهره وری هستم.
اما همانطور که بسیاری از شما ممکن است تجربه کرده باشید، سخت ترین بخش یادگیری Vim شروع است. منحنی یادگیری اولیه بسیار شیب دار است. در زیر یک تصویر است که این را نشان می دهد :).

همچنین دو یا سه بار طول کشید تا شروع به یادگیری Vim کنم تا اینکه کاملاً آن را درک کردم. رفتم و برگشتم. علاوه بر انجام کار، گاهی اوقات تغییر کامل از یک روز به روز دیگر دشوار است. اما من فقط دوست داشتم همه حرکات را یاد بگیرم و می دانستم که بعد از مدت کوتاهی سرعتم را بیشتر می کند.
چرا من عاشق Vim هستم
من فقط هشت ماه است که از Vim استفاده می کنم و حدود شش سال است که با پایتون برنامه نویسی می کنم. از زمانی که کارم در سال 2003 شروع شد، از ویرایشگرهای کد دیگری استفاده کردم. هر ویرایشگری که استفاده کردم نقاط قوت و جذابیت خود را داشت. اما من هرگز چنین افزایش کارایی را با Vim تجربه نکردم.
در پایان، از ویرایشگری استفاده کنید که بهترین کار را برای شما دارد. شخصاً میخواهم ویراستارم به من کمک کند تا در سریعترین زمان ممکن کار کنم، به خصوص که من روزانه از آن استفاده میکنم. صرف زمان زیادی برای یادگیری Vim ضروری است، اما به مرور زمان نتیجه می دهد. این تمام نکته در مورد Vim و به خصوص زبان Vim است.
به طور کلی یک مهارت دست کم گرفته شده در بین برنامه نویسان استفاده از ترمینال است. با یادگیری ویرایشگر خود، به خصوص با Vim، طبیعتاً اطلاعات بیشتری در مورد ترمینال خواهید داشت و مهارت های لینوکس خود را بهبود می بخشید (جستجوی معکوس، گیت تنبل، Tmux و بسیاری موارد دیگر).
قبل از Vim، من فقط در صورت لزوم از ترمینال استفاده می کردم. من همه چیز را در گوگل جستجو کردم و امروز هر زمان که بتوانم از ترمینال با کتابچه های راهنمای مفیدش استفاده می کنم.
گاهی اوقات من از خودم نیز شگفت زده می شوم، و این فوق العاده عصبی است - اما بسیار مؤثر است. از زمانی که با Vim راحت شدم، توسعه دهنده بسیار بهتری شدم.
بهینه سازی و بهینه سازی Vim ممکن است ساعت ها و روزها طول بکشد و در ابتدا اجتناب ناپذیر است. اما پس از مدتی، فایلهای نقطهای شما بالغ میشوند و کمتر شروع به تغییر چیزها میکنید. همچنین در آزمایش یک پلاگین جدید یا اضافه کردن نقشه مجدد بسیار سریعتر خواهید بود.
همچنین، Vim سرگرم کننده است! کار در Neovim یکی از نکات برجسته کار روزمره من است. بهبود ویرایشگر متن خود و تبدیل آن به خودتان - شاید به روش هایی که هیچ کس دیگری آن را بهینه نکرده است - بسیار عالی است.
به عنوان مثال، من زیاد می نویسم، پس برای نوشتن علامت گذاری و برنامه نویسی در پایتون بهینه سازی کردم. این چیزی است که به شادی من به عنوان یک کدنویس بسیار می افزاید.
به دلیل همه اینها، TJ DeVries Neovim را یک PDE (محیط توسعه شخصی) می نامد، نه «فقط» یک IDE. میتوانید در ویدیوهای واقعاً الهامبخش Vim ThePrimeagen درباره این موضوع بیشتر بیاموزید و بدانید چرا او در سال 2022 از Vim استفاده کرد.
ویم نیز مینیمالیسم را در من بیشتر نشان داد. من از ترمینال بهجای رابطهای گرافیکی فانتزی و فایلهای متنی ساده برای وضوح، آزادی، میانبرهای فوقالعاده سریع، بدون قفل شدن فروشنده و ماندن در جریان با محتوای جلویی استفاده کردم.
Vim نه تنها گردش کار من را تغییر داد، بلکه نحوه ویرایش من را با سرعت فکر تغییر داد. به جای اینکه فکر کنم «میخواهم آن کلمه را ویرایش کنم»، انگشتانم به آن کلمه میپرند و با چند ضربه کلید آن را تغییر میدهند.
Vim برای مهندسی داده
گردش کار مهندسی داده من از Neovim با لایحه حفاظتی LSP (پروتکل سرور زبان) نصب شده با mason استفاده می کند. با Tmux چیزهای بیشتری وجود دارد، اما می توانید تمام جزئیات را در dotfiles/nvim بیابید.

Vim برای نوشتن
من همچنان از Obsidian بیشتر برای نوشتن استفاده میکنم (در جریان کار PKM من بیشتر ببینید) به دلیل آپشن های اضافی آن از تصاویر پشتیبانیشده، بک لینکها، نمودارها، و پلاگینهای مشخصشده برای یادداشتبرداری، مانند ReadWise (همگامسازی نکات برجسته من از کتابها، و توییت ها)، Dataview (استفاده از یادداشت ها به عنوان پایگاه داده)، Excalidraw (طراحی با فرمت Markdown)، الگوها و غیره.
با این وجود، من بیشتر و بیشتر در Neovim می نویسم. در حال حاضر، من از ZenMode (برای وسط متن)، Grammarly (برای لینتینگ گرامر)، write-good (گرامر linting) و به طور خاص Obsidian.nvim (دنبال کردن بک لینک ها و غیره) استفاده می کنم. شما تمام جزئیات را در dotfiles من پیدا می کنید.
در Obsidian، من از حالت Vim Obsidian .vimrc استفاده می کنم و اکثر کلیدهای میانبر را به تنظیمات Vim خود نگاشت می کنم. در همان زمان، من بیشتر و بیشتر در Neovim می نویسم و به تدریج به سمت Neovim کامل می روم.
پلاگین هایی مانند تلسکوپ و ویژگی های ساده grep که برای کدنویسی استفاده می کنم با Markdown بسیار خوب کار می کنند. در اینجا چند کلیپ وجود دارد که نشان می دهد در یک سخنرانی عالی در مورد نوشتن، ویرایش، و جهان سازی با سرعت فکر با Vim چه چیزی ممکن است.
چرا باید Vim را نیز یاد بگیرید
وقتی در مورد Vim شنیدم فکر کردم فقط برای مهندسان نرم افزار و نردهای لینوکس هست 😅. من هرگز فکر نمی کردم که از آن نیز استفاده کنم. اما چگونه وارد آن شدم؟
من قبلاً دلایلی را به اشتراک گذاشته ام که چرا Vim را دوست دارم. اما واقعاً همه گردش کار من را تغییر داد، نه تنها به عنوان یک توسعه دهنده، بلکه نحوه گشت و گذار در اینترنت، نوشتن، پیمایش و استفاده از ابزارها را نیز تغییر داد. من در هر برنامه ای که استفاده می کنم یک حالت Vim را جستجو می کنم.
اما اگر از دستپاچگی و بهینه سازی گردش کار خود لذت نمی برید، و اگر برای امرار معاش نمی نویسید یا کدنویسی نمی کنید، Vim ممکن است برای شما مناسب نباشد. با ویرایشگر فعلی خود شروع کنید و قبل از هر کاری با Vim حالت Vim را فعال کنید. این خیلی شما را از ناامیدی نجات می دهد، به من اعتماد کنید 😅.
نحوه شروع استفاده از Vim
منابع خوب زیادی وجود دارد که به شما در شروع کار با Vim کمک می کند. ساده ترین کار این است که vimtutor
در ترمینال خود تایپ کنید، که یک آموزش تعاملی برای Vim است.
من قبلاً چند ویدیوی YouTube را در بالا پیوند داده ام - به خصوص ThePrimagen را که با Vim به عنوان ویرایشگر شما شروع می شود یا چرا حتی با Vim یا Neovim در سال 2022 به دردسر می خورید را تحلیل کنید.
من در آن زمان با آموزش Vim بن آوادز شروع کردم. یک سخنرانی عالی: ویراستاران (Vim) (2020) . تسلط بر زبان Vim . من همچنین یک لیست پخش کوچک در YouTube با محتوای Vim جمع آوری می کنم. یک الهام بزرگ همچنین گردش کار توسعه دهنده با استفاده از Tmux و Vim از Takuya .
بسته بندی
ما آموخته ایم که Vim یک ویرایشگر متن قدرتمند است که در بین توسعه دهندگان محبوب است. این بر اساس میانبرهایی به نام زبان Vim است که می تواند کدنویسی و نوشتن را سریعتر و کارآمدتر کند.
با Vim، می توانید به هر موقعیت متنی خاص بپرید و به سرعت ویرایش های دقیق را انجام دهید. در حالی که یادگیری Vim می تواند چالش برانگیز باشد، در دراز مدت ارزش تلاش را دارد زیرا بهره وری شما را بهبود می بخشد و تجربه کدنویسی شما را شاد می کند.
اگر می خواهید جلوتر بروید، Tmux را امتحان کنید، که با Vim به خوبی بازی می کند. حتی میتوانید یک سطح عمیقتر بروید، که یک چیدمان صفحهکلید اختصاصی مانند Dvorak یا Halmak است (که من در مقطعی شروع به یادگیری آنها کردم). یا یک صفحه کلید ارگونومیک فانتزی بخرید یا خودتان یکی بسازید .
ممنون که تا اینجا خواندید امیدوارم از این مقاله لذت برده باشید. منتظر شنیدن نظرات و تجربیات شما هستم.
می توانید سایر آموزش های من را در www.sspaeti.com بخوانید.
ارسال نظر