
سلام :)
مطلب امروز در مورد ویرایشگرهای متن 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 وجود دارد:
- حالت Insert: حالتی که در آن متن را تایپ و ویرایش می کنید
- حالت Command: حالت صدور فرمان که همان حالت معمولی (Normal) است
- حالت Ex یا Command line: که همان حالت معروف ":" است که دستورات را در این حالت وارد می کنند.
- حالت 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 ارائه شده است.
- هر دو این ویرایشگر ها به حروف کوچک و بزرگ حساس می باشند.
- برای تسلط بیشتر می توانید از دستور vimtutor استفاده کنید. vimtutor مرحله به مرحله استفاده از ویرایشگر را به شما آموزش می دهد.
- همانطور که پیش تر مشاهده کرده اید، در صورت استفاده از یک عدد قبل از دستور، باعث تکرار یک دستور به تعداد آن عدد می شود. مثلا 17j باعث می شود که ۱۷ خط به پایین بروید.
- به جای فشردن a یا i برای وارد کردن مطلب می توانید از دکمه Insert استفاده نمایید. این مطلب برای دکمه Delete و فرمان x نیز صادق است.
منابع و لینک های مفید
لینک های انگلیسی
- http://www.vim.org (Official Website)
- http://en.wikipedia.org/wiki/Vim_(text_editor)
- http://en.wikipedia.org/wiki/Vi
- Linux vi and vim editor: Tutorial and advanced features
- http://wiki.archlinux.org/index.php/Vim
- https://help.ubuntu.com/community/VimHowto
لینک های فارسی
موفق باشید 8)
سلام
پاسخحذفواقعا این راهنما لازم بود
فقط کاش یک pdf مقاله تون رو می ذاشتید
عالی بود سعید جان
پاسخحذففقط حیف که این ادیتور با این قدرت نمی تونه فارسی رو درست و حسابی ساپورت کنه.
پاسخحذفراست به چپ هم که اصلا نداره!
فقط حیف که این ادیتور با این قدرت فارسی رو درست و حسابی ساپورت نمیکنه.
پاسخحذفراست به چپ هم که اصلا نداره!
خیلی عالیه سعید جان
پاسخحذفاستفاده کردم. ممنون
پاسخحذفسلام سعيد جان وبلاگ جديد مبارك
پاسخحذفلينك شما تصحيح شد و به اينجا لينك دادم
موفق باشيد
خیلی جالب بود اگه مطلب به این خوبی رو در ویکیپدیا فارسی هم منتشر کنید. http://fa.wikipedia.org/wiki/%D9%88%DB%8C%E2%80%8C%D8%A2%DB%8C :)
پاسخحذفThats not just logic. Thats really sesbinle.
پاسخحذفfantastic به خدا......
پاسخحذفقربون تون برم ....مرسی............