vim یک ادیتور همه کاره
دوشنبه, ۲۷ شهریور ۱۳۹۱، ۰۲:۵۳ ب.ظ
vim یک ادیتور خیلی پیشرفته با امکانات بالاست. برای خیلی ها پیدا کردن یک ادیتور با قابلیت های بالا یه دغدغه ست. ادیتوری که بتونید به راحتی و با سرعت خیلی بالا کاراتون رو باهاش انجام بدید. برای مثال یه فایل sql دارید با ۵۰۰ هزار خط! برای باز کردن این فایل با خیلی از تکست ادیتور ها شما مشکل خواهید داشت. وقتی من این فایل رو با geany باز کردم تقریبن باز نشد چه برسه به اینکه بخام درش تغییراتی بدم. مثلن از خط ۱۵۰ هزار تا ۲۰۰ هزار پاک کنم؟!
نصب vim:
برای این کار می شه از vim استفاده کرد. vim یک ادیتور پیشرفته ست (تقریبن vi ی هستش که کامل شده).
vi در تمامی لینوکس ها به صورت پیش فرض نصب می شه اما ممکنه vim نصب نشده باشه(بسته به توزیعی که استفاده می کنید).
vim در تمام سیستم عامل ها قابل نصب هستش. برای دانلود می تونید به نشانی سایت اصلی vim برید.
برای نصب vim از مخازن در توزیع های دبیان بیس می تونید از این دستور استفاده کنید:
کار با تب ها:
شما می تونید بنویسید sudo vim و ادیتور رو باز کنید. اما برای باز کردن فایل خاصی می تونید از این دستور استفاده کنید:
خروج از یک فایل:
برای خارج شدن از یک فایل از
ذخیره ی فایل:
برای ذخیره ی فایل می تونید از w: استفاده کنید. برای ذخیره و خروج از wq: و برای اعمال اینکار ها از کلید a استفاده کنید. ینی مثلن برای ذخیره کردن تمامی تب ها و خروج می تونید از wqa: استفاده کنید.
بازگردانی و تکرار (redo و undo):
به جای Ctrl+z می تونید از کلید u استفاده کنید و برای redo از کلید Ctrl+r استفاده کنید.
نوشتن در فایل:
برای وارد شدن به حالت نوشتاری می تونید کلید i یا a رو بزنید. فرقشون اینه که اولی قبل از نشانگر شروع می کنه به تایپ و دومی بعد از نشانگر
با کلید o یا O می تونید در هر سطری که هستید به سطر بعد یا قبل برید و در حالت نوشتار قرار بگیرید.
کپی - پیست :
برای کپی کردن یه خط می تونید از کلید yy استفاده کنید و برای پیست کردن از کلید p استفاده کنید.
اگر بخواید یه بخشی از یک خط رو کپی کنید باید به این صورت عمل کنید:
ابتدا کرسر رو می برید به ابتدای محلی که کپی می خاید بکنید. بعد کلید v رو می زنید و وارد حالت visual می شید و با کلید های جلو و عقب مقداری رو که می خاید سلکت می کنید و بعد کلید y رو می زنید. بعد هر جایی خواستید پیست کنید کلید p رو می زنید.
برای کپی کردن ۱۰ خط از محل فعلی به این صورت عمل کنید:
برای رفتن به خط ۳۰ کافیه به اینکارو بکنید:
پاک کردن:
برای پاک کردن یک کاراکتر می تونید از کلید x یا X استفاده کنید. فرقشون اینه که یکی قبل از نشانگر رو پاک می کنه و یکی بعد از نشانگر رو.
برای پاک کردن یک خط کافیه از dd استفاده کنید.
حالا می خاید از محل نشانگر ۱۰ خط رو پاک کنید. چیکار باید بکنید؟
جستجو:
برای جستجو در فایل می تونید از / استفاده کنید و برای رفتن به نتیجه ی بعدی از کلید n یا N استفاده کنید.
می خاید به جای test از test1 استفاده کنید و همه ی testها رو به test1 تبدیل کنید. برای replace می تونید اینطوری عمل کنید:
ینی میتونید دستور بالا رو به این صورت هم بنویسید:
احتمالن در ابتدا برای هایلایت کردن و تب ایندنت دچار مشکل بشید. برای همین یه سری تنظیمات ساده رو بهتون می گم که باید در شاخه ی home در فایل .vimrc اضافه کنید:
بازم اگه سوالی داشتید میتونید زیر همین بخش بپرسید و تا بتونم جواب می دم بهتون.
دوستان خوبمون در سایت لینوکس ریویو هم یه پست خوب در این مورد دارن:آموزش vi
همچنین برای اطلاعات بیشتر می تونید به این صفحات می تونید مراجعه کنید :
vi در تمامی لینوکس ها به صورت پیش فرض نصب می شه اما ممکنه vim نصب نشده باشه(بسته به توزیعی که استفاده می کنید).
vim در تمام سیستم عامل ها قابل نصب هستش. برای دانلود می تونید به نشانی سایت اصلی vim برید.
برای نصب vim از مخازن در توزیع های دبیان بیس می تونید از این دستور استفاده کنید:
apt-get install vimتقریبن تمامی دستورات vi در vim هم کار می کنه اما شما در vi خیلی از امکانات مورد نظرتون رو نخواهد داشت. مثل Auto Complete یا syntax highlighter یا ... برای همین ابتدا vim رو نصب کنید و سپس در خط فرمان بنویسید:
vimادیتور باز می شه و می تونید شروع کنید به کار.
کار با تب ها:
شما می تونید بنویسید sudo vim و ادیتور رو باز کنید. اما برای باز کردن فایل خاصی می تونید از این دستور استفاده کنید:
vim test.phpاگر نام فایل رو وارد نکردید می تونید با زدن این دستور فایل مورد نظر رو باز کنید:
:tabedit [fileurl]
برای نشون دادن دستورهای موجود (معادل دابل تب در ترمینال) شما می تونید از کلید Ctrl+D استفاده کنید.برای باز کردن یه فایل جدید در یه تب دیگه می تونید از این دستور استفاده کنید:
:tabnew [fileurl]برای حرکت بین تب ها می تونید از gt و gT استفاده کنید. توجه کنید که کلیدها رو پشت سر هم می زنید. ینی کلید g رو می زنید و بعد کلید t یا T رو می زنید.
خروج از یک فایل:
برای خارج شدن از یک فایل از
q:
استفاده کنید. اگر در فایل تغییراتی دادید و می خاید ذخیره نشه می تونید از q!: استفاده کنید.ذخیره ی فایل:
برای ذخیره ی فایل می تونید از w: استفاده کنید. برای ذخیره و خروج از wq: و برای اعمال اینکار ها از کلید a استفاده کنید. ینی مثلن برای ذخیره کردن تمامی تب ها و خروج می تونید از wqa: استفاده کنید.
بازگردانی و تکرار (redo و undo):
به جای Ctrl+z می تونید از کلید u استفاده کنید و برای redo از کلید Ctrl+r استفاده کنید.
نوشتن در فایل:
برای وارد شدن به حالت نوشتاری می تونید کلید i یا a رو بزنید. فرقشون اینه که اولی قبل از نشانگر شروع می کنه به تایپ و دومی بعد از نشانگر
با کلید o یا O می تونید در هر سطری که هستید به سطر بعد یا قبل برید و در حالت نوشتار قرار بگیرید.
کپی - پیست :
برای کپی کردن یه خط می تونید از کلید yy استفاده کنید و برای پیست کردن از کلید p استفاده کنید.
اگر بخواید یه بخشی از یک خط رو کپی کنید باید به این صورت عمل کنید:
ابتدا کرسر رو می برید به ابتدای محلی که کپی می خاید بکنید. بعد کلید v رو می زنید و وارد حالت visual می شید و با کلید های جلو و عقب مقداری رو که می خاید سلکت می کنید و بعد کلید y رو می زنید. بعد هر جایی خواستید پیست کنید کلید p رو می زنید.
برای کپی کردن ۱۰ خط از محل فعلی به این صورت عمل کنید:
y10yاگر می خاید از خط ۱۰ تا ۳۰ رو کپی کنید می تونید به خط ۱۰ برید و به این روش عمل کنید:
y30G
به حروف کوچیک و بزرگ دقت کنیدحرکت در صفحه:
برای رفتن به خط ۳۰ کافیه به اینکارو بکنید:
30Gبرای اسکرول تاپ از Ctrl+y و برای اسکرول دان از Ctrl+e استفاده کنید
پاک کردن:
برای پاک کردن یک کاراکتر می تونید از کلید x یا X استفاده کنید. فرقشون اینه که یکی قبل از نشانگر رو پاک می کنه و یکی بعد از نشانگر رو.
برای پاک کردن یک خط کافیه از dd استفاده کنید.
حالا می خاید از محل نشانگر ۱۰ خط رو پاک کنید. چیکار باید بکنید؟
d10dحالا برای پاک کردن خط ۱۰ تا ۵۰ چه می کنید؟
d50Gفکر می کنم کم کم متوجه شدید که از G به عنوان اشاره به شماره ی خط استفاده می شه در تمامی دستورات vim.
جستجو:
برای جستجو در فایل می تونید از / استفاده کنید و برای رفتن به نتیجه ی بعدی از کلید n یا N استفاده کنید.
می خاید به جای test از test1 استفاده کنید و همه ی testها رو به test1 تبدیل کنید. برای replace می تونید اینطوری عمل کنید:
%s/test/test1/gتوجه کنید که می تونید به جای / از @ یا | یا علامت های دیگه استفاده کنید ولی دقت کنید که هر سه تاش باید یکی باشن
ینی میتونید دستور بالا رو به این صورت هم بنویسید:
%s@test@test1@gیا به این صورت:
%s|test|test1|gدستورات vim خیلی بیشتر و کامل تر از این حرف هاست و ما سعی می کنیم در بخش های بعدی هم یه سری دستورات دیگه رو آماده کنیم براتون. ولی خودتون خیلی راحت می تونید با یه سرچ به نتیجه برسید.
احتمالن در ابتدا برای هایلایت کردن و تب ایندنت دچار مشکل بشید. برای همین یه سری تنظیمات ساده رو بهتون می گم که باید در شاخه ی home در فایل .vimrc اضافه کنید:
syntax onشاید تنها بخشی که نیاز به توضیح داشته باشه pastetoggle هستش. در vim وقتی چن خط رو از جای دیگه کپی و پیست می کنید هر خط به اندازه ی خط قبلی تب می خوره و جلو می ره و کدتون به هم می ریزه. برای همین وقتی می خواید از جای دیگه paste کنید می تونید کلید F2 رو بزنید و بعد paste کنید تا کدتون نیاز به ویرایش زیادی نداشته باشه.
set cindent
set smartindent
set autoindent
set noexpandtab
set tabstop=4
set shiftwidth=4
set number
set pastetoggle=
syntax enable
set background=dark
colorscheme default
filetype on
بازم اگه سوالی داشتید میتونید زیر همین بخش بپرسید و تا بتونم جواب می دم بهتون.
دوستان خوبمون در سایت لینوکس ریویو هم یه پست خوب در این مورد دارن:
همچنین برای اطلاعات بیشتر می تونید به این صفحات می تونید مراجعه کنید :
http://www.worldtimzone.com/res/vi.htmlهمچنین ویکی خود سایت vim
http://www.tuxfiles.org/linuxhelp/vimcheat.html
http://vim.wikia.com/wiki/Vim_Tips_Wikiموفق باشید
۹۱/۰۶/۲۷
توی حالت visual احتیاجی به گرفتن شیفت نیست.