آموزشچگونه

آموزش خط فرمان: قسمت سی و چهارم، چگونگی کار با ویرایشگر vi

Print Friendly, PDF & Email

در این آموزش به شرح چگونگی کار با ویرایشگر متنی vi خواهیم پرداخت.

جابه‌جا کردن مکان‌نما در vi

وقتی که در حالت فرمان (Command Mode) در برنامه vi هستیم، vi فرمان‌های زیادی به منظور جابه‌جا کردن مکان‌نما در اختیار ما قرار می‌دهد که برخی از آن‌ها به همراه less به کار می‌روند. در جدول زیر لیستی از این فرمان‌ها را مشاهده می‌کنید:

به چه دلیل کلیدهای K، J، H و L به منظور جابه‌جایی مکان‌نما به کار می‌روند؟ به این دلیل که وقتی vi برای اولین بار نوشته شد، همه ترمینال‌های تصویری دارای کلیدهای جهت‌نما نبودند و تایپیست‌های حرفه‌ای می‌توانستند از کلیدهای عادی برای جابه‌جایی مکان‌نما استفاده کنند بدون نیاز به اینکه دست خود را از روی صفحه‌کلید بردارند.

بسیاری از فرمان‌های موجود در vi را می‌توان با یک شماره پیشوند کرد. مثل فرمان G که در جدول بالا نمایش داده شده است. با پیشوند کردن فرمان‌ها با یک شماره، ممکن است تعداد دفعاتی که یک فرمان اجرا می‌شود را تعیین کنیم. برای مثال، فرمان j عمل جابه‌جایی به خط پایینی را انجام می‌دهد. حال، فرمان ۵j وظیفه جابه‌جایی به ۵ خط پایینی را انجام می‌دهد.

ویرایش ابتدایی در vi

بیشتر ویرایش‌ها شامل عملیات ساده همچون درج متن، حذف متن و جابه‌جایی متن با فرمان‌های کپی و چسباندن است. در این آموزش با انواع مختلف عملیات ویرایش متن در داخل vi آشنا می‌شویم:

افزودن متن

vi چندین روش برای ورود به حالت درج (Insert Mode) دارد. همانطور که اشاره با فرمان I به منظور ورود، آشنا شدید. به فایل ویرایشی خود در داخل vi بازگردید.

اگر بخواهید کمی متن یه آخر این جمله اضافه کنید، متوجه خواهید شد که فرمان i این کار را انجام نمی‌دهد. چون که در حالت درج نمی‌توانیم مکان‌نما را به آخر خط انتقال دهیم. vi  فرمانی را به منظور درج متن فراهم کرده که فرمان a نامیده می‌شود. اگر که مکان‌نما را به آخر خط ببریم (دقت کنید که در داخل حالت درج نباشید) و a را تایپ کنیم، مکان‌نما به پایان خط رفته و vi وارد حالت درج می‌شود. این کار، شما را قادر می‌سازد تا متن بیشتری به پایان اضافه کنید:

به یاد داشته باشید که برای خارج شدن از حالت درج، کلید Esc را فشار دهید.

به دلیل اینکه ما همیشه می‌خواهیم به پایان یک خط متن اضافه کنیم، vi یک کلید میانبر را به این منظور در نظر گرفته است تا به آخر خط انتقال داده شویم و درج را آغاز کنیم. این فرمان A می‌باشد. امتحان می‌کنیم و خطوط جدیدی را به فایل خود اضافه می‌نماییم.

ابتدا مکان‌نما را با استفاده از فرمان ۰ به اول خط می‌آوریم. سپس فرمان A را امتحان می‌کنیم و متن مورد نظر را وارد می‌نماییم.

مجدد برای خروج از حالت درج، کلید Esc را فشار دهید. همانطور که می‌بینید فرمان A بسیار مفیدتر از a است. چرا که هم ما را به انتهای خط می‌برد و هم ما را وارد حالت درج می‌کند.

باز کردن یک خط

روشی دیگر که از آن به منظور درج متن استفاده می‌کنیم باز کردن یک خط است. این کار یک خط خالی بین خطوط موجود درج کرده و ما را وارد حالت درج می‌نماید. دارای دو نوع مختلف است که در جدول زیر می‌بینید:

ما می‌توانیم این را به صورت زیر توضیح دهیم. مکان‌نما را به خط ۳ برده و سپس o را تایپ کنید:

همانطور که می‌بینید یک خط جدید در زیر خط شماره ۳ ایجاد شده و ما وارد حالت درج شدیم. با فشار دادن کلید Esc از حالت درج خارج شوید. به منظور خنثی کردن تغییر u را تایپ کنید و این بار O را تایپ نمایید:

همانطور که می‌بینید این بار یک خط جدید در بالای خط ۳ ایجاد می‌کنیم. برای خارج شدن از حالت درج، کلید Esc و برای درج کلید u را فشار دهید.

حذف متن

همانطور که باید انتظار داشته باشید vi روش‌های مختلفی را به منظور حذف متن برای ما فراهم می‌آورد که دارای یک از دو کلید هستند. اول کلید X که یک کاراکتر را در موقعیت مکان‌نما حذف می‌کند. X ممکن است با یک شمارنده پیشوند شود که نشانگر این است که چه تعداد کاراکتر در موقعیت مکان‌نما حذف خواهند شد. کلید D هدف کلی‌تری دارد. مانند X، کلید D نیز ممکن است با شماره، پیشوند شود که تعداد دفعاتی که حذف انجام خواهد شد را مشخص می‌کند. به‌علاوه D همیشه با یک فرمان جابه‌جایی همراه شود که اندازه حذف را کنترل می‌کند. در جدول زیر، برخی از این مثال‌ها آورده شده است:

در ادامه، حالت حذف را با فرمان d امتحان می‌کنیم. مکان‌نما را بر روی کلید more انتقال داده و dW را تایپ نمایید. همانطور که می‌بینید، کلمه more حذف شد:

به منظور حذف از موقعیت مکان‌نما تا پایان خط فرمان d$ را وارد کنید:

به منظور حذف از خط فعلی تا پایان فایل dG را وارد کنید:

برش، کپی و چسباندن متن

فرمان d فقط متن را حذف نمی‌کند، بلکه در واقع آن را برش داده و متن ما به حافظه بافر (در داخل کلیپ‌بورد) منتقل می‌شود. حال ما می‌توانیم با استفاده از فرمان p متن موجود در حافظه را پس از محل مکان‌نما و یا با استفاده از فرمان p به قبل از محل مکان‌نما منتقل کنیم. فرمان y به منظور کپی کردن (Yank به معنای تکان دادن) متن به همان شیوه‌ای است که فرمان d را به کار می‌بریم. جدول زیر برخی از مثال‌های ترکیبی فرمان y با فرمان‌های مختلف جابه‌جایی را نشان می‌دهد:

اکنون کپی و چسباندن را امتحان می‌کنیم. مکان‌نما را در خط اول قرار داده و yy را فشار دهید تا خط اول را کپی کنید. سپس مکان‌نما را به خط آخر برده (با استفاده از میانبر G) و سپس برای چسباندن متن در این محل p را فشار دهید:

درست مثل قبل از فرمان u برای باطل کردن تغییر ایجاد شده استفاده می‌کنیم. ملاحظه می‌شود مکان‌نما هنوز در خط آخر قرار دارد P را فشار داده تا متن در بالای خط فعلی کپی شود:

می‌توانید برخی از دیگر فرمان‌های y که در جدول بالا آورده شده‌اند را امتحان کنید و رفتار فرمان‌های p و P را بررسی کنید.

اتصال خطوط

معمولاً ممکن نیست که مکان‌نما را به پایان یک خط برده و کاراکتر پایان یک خط را حذف کرده و یک خط را به خط پایین آن متصل کنید. به همین دلیل برای این کار فرمان خاصی در vi وجود دارد. به این منظور از فرمان J (این فرمان را با فرمان j که به منظور جابه‌جایی خط اشتفاده می‌شود قاطی کنید) برای اتصال خطوط به یکدیگر استفاده می‌کنیم.

اگر که مکان‌نما را به خط ۳ برده و سپس J را تایپ کنیم، این اتفاق می‌افتد:

همانطور که مشاهده می‌کنید خطوط ۳ و ۴ به یکدیگر متصل می‌شوند.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

Related Articles

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Close