Dariush Tasdighi - داریوش تصدیقی
Dariush Tasdighi - داریوش تصدیقی
خواندن ۱۰ دقیقه·۴ سال پیش

مرجعی برای یک Editor افسانه‌ای و قوی به نام Vim

ویرایشگری برای تمام فصول
ویرایشگری برای تمام فصول
توجه: این مقاله به مرور زمان، ویرایش و یا تکمیل می‌شود!
تقاضا: در صورتی که با مشکل تایپی، دستوری و یا مفهومی در این مقاله برخورد کردید، از شما دوست عزیز و گرامی، صمیمانه تقاضا می‌کنم که اینجانب را مطلع کرده، تا نسبت به تصحیح و یا تکمیل آن، در اسرع وقت، اقدام نمایم.
با کمال تشکر
داریوش تصدیقی
کانال تلگرام: IranianExperts@
شماره تلفن همراه: ۰۹۱۲۱۰۸۷۴۶۱
نشانی پست الکترونیکی: DariushT@GMail.com
فیلم‌های آموزشی https://www.aparat.com/DariushT
آدرس سایت‌ها: https://WebsiteAnalytics.ir - http://IranianExperts.ir - http://Date2Date.ir
نسخه مقاله: ۱.۲ - تاریخ بروزرسانی: ۱۳۹۹/۰۳/۱۵

مقدمه

قبل از شروع آموزش این ویرایشگر افسانه‌ای و قوی، باید عرض کنم که من برای نوشتن Source Code ها قطعا از Visual Studio Code استفاده می‌کنم! ولی به دلایل زیادی از این Editor نیز استفاده می‌کنم و توصیه می‌کنم شما هم با این ویرایشگر آشنا شده و آن‌را یاد بگیرید!

بارها گفته‌ام و باز هم تکرار می‌کنم! برخلاف سال‌ها قبل، که برای ما برنامه‌نویسان دات‌نت، صرفا یک محیط برنامه‌نویسی به نام Visual Studio وجود داشت و ما جز سیستم‌عامل ویندوز، سیستم‌عامل دیگری را یا نمی‌شناختیم و یا اهمیتی برای ما نداشت! در دنیای امروز و خصوصا در آینده‌ای نزدیک، آشنایی و یادگیری یک سری موارد بسیار اهمیت پیدا کرده است! که اگر امروز برای فراگیری آن‌ها اقدام نکنیم، شاید خیلی زود، دیر شود! بعضی از این موارد، عبارتند از:

  • Vim
  • GIT
  • Linux
  • Docker
  • Visual Studio Code

بخشی از دلایل یادگیری ویرایشگر Vim

  • رایگان است.
  • کم حجم است.
  • قابلیت‌های بسیار زیادی دارد.
  • کدباز یا اصطلاحا Open Source می‌باشد.
  • ویرایشگر پیش‌فرض لینوکس و GIT می‌باشد.
  • امکانات بومی‌سازی یا اصطلاحا Customization آن خیره‌کننده است.
  • در هر سیستم‌عاملی (به غیر از ویندوز) به صورت پیش‌فرض نصب شده و اصطلاحا Cross Platform می‌باشد.

درباره Vim

ویرایشگر Vim مخفف دو کلمه VI Improved بوده و با استفاده از دستور ذیل می‌توانیم آن‌را اجرا کرده و وارد آن بشویم:

vi SomeFileName OR vim SomeFileName

حالت‌ها یا Mode های Vim

به طور کلی، ویرایشگر Vim دارای دو حالت (Mode) می‌باشد:

  • حالت Command (حالت پیش‌فرض): در واقع هرگاه که وارد محیط Vim می‌شویم، به صورت پیش‌فرض این مد قرار می‌گیریم. در این حالت امکان تایپ، به صورتی که در دیگر ویرایشگرها شاهد آن هستیم، وجود ندارد!
  • حالت Insert: حالتی که به صورت نرمال می‌توانیم تایپ کرده و اکثر ویرایشگرها به صورت پیش‌فرض (بر خلاف Vim) در این حالت باز می‌شوند.

چگونه حالت (Mode) را در ویرایشگر Vim تغییر دهیم

  • زمانی که در حالت Command بوده و بخواهیم به حالت Insert رفته و به صورت نرمال متن خود را نوشته و یا ویرایش نماییم، تنها کافی است که از کاراکتر i (کوچک) و یا کاراکتر Insert استفاده نماییم.
  • زمانی که در حالت Insert (ویرایش متن) بوده و بخواهیم به حالت Command رفته (بازگردیم) و دستورات هیجان‌انگیز Vim را بکار ببریم، تنها کافی است که از کاراکتر ESC استفاده نماییم.

دستورات Vim در حالت Command

Save and/or Quit (Exit)

برای ذخیره کردن تغییرات ، ابتدا کاراکتر : را زده و سپس در پایین صفحه، از کاراکتر w (کوچک)(Write) استفاده کرده و سپس Enter را می‌زنیم.

برای ذخیره و خروج از محیط ادیتور، ابتدا کاراکتر : را زده و سپس در پایین صفحه، از دو کاراکتر wq (کوچک)(Write & Quit) استفاده کرده و سپس Enter را می‌زنیم.

برای صرفا خروج از محیط ادیتور، در صورتی که نخواهیم اگر تغییراتی ایجاد کرده‌ایم ذخیره شود، ابتدا کاراکتر : را زده و سپس در پایین صفحه، از دو کاراکتر q! (کوچک)( Quit) استفاده کرده و سپس Enter را می‌زنیم.

Cursor Navigation

برای به سمت چپ بردن Cursor از دکمه‌های Arrow Keys (سمت چپ) و یا دکمه h (کوچک) استفاده می‌کنیم.

برای به سمت پایین بردن Cursor از دکمه‌های Arrow Keys (سمت پایین) و یا دکمه j (کوچک) استفاده می‌کنیم.

برای به سمت بالا بردن Cursor از دکمه‌های Arrow Keys (سمت بالا) و یا دکمه k (کوچک) استفاده می‌کنیم.

برای به سمت راست بردن Cursor از دکمه‌های Arrow Keys (سمت راست) و یا دکمه l (کوچک) استفاده می‌کنیم.

برای این‌که Cursor به ابتدای متن یک خط منتقل شود، می‌توانیم از کاراکتر ^ استفاده نماییم.

برای این‌که Cursor به انتهای متن یک خط منتقل شود، می‌توانیم از کاراکتر $ استفاده نماییم.

برای بالا و پایین رفتن در متن،‌ می‌توانیم از کاراکتر G (بزرگ) به معنای Go استفاده نماییم.

در صورتی که صرفا از کاراکتر G (بزرگ) استفاده نماییم، Cursor به ابتدای آخرین خط متن خواهد رفت.

در صورتی که ابتدا عدد 1 و سپس کاراکتر G (بزرگ) را بزنیم، Cursor به ابتدای خط اول متن خواهد رفت.

در صورتی که ابتدا عدد 5 را زده و سپس کاراکتر G (بزرگ) را بزنیم، Cursor به ابتدای خط پنجم متن خواهد رفت.

Delete

زمانی که Cursor در وسط متن در حال چشمک زدن می‌باشد، با زدن x (کوچک) کاراکترها را از سمت راست پاک می‌کند و اگر از X (بزرگ) استفاده نماییم، کاراکترها را به سمت چپ حذف می‌کند.

Replace

برای جایگزین کردن یک کاراکتر، ابتدا Cursor را بر روی کاراکتری که می‌خواهیم جایگزین کنیم رفته و سپس r (کوچک) را زده و کاراکتر دلخواه را تایپ می‌کنیم.

Append

در صورتی که Cursor در هر کجای یک متن قرار داشته باشد، با زدن کاراکتر a (کوچک) به معنای Append (اضافه کردن)، Cursor به انتهای متن رفته و ما را در Mode ویرایش (Insert) قرار می‌دهد.

Create a new line

برای ایجاد یک خط خالی جدید در ذیل جایی که Cursor قرار داد از o کوچک استفاده می‌کنیم.

برای ایجاد یک خط خالی جدید در بالای جایی که Cursor قرار داد از O بزرگ استفاده می‌کنیم.

Undo & Redo

برای Undo کردن، از کاراکتر u (کوچک) استفاده می‌کنیم.

برای Redo کردن، از دکمه‌های ترکیبی CTRL + r (کوچک) استفاده می‌کنیم.

Transfer

در صورتی که در خطی قرار داشته باشیم و از کاراکتر J (بزرگ) استفاده نماییم، متن خط بعدی را به انتهای خط جاری منتقل می‌کند.

Copy

اگر ابتدا از کاراکتر y (کوچک) به معنای Yank = Copy استفاده کرده و مجددا از کاراکتر y (کوچک) استفاده نماییم، خطی جاری که Cursor در آن قرار دارد، در حافظه Copy می‌شود.

نکته: استفاده از کاراکتر Y (بزرگ)، دقیقا نتیجه‌ای معادل yy (کوچک) داشته و متن خط جاری را کپی می‌کند!

اگر ابتدا از کاراکتر y (کوچک) به معنای Yank = Copy استفاده کرده سپس از کاراکتر w (کوچک) به معنای Word (کلمه) استفاده نماییم، کلمه‌ای که Cursor در آن قرار دارد را Copy می‌کند. البته به این شرط که Cursor در ابتدای کلمه باشد، در غیر این صورت از جایی که Cursor قرار دارد، تا پایان کلمه Copy می‌شود!

Paste

اگر از کاراکتر p (کوچک) به معنای Paste استفاده نماییم، از جایی که Cursor قرار دارد به بعد (در سمت راست یا پایین)، متن کپی شده، Paste می‌شود.

اگر از کاراکتر P (بزرگ) به معنای Paste استفاده نماییم، از جایی که Cursor قرار دارد به قبل (در سمت چپ یا بالا)، متن کپی شده، Paste می‌شود.

Search

برای جستجو می‌توانیم ابتدا / (اسلش) را زده و سپس کلمه مورد نظر را تایپ کرده و Enter بزنیم. در صورتی که از کاراکتر n (کوچک) به معنای Next (بعدی) استفاده نماییم، کلمه بعدی را (به بعد) جستجو کرده و اگر از کاراکتر N (بزرگ) را استفاده نماییم، کلمه قبلی را (به قبل) را جستجو نماییم.

Repeat

با استفاده کاراکتر . (نقطه) می‌توانیم به ادیتور VIM بگوییم که آخرین دستوری که اجرا کرده‌ایم را تکرار کند.

ترکیب کردن دستورات با هم

اگر ابتدا کاراکتر d (کوچک) به معنای Delete را زده و سپس w (کوچک) به معنای Word (کلمه) را بزنیم، اگر Cursor وسط یا ابتدای یک کلمه باشد، از آن‌جا تا ابتدای کلمه بعدی را حذف می‌کند.

اگر ابتدا کاراکتر d (کوچک) به معنای Delete را زده و سپس e (کوچک) به معنای End (انتها) را بزنیم، اگر Cursor وسط یک کلمه قرار داشته باشد، از آن‌جا تا انتهای کلمه جاری را حذف می‌کند.

اگر ابتدا کاراکتر d (کوچک) به معنای Delete را زده و سپس b (کوچک) به معنای Begin (ابتدا) را بزنیم، اگر Cursor وسط یک کلمه قرار داشته باشد، از آن‌جا تا ابتدای کلمه جاری را حذف می‌کند.

اگر ابتدا کاراکتر d (کوچک) به معنای Delete را زده و سپس d (کوچک) به معنای یک Line (خط) را بزنیم، خط جاری که Cursor در آن قرار دارد را حذف می‌کند.

برای این‌که از جایی که Cursor قرار دارد تا انتهای خط را حذف نماییم،‌ می‌توانیم از دکمه‌های ترکیبی d (کوچک) و $ استفاده کنیم.

برای این‌که از جایی که Cursor قرار دارد تا ابتدای خط را حذف نماییم،‌ می‌توانیم از دکمه‌های ترکیبی d (کوچک) و ^ استفاده کنیم.

Tiny Workshop

فرض کنید زمانی که در داخل یک خط قرار داریم، ابتدا کاراکتر a (کوچک) و به معنای Append (اضافه کردن) را زده و سپس کلمه TODO را نوشته و سپس ESC را می‌زنیم. حال اگر در هر خطی قرار داشته باشیم و کاراکتر . (نقطه) را بفشاریم، آخرین عملیات انجام شده را تکرار کرده و لذا کلمه TODO به انتهای هر خطی که . را بزنیم،‌ اضافه می‌شود.

ترکیب کردن دستورات با عدد

اگر Cursor قبل از کلمه The قرار داشته باشد و فقط یک‌بار کاراکتر x (کوچک) را بزنیم، صرفا کاراکتر T را حذف می‌کند، ولی اگر ابتدا عدد 3 را زده و سپس کاراکتر x (کوچک) را بزنیم، هر سه کاراکتر یعنی کلمه The را حذف می‌کند.

3x

اگر Cursor بر روی یک خط متن قرار داشته باشد و ابتدا عدد 2 را زده و سپس دو کاراکتر d (کوچک) را بزنیم، دو خط را (یعنی خط جاری و خط زیر آن‌را حذف می‌کند)

2dd

اگر Cursor قبل از یک کلمه قرار داشته باشد (و یا اولین کاراکتر آن کلمه انتخاب شده باشد) و ابتدا عدد 3 را زده و سپس کاراکتر d (کوچک) و بعد کاراکتر w را بزنیم، کلمه جاری و دو کلمه بعد از آن را حذف می‌کند:

3dw

اگر Cursor در یک خط قرار داشته باشد و از دکمه‌های yy استفاده نماییم، خط جاری کپی شده و اگر ابتدا عدد 5 را زده و سپس کاراکتر p (کوچک) را بزنیم، خط کپی شده را سه بار در ذیل خط جاری Paste می‌کند:

yy -> 5p

منابع

https://www.vim.org

https://www.vim.org/download.php

https://en.wikipedia.org/wiki/Vim_(text_editor)

Learning

https://vimeo.com/showcase/2838732

https://danielmiessler.com/study/vim

http://www2.geog.ucl.ac.uk/~plewis/teaching/unix/vimtutor

Vim Cheat Sheet

https://vim.rtorr.com

https://vim.fandom.com/wiki/Best_Vim_Tips

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Let Us Play Game & Learn Vim

https://vim-adventures.com

https://www.openvim.com/tutorial.html

Six Reasons why you should learn Vim

https://hackernoon.com/why-you-should-learn-vim-8085cfab1c7f

با تشکر از جادی عزیز بابت فیلم‌های آموزشی خوب ایشان در خصوص Vim

https://virgool.io/@jadijadi/%D8%AA%D9%86%D8%B8%DB%8C%D9%85-%D8%A7%D8%AF%DB%8C%D8%AA%D9%88%D8%B1-%D9%88%DB%8C%D9%85-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-r4sapuh9c8rt

پایان

ویرایشگرtext editorویمvimvi
محقق، معمار، مشاور، مدرس و برنامه‌نویس حوزه فن‌آوری اطلاعات - تحلیل‌گر و فعال بازار بورس و سرمایه
شاید از این پست‌ها خوشتان بیاید