این مخزن صرفا جهت تستهای سایت https://vimpersian.github.io ایجاد شده است. مخزن اصلی در آدرس https://github.com/vimpersian/vimpersian.github.io واقع شده است.
Hello Vim World!
ویم، یک ادیتور مودال است. به این معنی که در ویم، ما مودهای مختلف جهت انجام کارهای مختلف داریم. مد عادی ویم، یا همان نرمال مود، حالتی است که در آن ما درون فایل حرکت میکنیم، متن را جستجو میکنیم یا ویرایشهای جزئی انجام میدهیم.
برای وارد کردن متن از مود وردی یا اینسرت مود استفاده میکنیم و برای انتخاب و ویرایشهای بزرگتر از مود ویژوآل، و برای اجرای دستورات خط فرمان ویم یا خط فرمان پوسته، از مود دستوری یا کامند مود استفاده میکنیم. دانستن اینکه ویم فراتر از یک ادیتور است و درواقع یک زبان برای ویرایش متن و کد است در ابتدای کار حیاتی است. در ویم هر کلید کیبورد در مود نرمال به یک کنش یا اکشن اختصاص دارد. مدل ویرایش در ویم این صورت است که ما مدام در بین مودهای مختلف در حال حرکت هستیم و این سرعتی باور نکردنی در پیمایش متن و ویرایش آن به ما میدهد.
ویم دارای گرامر بخصوصی است که آنرا میتوان به COM خلاصه کرد.
برای وارد کردن متن از مود وردی یا اینسرت مود استفاده میکنیم و برای انتخاب و ویرایشهای بزرگتر از مود ویژوآل، و برای اجرای دستورات خط فرمان ویم یا خط فرمان پوسته، از مود دستوری یا کامند مود استفاده میکنیم. دانستن اینکه ویم فراتر از یک ادیتور است و درواقع یک زبان برای ویرایش متن و کد است در ابتدای کار حیاتی است. در ویم هر کلید کیبورد در مود نرمال به یک کنش یا اکشن اختصاص دارد. مدل ویرایش در ویم این صورت است که ما مدام در بین مودهای مختلف در حال حرکت هستیم و این سرعتی باور نکردنی در پیمایش متن و ویرایش آن به ما میدهد.
ویم دارای گرامر بخصوصی است که آنرا میتوان به COM خلاصه کرد.
- count (شمارش)
- operation (عملیات)
- motion (جهت)
تمام دستورات ویم میتوانند با یک عدد پیش از آنها، به تعداد آن عدد انجام شوند. همچنین تمام دستورات ویم نیز میتوانند در جهت خاصی مانند ،چپ، راست، تا آخر خط، تا آخر کلمه، تا آخر پاراگراف ، تا اولین خط خالی و ... انجام شوند.
در ویم یا ویآی، ما میتوانیم با تنها یک کلید ، در متن حرکت کنیم. این حرکتها به کلمات، گروهی از حروف ، اعداد، تک حرف ، توکنها یا خط ها باشند. در منطق ویم، یک کلمه میتواند گروهی از حروف ، اعداد و سمبلها باشد. از طرفی دیگر یک توکن، هر آنچه که با فضای سفید، (اسپیس) جدا شده باشد تلقی میشود.
این راهنما باید بعد از انجام کامل vimtutor خوانده شود.
در ترمینال عبارت
در ویم یا ویآی، ما میتوانیم با تنها یک کلید ، در متن حرکت کنیم. این حرکتها به کلمات، گروهی از حروف ، اعداد، تک حرف ، توکنها یا خط ها باشند. در منطق ویم، یک کلمه میتواند گروهی از حروف ، اعداد و سمبلها باشد. از طرفی دیگر یک توکن، هر آنچه که با فضای سفید، (اسپیس) جدا شده باشد تلقی میشود.
این راهنما باید بعد از انجام کامل vimtutor خوانده شود.
در ترمینال عبارت
vimtutor را وارد کنید و درسها را انجام دهید.
اگر با زبان انگلیسی آن راحت نیستید، این پلیلیست را در یوتوب ببینید.
در این پلیلیست تمامی درسهای
اگرچه بیشتر اطلاعات داخل
vimtutor
بهعلاوهی درسهایی در باره نصب پلاگین و شخصی سازی ویم، قرار
گرفته است.اگرچه بیشتر اطلاعات داخل
vimtutor در این سایت پوشش داده
میشود، فرض بر آن است که مخاطب vimtutor را گذرانده است. مرحله اول یادگیری
ویم، همیشه و همهجا vimtutor است.- حرکت در فایل
- حرکت با حروف، کلمه یا توکن
- حرکت با خطوط
- حرکت به وسیله صفحه
- وارد کردن متن
- ویرایش متن
- کات کپی و جایگذاری
- حالت ویژوال
- جستجو در متن
- ذخیره کردن و خروج از فایل
- کار کردن با بیش از یک فایل
- مارکها و پرشها
- ماکرو
- فعال کردن تمها در ویم
- دستورات جایگزینی متن
- فلگ های مرسوم برای دستورات جایگزینی
- آرگومان های خط فرمان
حرکت در فایل
حرکت با حروف، کلمه یا توکن
کلیدهای اساسی حرکت در ویم اینها هستند:
h– حرکت نشانگر به چپj– حرکت نشانگر به پایینk– حرکت نشانگر به بالاl– حرکت نشانگر به راست
این کلیدها را میتوان با یک شمارش همراه کرد تا به توان همان عدد انجام شوند
-
5jپنج خط به پایین میرود b– حرکت به اول یک کلمهB– حرکت به اول یک توکنw– حرکت به اول کلمهی بعدW– حرکت به اول توکن بعدe– حرکت به آخر کلمهE– حرکت به آخر توکن
برای پرش به پرانتز بسته، گیومه بسته و غیره از **`%`** استفاده کنید
:h matchpairs
حرکت با خطوط
0 \ zero– حرکت به اول خط فعلی$ \ dollar sign– حرکت به آخر خط فعلی^ \ caret sign– حرکت به اولین کاراکتر موجود در خط#G/#gg/:#حرکت به شماره خط مشخص، (شماره خط جایگزین هشتگ شود)
برای استفاده از این قابلیت، شماره خطوط را فعال کنید.
:set number
حرکت به وسیله صفحه
دستورهای زیر برای اسکرول کردن سریع در فایل کاربرد دارند.
Ctrl + b– یک صفحه کامل به عقب رفتنCtrl + f– یک صفحه کامل به جلو رفتنCtrl + d– نصف صفحه جلو رفتنCtrl + u– نصف صفحه عقب رفتنCtrl + e– صفحه را بدون حرکت دادن نشانگر یک خط پایینتر بردنCtrl + y– صفحه را بدون حرکت دادن نشانگر یک خط بالاتر بردنCtrl + o– به عقب رفتن در تاریخچهی پرش ها. برای حرکت بین فایلها و بافرها هم کاربرد دارCtrl + i– برعکس دستور بالا
H– حرکت به بالای صفحهM– حرکت به وسط صفحهL– حرکت به پایین صفحه
وارد کردن متن
i– وارد شدن به حالت ورود متنI– وارد کردن متن در اول خطa– سوییچ کردن به حالت ورود متن بعد از نشانگرA– وارد کردن متن در آخر خطo– باز کردن یک خط جدید زیر خط فعلیO– باز کردن خط جدید بالای خط فعلیea– وارد کردن متن در آخر کلمهEsc– خارج شدن از حالت ورود متن و برگشنن به حالت نرمال
ویرایش متن
r– جایگزین کردن یک کاراکتر و بازگشت به حالت نرمالcc– جایگزین کردن کل خط (خط را پاک میکند و به خالت ورود متن میرود)C/c$– جایگزین کردن متن از مکان نشانگر تا آخر خطcw– جایگزین کردن تا آخر کلمهs– جایگزین کردن یک کاراکتر و رفتن به حالت ورود متنJ– ادغام خط فعلی و خط زیر آن با یک اسپیس فاصلهgJ– ادغام خط فعلی با خط زیر آن بدون اسپیسu– undoCtrl+r– redo.– تکرار آخرین دستور
کات کپی و جایگذاری
yy– کپی کردن کامل خط فعلی#yy– کپی کردن تعداد مشخصی از خطوطdd– کات کردن کل خط#dd– کات کردن تعداد مشخصی از خطوطp– جایگذاری بعد از نشانگرP– جایگذاری قبل از نشانگر
حالت ویژوال
به غیر از حالت ورود متن (insert mode) و حالت نرمال (normal mode) و حالت دستوری (command mode)، حالت دیگری نیز به نام حالت ویژوال (visual mode) وجود دارد. از این مود برای انتخاب و ویرایش و انجام عملیاتهای مختلف بر روی بخشهای بزرگتری از متن استفاده میشود ویژوال مود سه حالت کلی دارد. - حالت کاراکتری - حالت خطی - حالت بلاکcharacter mode, line mode, and block mode
v– انتخاب متن در حالت کاراکتریV– انتخاب متن در حالت خطیCtrl+v– انتخاب متن در حالت بلاک
پس از فعالسازی یکی از حالتها، با استفاده از کلیدهای جهت متن را انتخاب کنید.
o– حرکت از ابتدای متن انتخاب شده به آخر آنaw– انتخاب یک کلمهab– انتخاب یک بلاک کد که در بین پرانتز استaB– انتخاب یک بلاک کد که در بین آکولاد است {}at– انتخاب یک بلاک کد که در بین تگ است <>ib– انتخاب قسمت داخلی یک بلاک کد که بین پرانتز استiB- انتخاب قسمت داخلی یک بلاک کد که بین آکولاد است {}it– انتخاب قسمت داخلی یک بلاک کد که بین یک تگ است <>
پس از انتخاب متن مورد نظر میتوانید عملیاتهای مختلف را به وسیلهی کلیدهای زیر انجام دهید.
y– کپیd– کاتp– جایگذازی
جستجو در متن
* \ asterisk– رفتن به وقوع بعدی از کلمهی زیر نشانگر# \ pound sign– رفتن به وقوع قبلی از کلمهی زیر نشانگر/pattern–جستجوی یک الگوی مشخص در فایل?pattern– جستجوی یک الگوی مشخص از مکان فعلی تا اول متنn– پرش به وقوع بعدی الگوی یافت شدهN– پرش به وقوع قبلی الگوی یافت شده
ذخیره کردن و خروج از فایل
:w– ذخیره کردن:wq/:x/ZZ– ذخیر کردن و خروج از ویم:q– خروج:q!/ZQ– خروج بدون ذخیره کردن تغییرات:w new_file_name– ذخیره کردن تحت نامی جدید و ادامه دادن به ویرایش فایل اصلی:sav– ذخیره کردن تحت نامی جدید و ادامه دادن به ویرایش فایل کپی شده:w !sudo tee %– ذخیره کردن فایل بهوسیلهی سودو و تی، مناسب وقتی که فایلی را بدون دسترسی سودو باز کردهایم tee
کار کردن با بیش از یک فایل
:e file_name– باز کردن فایل در یک بافر جدید:bn– رقتن به بافر بعدی:bp– بازگشت به بافر قبلی:bd– بستن بافر:b#– رفتن به بافر با عدد شناسایی مشخص:b file_name– رفتن به بافر با نام مشخص:ls– لیست کردن تمام بافر باز ( شناسهی عددی هر بافر کنار نام آن ظاهر خواهد شد)
:sp file_name– باز کردن یک فایل در یک اسپلیت افقی:vs file_name–باز کردن یک فایل در یک اسپلیت عمودی:vert ba– باز کردن همهی بافر های فعلی در اسپلیتهای عمودی:tab ba– ویرایش تمام بافرها بهوسیله تبgt– رفتن به تب بعدی-
gT– رفتن به تب قبلی Ctrl+ws– اسپلیت کردن صفحه به صورت افقیCtrl+wv– اسپلیت کردن صفحه به صورت عمودیCtrl+ww– سوییچ کردن بین اسپلیت ها (مشابه alt + tab)Ctrl+wq– بستن اسپلیت هاCtrl+wx– جابجا کردن اسپلیت ها با یگدیگرCtrl+=– برابر کردن طول و عرض تمام اسپلیتها
مارکها و پرشها
m[a-z]– مارک کردن موقعیت فعلی بهوسیلهی حروف الفباM[a-z]– مارک کردن خط فعلی بهوسیلهی خطوط الفبا`a- پرش به موقعیتی که با حرف آ مارک شدهa`.– پرش به آخرین تغییر در فایل`0– پرش به آخرین موقعیت فایل قبل از بسته شدن ویم``– پرش به آخرین پرش:marks– لیست کردن همهی مارک ها:jumps– لیست کردن همهی پرش ها:changesلیست کردن همهی تغییراتCtrl+o– رفتن به پرش قبلیCtrl+i– رفتن به پرش بعدیg;– رفتن به تغییر قبلی در لیست تغییراتg,– رفتن به نغییر بعدی در لیست تغییرات
ماکرو
برای دستور ها یا ویرایش های تکرار شونده در ویم میتوان از ماکروها استفاده کرد.
برای ضبط یک ماکرو ابتدا کلید q و سپس نام رجیستری که میخواهیم ماکرو در آن ضبط شود را وارد میکنیم، بدین ترتیب میتوانیم چندین ماکرو بصورت همزمان داشته باشیم. در این مثال از رجیستر a استفاده شده است.
qa– ضبط کردن یک ماکروaq– توقف ضبط یک ماکرو@a– اجرا کردن ماکروa@@– اجرای دوبارهی ماکرو
برای مثال اگر محتوای زیر را داشته باشیم:
aaa
bbb
ccc
ddd
و بخواهیم در آخر هر خط یک کاراکتر وارد کنیم، برای مثال حرف x، می توانیم ماکرو زیر را ضبط کنیم.
Ax<ESC>j
با در نظر گرفتن کلید ضبط و پایان ضبط ماکرو
qAx<ESC>jq
در اینجا با استفاده از اپراتور A، به آخر خط رفته و وارد مود ورود متن یا همان اینسرت مود می شویم. حرف x را تایپ کرده و با زدن کلید اسکیپ به مود نرمال بر می گردیم و در آخر با زدن کلید j به خط پایین می رویم تا ماکرو بتواند ادامه پیدا کند.
همانطور که پیشتر گفتیم، همهچیز در ویم شمارش پذیر یا توان پذیر هستند. بنابراین برای اجرای یک ماکرو به توان عدد خاصی، آن عدد را قبل از فراخوانی ماکرو وارد میکنیم.
10@a
ماکروی ضبط شده در رجیستر را به تعداد ده بار اجرا میکند
فعال کردن تمها در ویم
:colorscheme [colorscheme_name]– تغییر تم رنگی:colorscheme [space]+Ctrl+d– لیست کردن تمام تم های رنگی موجود
چند تم پیشفرض زیبا:
- retrobox
- lunaperche
- elflord
- slate
با استفاده از دستور زیر نیز میتوان رنگ زمینه پیشفرض ویم را به روشن یا تاریک تغییر داد:
:set background=dark
:set background=light
برای استفاده بهتر از رنگ ها و همچنین فعال سازی سینتکس، از دستور زیر استفاده می کنیم:
:syntax on
بعدها شیوه ذخیره کردن این تنظیمات در ویم را خواهیم آموخت.
دستورات جایگزینی متن
یکی از قابلیتهای قدرتمند ویم، دارا بودن یک نوع فرمان SED داخلی است. این فرمان که در ویم معمولاً substitute خوانده میشود، ابزار بسیار پیشرفتهای برای یافتن و ویرایش متن به وسیلهی الگوهای رجکس است. با استفاده از این دستور، کاربر ویم میتواند ویرایشهای عظیم و پیچیدهای را روی فایلها اعمال کند. عملیاتهای طولانی و طاقت فرسای اصلاح متنی طولانی با استفاده صحیح از این دستور به آسانی صحبت کردن با بهترین دوستتان میشوند. برای مثال, یک فایل html با محتوای زیر داریم.Quote of the day
Shopenhauer
"The majority of men... are not capable of thinking, but only of believing, and... are not accessible to reason, but only to authority."(Arthur Shopenhauer)
فرض میکنیم که این بخشی از یک مقاله دانشگاهی یا پستی برای یک وبلاگ است. همچنین فرض میکنیم که ما نام آرتور شوپنهاور را از اول این فایل اشتباه تایپ کردهایم. بهجای Sch برای صدای ش در آلمانی از Sh در انگلیسی استفاده کردهایم. حالا ساعتها کار ما بخاطر این اشتباه غیرقابل ارائه است.
برای حل این مشکل از یک دستور جایگزینی ساده استفاده میکنیم.
:%s/Shopenhauer/Schopenhauer/g
اجازه بدهید دستور را خرد کنیم.
- % همیشه اشاره به فایل فعلی در ویم دارد، اینجا یعنی در این فایل بگرد
- s شروع دستور جستجو و جایگزینی همیشه با این حرف است. به معنی substitute
- /الگوی هدف/
- /الگوی مقصد/
- g انجام عملیات برای تمامی مچها
نکته
در ویم نقطه . اشاره به خط زیر نشانگر دارد
سینتکس ساده ی دستورات جایگزینی به شکل زیر است:
:s/search/replace/flags
فلگ های مرسوم برای دستورات جایگزینی
cتایید کردن هر جایگزینی بصورت دستیeساکت کردن ارورها در صورتی که الگو پیدا نشودiنادیده گیری حروف بزرگ و کوچک ignorecaseIحساسیت به حروف بزرگ و کوچکgانجام جایگزینی در تمام مچها، در غیر این صورت جایگزینی پس از اولین مچ متوقف میشودnنمایش تعداد مچها و عدم جایگزینی
آرگومان های خط فرمان
آرگومان های خط فرمان ویم، آپشن هایی هستند که برای تغییر عمل کرد ویم در هنگام باز کردن آن از ترمینال، می توانید مقابل نام دستور ویم قرار دهید. در جدول زیر تعداد زیادی از این آرگومان ها برای شما با توضیحات فارسی قرار داده شده است.
پر کاربردترین این آرگومان ها از نظر نگارنده در جدول اول و باقی آن ها در جدول دوم آمده اند.
جدول اول
| Option | Description |
|---|---|
-o |
باز کردن تعدادی فایل در اسپلیت های افقی |
-O |
باز کردن تعدادی فایل در اسپلیت های افقی عمودی |
-p |
باز کردن تعدادی فایل در تب های مجزا درون ویم |
+/{pat} |
تعیین جایگاه نشانگر براساس اولین وقوع رجکس |
-u {vimrc} |
خواندن فایل پیکره بندی غیر از فایل پیش فرض |
--clean |
باز کردن ویم بدون تنظیمات شخصی - بدون ویم آرسی |
--version |
چاپ اطلاعات مربوط به ورژن و ویژگی ها |
جدول دوم
| Option | Description |
|---|---|
vim |
باز کردن ویم و یک بافر خالی در حالت نرمال |
vim filename |
باز کردن ویم با یک فایل مشخص |
vim - |
stdin خواندن متن از ورودی استاندارد |
-n or --normal |
باز کردن ویم در حالت نرمال، پیشفرض |
-i or --insert |
باز کردن ویم در مود اینسرت |
-R or --readonly |
باز کردن فایل در حالت غیرقابل ویرایش |
-N or --noplugin |
باز کردن ویم بدون لود کردن هیچ پلاگینی |
+[num] |
تعیین جایگاه نشانگر براساس شماره خط |
+{command} or -c {command} |
اجرای یک دستور پس از بازکردن فایل |
-S {file} |
سورس کردن یک فایل ویم اسکریپت |
-g or --gui |
باز کردن جی ویم یا همان ویم در پنجره گرافیکی |
-A |
باز کردن ویم در حالت عربی، راست به چپ آینه شده، درصورتی که با گزینه مربوط کامپایل شده باشد |
-b |
حالت ویرایش فایلهای باینری |
-C |
vi حالت هماهنگی با ادیتور |
-d |
diff باز کردن ویم در حالت دیف , برای مقایسه فایلها |
-E |
باز کردن ویم در مود ارتقا یافته ی اکس |
-F |
باز کردن ویم با تنظیمات فارسی، این گزینه دیگر وجود ندارد |
-h |
نمایش پیام کمکی |
-m |
غیر فعال کردن امکان ایجاد تغییر |
-N |
vi خاموش کردن تطابق با |
-R |
read only حالت |
-r |
لیست کردن فایل های سواپ ویم جهت ریکاوری |
-x |
فعال سازی رمزگذاری فایل |
-y |
باز کردن ویم در حالت ایزی-ویم / در این حالت ویم نت پد ویندوز را شبیه سازی می کند |
-Z |
باز کردن ویم در حالت محدود، جلوگیری از اجرای دستورات پوسته و غیره |
-- |
اعلام پایان آرگومان های ویم، پس از این تمام آرگومان ها به عنوان نام فایل خوانده می شوند |
آخرین آپدیت:
۲۵ شهریور ۱۴۰۱
Sha Sha 25 07:07:01 +0330 1402
Contact me