۱۵
۱۳۹۱
راهنمای استفاده از ویرایشگر VI
معرفی:
یکی از قویترین ویرایشگرهای متنی در لینوکس، ویرایشگر Vim است. اولین نسخه عمومی این ویرایشگر (نسخه ۱.۱۴) در ۲ نوامبر سال ۱۹۹۱ منتشر شد (دقیقا ۲۱ سال پیش). ویرایشگر vi بر روی اکثر سیستمعاملهای یونیکس (و مبتنی بر یونیکس) قابل استفاده است. vi میتواند از هر نوع ترمینالی استفاده کند زیرا وابسته به پلتفرم خاصی نیست و از کاراکترهای الفبای استاندارد برای اجرای دستوراتش استفاده میکند. Vi ( وی آی تلفظ می شود) کوتاه شدهی visual editor است. این ویرایشگر پس از اجرا، یک پنجره برای ویرایش فایل باز می کند و به کاربر اجازه افزودن، تغییر و حذف متن را میدهد، اما امکان فرمتبندی خطوط و پاراگرافبندی را ارائه نمیکند.
Vim یک پروژه نرمافزاری متنباز است. Moolenaar نویسنده آن برای حمایت از کودکان اوگاندا کاربران را تشویق به donate برای موسسه خیریهای میکند که به آن کودکان یاری میرساند. ویژگیها و قابلیتهای زیاد این ویرایشگر باعث شده است که کاربران متعددی از آن استفاده کنند.

در این مقاله سعی شده بطور مختصر به معرفی اصول پایه و نحوه کار با این ویرایشگر پرداخته شود. در این مقاله باز کردن یک فایل جدید، بستن آن، حرکت در متن و همچنین نحوه ویرایش فایل به طور ساده بیان میشود.
این موارد از ویژگیهای برجسته Vim به شمار میروند:
- امکان بازگرداندن چند مرحلهای تغییرات (multi level undo)
- ویرایش تحت حالت خط فرمان با قابلیتهای گسترده
- تکمیل خودکار نام فایل (filename completion)
- syntax highlighting
- مستندات آنلاین
- پشتیبانی از چندین پنجره و ویرایش همزمان چندین فایل
طریقه نصب:
در این قسمت نحوه دریافت و نصب این ویرایشگر در توزیعهای برپایه دبیان، redhat و همچنین نصب و کامپایل آن از روی کد منبع ارائه میشود:
- در توزیعهای redhat محور (RedHat/ CentOS/ Fedora):
yum install vim-enhanced vim-common vim-minimal vim-enhanced vim-X11
- در توزیعهای دبیان-محور (debian/ubuntu):
sudo apt-get install vim vim-gnome
- در توزیع آرچ لینوکس:
sudo pacman -S vim
- کامپایل از سورس (همه توزیعها):
آخرین نسخه سورس را از آدرس vim.org دانلود کنید (در حال حاضر نسخه ۷.۳ آخرین نسخه است که حدود ۹ مگابایت حجم دارد). سپس دستورات زیر را اجرا نمایید:
tar xzf vim-7.3.tar.gz cd vim73 ./configure --prefix=/opt --enable-cscope make make install
نحوه عملکرد Vim:
ویرایشگر vi یک ویرایشگر modal است به این معنی که با توجه به این که در کدام مُد (حالت) است رفتار متفاوتی دارد. ویرایشگر vi در سه مُد command mode، insert mode و command line mode مورد استفاده قرار میگیرد:
- command mode (یا حالت نرمال): شامل دستوراتی حساس به حروف کوچک و بزرگ است که در ویرایشگر استفاده میشود. برای خاتمه دادن به دستورات این مُد از کلید Esc صفحه کلید استفاده میشود.
- Insert mode: در این حالت میتوان اقدام به ویرایش متن نمود.
- Command line mode: توسط تایپ کاراکتر “:” (علامت نقل قول) می توان وارد این مُد شد. با ورود به این حالت در انتهای صفحه یک خط فرمان ظاهر میشود که میتوان دستورات این مُد را در آنجا وارد کرد.
Vim در اول اجرا اطلاعات صفحه نمایش را از سیستمعامل میگیرد. ویرایشگر به این اطلاعات نیاز دارد، مخصوصا خط آخر را که به آن Last Line یا Command Line میگویند. در این خط معمولا دستورات و یا پیغامهای خطا نمایش داده میشود.
عموما از vim در terminal به شکل زیر استفاده میشود.
vim [options] [filelist]
با دستور زیر میتوان فایلی به نام FILENAME ایجاد کرد و با فشردن کلید i از صفحه کلید آن را ویرایش کرد:
vim FILENAME
برای وارد کردن متن باید در مُد insert باشید. به همین منظور “i” را تایپ کنید و دقت کنید که در گوشه پایین سمت چپ صفحه –INSERT– نوشته شده باشد. این نشان میدهد که در مُد insert هستید.
حالا می توانید تایپ کنید، کلماتی که تایپ میکنید در فایل درج میشود.
در جدول زیر دیگر کلیدهایی که در مُد insert قابل استفاده است به همراه عملکردشان ذکر شده است:
-
کلیدها عمل i درج در محل مکاننما
a درج در جلوی مکاننما
A درج در انتهای خط
ESC خاتمه مد insert
u برگرداندن آخرین تغییر
U برگرداندن تمام تغییرات در خط موجود
o باز کردن یک خط جدید
dd
3ddحذف یک خط
حذف ۳ خط
D حذف محتویات خط بعد از مکاننما
C حذف محتویات یک خط بعد از مکاننما و درج متن جدید.
dw
4dwحذف کلمه
حذف ۴ کلمه
cw تغییر کلمه
x حذف کاراکتر موجود بر روی مکاننما
r جاگزینی کاراکتر
R جایگزینی کاراکترهایی از مکاننما بر روی کلمه
/search_string{CR}
جستجو برای کلمه مورد نظر search_string
n یافتن کلمه مورد جستجوی بعدی
N یافتن کلمه مورد جستجوی قبلی
. تکرار آخرین کامند اجرا شده
همانطور که در جدول آمده برای حذف کردن هر کاراکتری میبایست مکاننما را روی کاراکتر مورد نظر برد و کلید x را فشرد. همچنین برای حذف یک خط دومرتبه کلید d را فشار دهید. (dd)
زمانیکه متنی را اشتباه تایپ می کنید میتوانید به جای اینکه متن اشتباه را پاک کنید، از کلید u استفاده کنید که آخرین ویرایش را لغو (undo) کند. همچنین در صورت تمایل به برگرداندن متن قبلی (redo) کلیدهای CTRL-R را فشار دهید.
برای ایجاد خط جدید در متن میتوانید از کلید o استفاده کنید. با فشار دادن کلید Esc از مُدی که در آن قرار دارید خارج شده و o را فشار دهید تا خط جدیدی در پایین خط فعلی که مکاننما در آن قرار دارد ایجاد شود.
کاراکتر “i” برای افزودن مطلب، “a” برای افزودن مطلب بعد از کاراکتری که مکاننما روی آن است، “A” برای افزودن به انتهای خط، “o” برای ایجاد یک خط جدید بعد از خط فعلی و “O” (اُو بزرگ) برای ایجاد خط جدید بالای خط فعلی استفاده میشود.
بعد از اینکه تایپ متن مورد نظرتان به پایان رسید کلید <Esc> را فشار دهید.
پس از اینکه نشانگر –INSERT– از گوشه پایین سمت چپ صفحه محو شد، شما وارد مُد کامند میشوید. اگر در انتهای صفحه نمایش نام فایل نمایش داده شود یا چیزی در آنجا درج نشده باشد، یعنی شما در مُد کامند هستید.
در صورتیکه هیچ نام فایلی بعد از دستور vi ذکر نشده باشد، ویرایشگر تا زمانی که آن فایل ذخیره شود آن را در بافر خود نگه میدارد. یکی از ویژگیهای مهم vi، که پیشتر ذکر شد، باز کردن چندین فایل همزمان با هم است. به کمک این ویژگی میتوان هر کدام از فایلها را مستقلا ویرایش کرد. در صورتی که چندین فایل همزمان توسط این ویرایشگر باز شده باشند برای دسترسی به فایلهای دیگر از دستور زیر استفاده نمایید.
--NEXT
زمانی که در مُد کامند (normal) هستید میتوانید با کاراکترهای خاصی مکاننما را به مکان مورد نظر در متن ببرید. جدول زیر برخی از این کلیدهای مربوط به حرکت در متن را نشان میدهد.
-
کلیدها عمل h/j/k/l
مکاننما را به چپ/پایین/بالا/راست انتقال می دهد
spacebar مکاننما را با هر space به سمت راست می برد
-/+ مکاننما را در اولین ستون بالا و پایین می برد
ctrl-d به اندازه نصفی از صفحه پایین می رود
ctrl-u به اندازه نصفی از صفحه بالا می رود
ctrl-f به اندازه یک صفحه جلو می رود
ctrl-b به اندازه یک صفحه به عقب بر می گردد
M (shift-h)
مکاننما را به وسط صفحه می برد
H مکاننما را به بالای صفحه می برد
L مکاننما را به پایین صفحه می برد
W
w
5wمکاننما را به اندازه یک کلمه به جلو می برد
مکاننما را به اندازه ۵ کلمه جلو می برد
B
b
5bمکاننما را به اندازه یک کلمه به عقب می برد
مکاننما را به اندازه ۵ کلمه به عقب می برد
e
5eمکاننما ره به انتهای کلمه می برد
مکاننما را به انتهای کلمه پنجم می برد۰ (صفر) مکاننما را به ابتدای خط می برد
$ مکاننما را به انتهای خط می برد
) مکاننما را به ابتدای جمله بعدی می برد
( مکاننما را به ابتدای جمله فعلی می برد
G مکاننما را به انتهای فایل می برد
‘. مکاننما را به خط قبلی تغییریافته می برد
برای حرکت بین کاراکترها در متن بعد از فعال کردن مُد کامند میتوانید از کلیدهای h، j، k و l استفاده کنید.
- سمت چپ h
- پایین j
- بالا k
- سمت راست l
البته برای این کار میتوان از کلیدهای جهتنما هم استفاده کرد. اما برای افزایش سرعت تایپ پیشنهاد شده که از این حروف استفاده شود. زیرا در بلند مدت، زمانی که صرف حرکت انگشتان از قسمت حرفی صفحه کلید به کلیدهای جهتنما میشود خیلی زیاد است.
از دیگر کلیدهای (دستورهای) مورد استفاده علامت $ است که مکاننما را از مکان فعلی به انتهای خط مورد نظر منتقل میکند. برای وارد شدن به مُد command-line میبایست از “:” استفاده کنید و سپس از ویژگیهای این قسمت استفاده نمایید.
برای ذخیره کردن متن و خارج شدن از ویرایشگر از دستور زیر استفاده میشود:
:wq! یا :x
این دستور همه سطرهای فایل متنی باز شده را شمارهگذاری میکند:
:set nu
این دستور شماره گذاری کنار خطوط را از بین میبرد:
:set nonu
این دستور از سطر M تا سطر N به دنبال رشته s1 میگردد و رشته s2 را جایگزین آن میکند. حرف g به معنی (general) هم که آخر دستور اضافه شده باعث میشود این دستور به کل خطوط اعمال شود:
:M,Ns/s1/s2/g
این دستور هم از سطر M تا سطر N را حذف میکند:
:M,NmO
مثال:
این دستور از خط ۱۲ به بعد را حذف میکند. علامت $ نشان دهنده آخرین خط میباشد:
:۱۲,$d
در انتها بعد از ویرایش متن برای ذخیره کردن آن و خارج شدن از ویرایشگر میتوانید از دستورات زیر در مد command-line استفاده نمایید:
|
:q[uit] |
خاتمه دادن به Vim |
|
:q[uit]! |
بدون در نظر گرفتن تغییرات از فایل خارج می شود |
|
:cq[uit] |
بدون در نظر گرفتن تغییرات از فایل خارج می شود |
|
:wq |
تغییرات را ذخیره می کند و خارج می شود |
|
:wq! |
تغییرات را در فایل ذخیره می کند و خارج می شود |
|
:wq {file} |
تغییرات را در فایل ذخیره می کند و در صورت وجود تغییری از Vim خارج می شود. |
|
:wq! {file} |
تغییرات را ذخیره می کند و خارج می شود |
|
:qa |
تمام فایل های باز را می بندد |
|
ZZ |
تغییرات را ذخیره می کند و خارج می شود |
|
ZQ |
از فایل خارج می شود. مانند “:q!” |
Bram Moolenaar (نویسنده اصلی Vim) میگوید بهترین روش برای یادگیری این ویرایشگر استفاده از آن است. یکی از مسایلی که موجب سردرگمی کاربران در استفاده از این ویرایشگر میشود اینست که کاربر فراموش میکند که در کدام مُد است. برای بازگشت به مد normal از هر مدی، فقط کافیست کلید <Esc> را فشار دهید. از این مد به راحتی میتوان به دو مُد دیگر رفت.
vim ویرایشگر بسیار مفیدی است و یادگیری اصول ابتدایی آن در شرایطی که شاید هرگز فکرش را نکنید میتواند یاریگر شما باشد. یادگیری آن (یا دست کم اصول اولیه آن) را به بعدها واگذار نکنید.
۲۰ نظر + نظر بدهید
دیدگاه شما چیست ؟
دریافت مطالب از طریق ایمیل
دستهها
- آموزش (۷۵)
- اخبار (۱۱۳)
- اخبار سایت (۱۱)
- اخبار گنو/لینوکس (۸۸)
- مصاحبه ها (۵)
- بررسی (۶۰)
- مقاله (۲۶)
- مقالات فنی (۱۴)
- مقالات مفهومی (۸)
- همه ی پست ها (۱)
آرشیو ماهیانه
- اردیبهشت ۱۳۹۲ (۶)
- فروردین ۱۳۹۲ (۱)
- اسفند ۱۳۹۱ (۱)
- بهمن ۱۳۹۱ (۲)
- دی ۱۳۹۱ (۲)
- آذر ۱۳۹۱ (۳)
- آبان ۱۳۹۱ (۲)
- مهر ۱۳۹۱ (۵)
- شهریور ۱۳۹۱ (۶)
- مرداد ۱۳۹۱ (۱۲)
- تیر ۱۳۹۱ (۱۳)
- خرداد ۱۳۹۱ (۱۴)
- اردیبهشت ۱۳۹۱ (۱۹)
- فروردین ۱۳۹۱ (۱۳)
- اسفند ۱۳۹۰ (۲۴)
- بهمن ۱۳۹۰ (۱۳)
- دی ۱۳۹۰ (۵)
- آذر ۱۳۹۰ (۸)
- آبان ۱۳۹۰ (۱۰)
- مهر ۱۳۹۰ (۱۴)
- شهریور ۱۳۹۰ (۲۱)
- مرداد ۱۳۹۰ (۱۴)
- تیر ۱۳۹۰ (۱۱)
- خرداد ۱۳۹۰ (۱۱)
- اردیبهشت ۱۳۹۰ (۸)
- فروردین ۱۳۹۰ (۱۲)
- اسفند ۱۳۸۹ (۷)
- بهمن ۱۳۸۹ (۱۰)
- دی ۱۳۸۹ (۱)

نوشته شده توسط







مطلب خیلی خوبی بود. من خودم فکرش رو نمیکردم که یه جا نیاز داشته باشم با ویم کار کنم! ولی یه بار سر کانفیگ کردن یه روتر بدجوری بهش نیاز پیدا کردم!
ممنون امیدوارم مطالب بیشتری از شما ببینم
ممنوووووووووووووووون
خیلی خوب بود علی
دنبال همچین پستی بودم
گشادی نمیذاش برم سراغ ریسورس های انگلیسی :دی
ممنون
تشکر بابت این آموزش خوب و به جا
من خودم توی نصب آرچ خواستم ازش استفاده کنم که همونجا عطاش رو به لقاش بخشیدم و بیخیال شدم الان فهمیدم که توی مد مورد نظر نبودم!
من که فقط با nano رابطه خوبی داشتم چون اصلا از vim صر درنمی آوردم!! الآن رابطم با این هم بعد این آموزش بهتر شد :)
چون vi جزیی از استاندار پازیکس است روی همه *nixها هستش . واین اهمیت یادگیری vi رو حداقل در حد مبتدی نشون میده. از سروهای سان تا انواع و اقسامِ یونیکس ها و لینوکسها vi را دارن
دوستان عزیز ممنون که مطلب رو خوندین و خوشحالم که مفید بوده.
vi در یک تصویر
http://up.vatandownload.com/images/fd1p6d1dbb916s53hr33.gif
عالی!
ممنون. اگه یه آموزش کامل مثل این واسه ایمکس هم بنویسین که دیگه فوق العاده میشه!
ببخشید ولی واقعا ویراشگر مزخرفیه من برای پایتون نصب کردم و سریع پاکش کردم ترجیح می دم با ترمینال کار کنم تا vim البته از aptana در حال حاضر استفاده می کنم که واقعا خوبه
دوست عزیز ویرایشگر وی آی واقعا ویرایشگر قوی هستش و همه جا ازش استفاده می کنند. توی ترمینال هم استفاده میشه. بتون پیشنهاد می کنم باش کار کنید و یاد بگیرید :) .
پست خوبی هست ولی من گذشته از تعریف می خوام انتقاد هم بکنم
به نظرم بهتر بود نصبش رو توی این پست وارد نمی کردین چون اگر کسی نصب برنامه از سورس رو هم بلد نباشه به راحتی با یه سرچ (نمی گم گوگل) می تونست پیدا کنه. نمی دونم چرا شایع شده که بیشتر افراد فکر میکن هرچیزی که یه حای دیگه هست و خوبه حتما باید توی سایت یا وبلاگ ما هم یه کپی ازش باشه. که متأسفانه وب فارسی رو شدیداً کم ارزش کرده. برای مثال خیلی سخته بشه فهمید نویسنده ی اصلی یک متن کی و کجا بوده.
به جای این بهتر بود روی آموزش تمرکز بشه چیزی مثله vimtutor و برای نصب خواننده ی نا آگاه رو به جستجو در مورد نحوه ی نصب برنامه از روی سورس تشویق می کردین تا هم مهارت جستجوی خودش رو افزایش بده و هم مطلب شما بهتر میشد.
برای دوستانی که در جریان نیستن عرض کنم که vimtutor یه برنامه هست که همراه vim نصب میشه و خیلی جامع و کامل و خوب نحوه ی کار با vim رو آموزش میده.
کاربرا که وقتشونو از سر راه پیدا نکردند که حالا دو ساعت هم برن دنبال آموزشهای تکمیلی بگردند. خوب شما که حرفه ای هستید اون قسمت اولشو نخونید!
“هیچ” وقت وی-آی رو دوست نداشتم. زشته, سخته (ایمکس با اون همه امکانات خارق العاده اینقدر بد-دست نیست!).
من که هنوز نفهمیدم vi کجا به درد می خوره. ولی خوندمش
وقتی شما سرور نصب می کنید و محیط x ندارید حتمن باید از یه همچین ادیتوری استفاده کنید.
در ضمن قابلیت هاش خیلی بیشتر از هر ادیتوری هستش که تصورش رو می کنید.
فکر کنم این رو اشتباه نوشتید:
برای ذخیره کردن متن و خارج شدن از ویرایشگر از دستور زیر استفاده میشود:
:q!
درسته اشتباه شده بود، داخل متن تصحیحش کردم،
تشکر از تذکرتون.
به نظرم بررسی های خودتون رو از مقایسه ی Vim و ٍEmacs منتشر کنید. من الان حدود یک سالی هست که برای ویرایش فقط از Vim استفاده می کنم، برام کار یک IDE کامل رو هم انجام می ده و خیلی هم بهش عادت کردم، ولی از روی تنبلی هرگز سراغ Emacs نرفتم، فکر می کنم اگر یک مقایسه ی منصفانه و دقیق داشته باشین خیلی به درد بخور باشه.
vim یک ادیتوره !چجوری کار بک IDE رو انجام میده؟
این مدهای مختلف به چه دردی میخورند منظور هر مد برای چه کاریه؟