۱۳۸۸/۱۰/۲۷

معرفی و راهنمای شروع به کار با vi و vim

لینوکس

سلام :)

مطلب امروز در مورد ویرایشگرهای متن Vim و Vi می باشد. در این مطلب ابتدا به معرفی این دو ویرایشگر پرداخته ام و سپس راهنمای استفاده از آنها را ارائه کرده ام.
البته مطلب امروز فقط راهنمای شروع به کار با این دو ویرایشگر می باشد و فقط دستورات پایه ای و اصلی آنها آورده شده اند. برای مشاهده دستورات بیشتر می توانید به لینک هایی که در آخر همین مطلب هستند مراجعه نمایید.
امیدوارم که این مطلب برای شما مفید باشد.

ویرایشگر Vi


Vi  ویرایشگر متن است که اولین بار توسط بیل جوی در سال ۱۹۷۶ با زبان C برای نسخه های اولیه BSD  ها نوشته شد. ویرایشگر های دیگری نیز در سال های بعد بر اساس vi  منتشر شدند که اکثر آنها متن باز و آزاد می باشند، مانند nvi و vim. برنامه های کامپیوتری بسیاری مانند eclipse , IntelliJ IDEA, NetBeans و حتی فایرفاکس و مایکروسافت ورد قابلیت استفاده از Vi شبیه سازی شده را در دل خود دارند.

ویرایشگر Vim


Vim  نسخه توسعه یافته Vi  می باشد. مهم ترین ویژگی هایی Vim عبارتند از تکمیل کردن (completion)، مقایسه و ترکیب فایل ها، راهنمای جامع داخلی، عبارات منظم (regular expressions) توسعه یافته، ویرایش فایل های فشرده و آرشیوی gzip,  bzip2 , zip  و tar، دسترسی و ویرایش فایل ها از طریق پروتکل های SSH, FTP, HTTP، غلطیابی (spell checking) و ...

نصب


ویرایشگر vi به صورت پیش فرض بر روی سیستم شما نصب می باشد. برای نصب vim با توجه به توزیع لینوکس خود از دستور مربوطه در زیر استفاده نمایید:

توزیع Arch:
# pacman -S vim

توزیع دبیان و اوبونتو:
$ sudo aptitude install vim

نوزیع فدورا، ردهت و CentOS:
# yum install vim-X11 vim-common vim-enhanced vim-minimal

توزیع جنتو:
# emerge vim

حالت ها (Modes)


منظور از حالت، وضعیت پاسخ گویی برنامه به درخواست شماست. به عنوان مثال در یک فشردن دکمه j کاراکتر j را تایپ می کند و در حالت دیگر مکان نما (cursor یا اعلان) را به خط زیر می برد.

سه حالت اول در Vim  و vi موجود می باشند ولی حالت چهارم فقط در Vim وجود دارد:

  1. حالت Insert: حالتی که در آن متن را تایپ و ویرایش می کنید

  2. حالت Command: حالت صدور فرمان که همان حالت معمولی (Normal) است

  3. حالت Ex یا Command line:  که همان حالت معروف ":" است که دستورات را در این حالت وارد می کنند.

  4. حالت Visual:  که فقط در Vim موجود است و برای highlight کردن و انتخاب کردن متن استفاده می شود.


شروع  به کار با Vim


با استفاده از دستور vim یک فایل را باز کنید:
$ vim file


  • (ورود با حالت Command) با استفاده از دکمه های l, k, j, h   مکان نما را به محل مورد نظر ببرید. لیست دکمه های بیشتر برای حرکت مکان نما در ادامه آمده است.

  • دکمه i را برای ورود به حالت Insert کنید (ورود به حالت Insert). البته برای ورود به حالت Insert می توانید از دکمه های دیگری نیز استفاده کنید که لیست آنها در ادامه آمده است.

  • متن مورد نظر را وارد کنید. دکمه Esc را برای خروج از حالت  Insert و ورود به حالت Command بزنید (ورود به حالت Command).

  • برای خروج از فایل، دکمه ":" را بزنید تا به حالت Command line بروید و سپس یکی از دستورات را وارد کنید:



    • wq ابتدا فایل را ذخیره می کند و بعد خروج از برنامه

    • w برای ذخیره تغییرات


    • !q

      برای خروج از فایل بدون ذخیره فایل و تغییرات

    • qa برای بستن همه فایل های باز




شما با موفقیت یک فایل را توسط Vim ویرایش کردید ;)

جدول دکمه های حرکت مکان نما


جدول زیر برخی از مهم ترین دستورات برای حرکت مکان نما را نمایش می دهد:

















































































































دکمهعملکرد
h/j/k/lحرکت مکان نما به راست/بالا/پایین/چپ
فاصله (spacebar)حرکت مکان نما به اندازه یک فاصله
-/+بردن مکان نما به اول خط قبلی/بعدی
Ctrl+dاسکرول کردن به پایین صفحه به اندازه نیم صفحه
Ctrl+uاسکرول کردن به بالای صفحه به اندازه نیم صفحه
Ctrl+fاسکرول کردن به صفحه بعد
Ctrl+bاسکرول کردن به صفحه قبل
Mبردن مکان نما به وسط صفحه
Hبردن مکان نما به اول صفحه
Lبردن مکان نما به آخر صفحه
W

w

5W
حرکت مکان نما به اول کلمه بعدی (جدا شده با خط فاصله)

حرکت مکان نما به اول کلمه بعدی (جدا شده با خط فاصله، نقطه، / و ...)

حرکت مکان نما به اول کلمه پنجم بعدی
B

b

5b
حرکت مکان نما به اول کلمه قبلی (جدا شده با خط فاصله)

حرکت مکان نما به اول کلمه قبلی (جدا شده با خط فاصله، نقطه، / و ...)

حرکت مکان نما به اول کلمه پنجم قبلی
e

5e
بردن مکان نما به آخرین کاراکتر کلمه (یا کلمه بعدی)

بردن مکان نما به آخرین کاراکتر پنجمین کلمه بعدی
0 (صفر)بردن مکان نما به اولین کاراکتر خط فعلی
$بردن مکان نما به آخرین کاراکتر خط فعلی
(بردن مکان نما به اولین کاراکتر خط فعلی
)بردن مکان نما به اولین کاراکتر خط فعلی
G

12G
بردن مکان نما به آخر فایل

بردن مکان نما به خط ۱۲
%بردن مکان نما به کروشه (bracket) ابتدایی و انتهایی فعلی (مکان نما را به داخل یک دسته از {}, [] و یا () ببرید و با استفاده از %  به کروشه ابتدایی و انتهایی بروید)
'.بردن مکان نما آخرین محل تغییر داده شده
maعلامت گزاری محل فعلی مکان نما به عنوان a
'aرفتن به محل علامت گزاری شده به a
'Aرفتن به محل علامت گزاری شده با a در کلیه فایل های که در بافر هستن. علامکت گزاری شده با mA
]'بردن مکان نما به محل علامت گزاری شده بعدی
['بردن مکان نما به محل علامت گزاری شده قبلی
ZZتغییرات را ذخیره و فایل را می بندد. معادل wq در حالت Command line است.



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


جدول زیر برخی از مهم ترین دستورات حالت Command را نمایش می دهد:





















































































































دستورعملکرد
iرفتن به حالت Insert در محل مکان نما
aرفتن به حالت Insert در محل بعد از مکان نما
Aرفتن به حالت Insert در آخر خط فعلی
Escخروج از حالت Insert
uرفتن به یک مرحله قبل تر تغییرات (undo)
Uبرگرداندن تمامی تغییرات صورت گرفته بر روی خط فعلی
Ctrl+rبر عکس u عمل می کند. یعنی به جای undo کردن، redo می کند
oایجاد یک خط جدید بعد از خط فعلی و رفتن به حالت Insert
dd

3dd
پاک کردن خط فعلی

پاک کردن ۳ خط
Dپاک کردن محتویات خط فعلی از محل مکان نما تا آخر
Cپاک کردن محتویات خط فعلی و رفتن به حالت Insert برای ورود اطلاعات
dw

4dw

d0

d$
پاک کردن یک کلمه

پاک کردن ۴ کلمه

پاک کردن متن از ابتدای خط تا محل فعلی مکان نما

پاک کردن متن از محل فعلی مکان نما تا انتهای فایل (مانند D)
cwپاک کردن کلمه فعلی و رفتن به حالت Insert
xپاک کردن کاراکتر فعلی
Xپاک کردن کاراکتر قبلی
rبرای جایگزین کردن یک کاراکتر استفاده می شود. بعد از زدن r، هر کاراکتری که وارد شود جایگزین کاراکتر فعلی می شود.
Rرفتن به حالت Insert با این ویژگی که هر کاراکتری که وارد شود، جایگزین کاراکتر فعلی می شود (overwrite).
sپاک کردن کردن کاراکتر فعلی و رفتن به حالت Insert
Sپاک کردن خط فعلی و رفتن به حالت Insert
~عوض حالت کاراکتر فعلی (کوچک و بزرگ کردن کاراکتر فعلی)
Ctrl+aافزایش عدد فعلی کاراکتر (مثلا اگر کاراکتر فعلی متن عدد ۱۰۲ باشد، با این دستور، عدد در متن به ۱۰۳ افزایش می یابد)
Ctrl+xکاهش عدد فعلی کاراکتر (مثلا اگر کاراکتر فعلی متن عدد ۱۰۲ باشد، با این دستور، عدد در متن به ۱۰۱ کاهش می یابد)
/search_stringجستجوی عبارت search_string در ادامه متن
?search_stringجستجوی عبارت search_string در قبل از محل فعلی مکان نما
nرفتن به محل بعدی عبارت یافت شده از جستجو
Nرفتن به محل قبلی عبارت یافت شده از جستجو
.تکرار آخرین دستور اجرا شده

جستجو و جایگزینی (Find and Replace)


جستجو و جایگزینی در حالت Command line اجرا می شود. برای ورود به حالت Command line ابتدا با زدن Esc از حالت Insert به Command بروید و بعد با زدن ":" به Command line بروید.
در زیر چند مثال برای جستجو و جایگزینی آمده است:

































دستورتوضیح
:%s/fff/rrrrr/جستجو برای fff  و جایگزینی اولین یافته در هر خط با rrrrr
:%s/fff/rrrrr/gجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr
:%s/fff/rrrrr/gcجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr. قبل از جایگزینی از شما تاییدیه (confirmation) می خواهد.
:%s/fff/rrrrr/giجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr. بدون حساسیت به کوچک یا بزرگ بودن حروف (Case insensitive)
:'a,'bs/fff/rrrrr/giجستجو برای fff  و جایگزینی تمامی یافته ها در هر خط با rrrrr در بین خطوطی که با a و b علامت گزاری شده اند. بدون حساسیت به کوچک یا بزرگ بودن حروف (Case insensitive)
:%s/*$/پاک کردن کاراکتر فاصله از آخر هر خط

چند نکته و دستور


در زیر چند نکته و دستور برای استفاده بهتر از vi و vim ارائه شده است.

  1. هر دو این ویرایشگر ها به حروف کوچک و بزرگ حساس می باشند.

  2. برای تسلط بیشتر می توانید از دستور vimtutor استفاده کنید. vimtutor مرحله به مرحله استفاده از ویرایشگر را به شما آموزش می دهد.

  3. همانطور که پیش تر مشاهده کرده اید، در صورت استفاده از یک عدد قبل از دستور، باعث تکرار یک دستور به تعداد آن عدد می شود. مثلا 17j باعث می شود که ۱۷ خط به پایین بروید.

  4. به جای فشردن a یا i برای وارد کردن مطلب می توانید از دکمه Insert استفاده نمایید. این مطلب برای دکمه Delete و فرمان x نیز صادق است.


منابع و لینک های مفید


لینک های انگلیسی

لینک های فارسی



موفق باشید 8)

۱۰ نظر:

  1. سلام
    واقعا این راهنما لازم بود
    فقط کاش یک pdf مقاله تون رو می ذاشتید

    پاسخحذف
  2. فقط حیف که این ادیتور با این قدرت نمی تونه فارسی رو درست و حسابی ساپورت کنه.

    راست به چپ هم که اصلا نداره!

    پاسخحذف
  3. فقط حیف که این ادیتور با این قدرت فارسی رو درست و حسابی ساپورت نمی‌کنه.

    راست به چپ هم که اصلا نداره!

    پاسخحذف
  4. سلام سعيد جان وبلاگ جديد مبارك
    لينك شما تصحيح شد و به اينجا لينك دادم
    موفق باشيد

    پاسخحذف
  5. خیلی جالب بود اگه مطلب به این خوبی رو در ویکی‌پدیا فارسی هم منتشر کنید. http://fa.wikipedia.org/wiki/%D9%88%DB%8C%E2%80%8C%D8%A2%DB%8C :)

    پاسخحذف
  6. fantastic به خدا......
    قربون تون برم ....مرسی............

    پاسخحذف