جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
محتوای باز
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]
  • خانه
  • کتاب آنلاین
  • درباره سایت
  • درباره لوگو
  • تماس با ما
محتوای باز
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0
[wcas-search-form]

جستجو و جایگزینی در ویرایشگر vi

25 تیر 1399
ارسال شده توسط فرشید نوتاش حقیقت
خط فرمان، گنو/لینوکس
جستجو

vi توانایی جابه‌جایی مکان‌نما به موقعیت‌های جستجو شده را دارد. این را می‌توان بر روی یک خط و یا یک فایل انجام داده و همچنین می‌توان جایگزینی متن را نیز انجام داد.

جستجو درون یک خط

فرمان f یک خط را جستجو کرده و مکان‌نما را به نمونه بعدی از یک کاراکتر تعیین شده انتقال می‌دهد. برای مثال فرمان fa خط را جستجو کرده و مکان‌نما را به کلمه بعدی که دارای کاراکتر a است انتقال می‌دهد. پس از انجام یک جستجو در خط می‌توان آن را با استفاده از فرمان : تکرار نمود.

جستجوی یک فایل کامل

به منظور جابه‌جایی مکان‌نما به رخداد بعدی یک کلمه یا عبارت، از فرمان / استفاده می‌شود. این همان فرمانی است که در داخل فرمان less در درس‌های قبلی استفاده کردیم. وقتی شما فرمان / را تایپ می‌کنید، یک علامت / در پایین صفحه نمایش نشان داده می‌شود. سپس کلمه یا عبارت مورد نظر را تایپ کرده و Enter را فشار دهید. در نتیجه آن مکان‌نما به محل جستجو که عبارت ما قرار دارد منتقل می‌گردد. با استفاده از فرمان n می‌توان جستجوی قبلی را تکرار کرد:

The quick brown fox jumped over the lazy dog. It was cool.
Line 2
Line 3
Line 4
Line 5

مکان نما را در اولین خط فایل قرار دهید. تایپ کنید:

/Line

جستجو و جایگزینی سراسری

vi از یک فرمان خارجی به منظور انجام عملیات‌های جستجو و جایگزینی در کل خطوط یک فایل استفاده می‌کند. برای مثال به منظور تغییر کلمه Line در کلیه خطوط به کلمه line فرمان زیر را وارد کنید:

:%s/Line/line/g

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

آیتممعنا
:کاراکتر دونقطه یک فرمان خارجی را شروع می‌کند.
%محدوده خطوط برای عملیات را تعیین می‌کند. % یک میانبر است به این معنی که از خط اول تا خط آخر. این رنج را می‌توان بصورت 1% تعیین کرد که یعنی از خط 1 تا آخرین خط در فایل. اگر محدوده خطوط حذف شده عملیات فقط در خط فعلی انجام می‌شود.
sعملیات را تعیین می‌کند. در این مورد جستجو و جایگزینی (Search and replace)
/Line/line/الگوی جستجو و متن جایگزین
gبه معنی Global یعنی اینکه جایگزینی بر روی همه نمونه‌های رشته جستجو در خط انجام می‌شود. اگر که g را حذف کنید، فقط اولین نمونه از رشته جستجو بر روی هر خط جایگزین می‌شود.

همچنین می‌توانیم یک فرمان جانشینی را با تایید کاربر اجرا کنیم:

The quick brown fox jumped over the lazy dog. It was cool.
line 2
line 3
line 4
line 5

مشاهده می‌کنید این بار از ما سوال می‌پرسد و در داخل پرانتز کاراکترهایی را نشان می‌دهد. هر کدام از این کاراکترها یک پاسخ به vi هستند که در جدول زیر این پاسخ‌ها توضیح داده شده‌اند:

کلیدحرکت مورد نظر
yانجام جایگزینی
nرد کردن این نمونه از الگو
aانجام جایگزینی بر روی این و همه نمونه‌های الگو متعاقب آن
q or ESCخروج از جایگزینی
lانجام این جایگزینی و سپس خروج. که مخفف کلمه last می‌باشد.
CTRL-E, CTRL-Yجابجایی به پایین. برای نمایش محتوای مورد نظر برای جایگزینی مفید است.

ویرایش چندین فایل

گاهی اوقات نیاز است که چندین فایل را به صورت همزمان ویرایش کنیم. شاید نیاز داشته باشید چندین فایل را تغییر دهید یا ممکن است محتوای یک فایل را به فایل دیگر کپی کنید. با استفاده از vi می‌توانیم چندین فایل را برای ویرایش با هم باز کنیم. با اختصاص دادن نام آن‌ها پس از فرمان vi به صورت زیر:

vi file1 file2 file3…

به منظور ایجاد فایل جدید با استفاده از فرمان ls کمی متن را از فرمان ls استخراج کرده و داخل فایل ls-output.txt می‌ریزیم به صورت زیر:

[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt

حال، فایل قدیمی خود را به همراه فایل جدید در داخل vi ویرایش می‌کنیم:

[me@linuxbox ~]$ vi foo.txt ls-output.txt

مشاهده می‌کنید که vi باز می‌شود و اولین نام وارد شده فایل را در صفحه نمایش نشان می‌دهد:

The quick brown fox jumped over the lazy dog. It was cool.
Line 2
Line 3
Line 4
Line 5

تعویض فایل‌ها در vi

به منظور تعویض و جابه‌جایی بین فایل‌ها در داخل vi از فرمان خارجی :n استفاده می‌کنیم و به منظور بازگشت به فایل قبلی از فرمان :N استفاده می‌کنیم.

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

به منظور مجبور کردن vi به جابه‌جایی بین فایل‌ها و نادیده گرفتن تغییرات ایجاد شده (تغییرات از بین خواهد رفت) یک علامت تعجب پس از فرمان اضافه کنید.

علاوه بر این متدهای تعویض فایل که گفتیم vi برخی فرمان‌های دیگری را نیز دارد که مدیریت چندین فایل را آسان‌تر می‌کند. ما می‌توانیم لیستی از فایل‌هایی که ویرایش کرده‌ایم را با استفاده از فرمان :buffer نمایش دهیم.

با این کار لیستی از فایل‌ها در پایین صفحه نمایش مشخص خواهد شد. (دقت کنید که این فرمان در vi موجود نیست و برای استفاده بایستی vim را نصب کرده باشید.)

:buffers
1 %a "foo.txt" line 1
2 "ls-output.txt" line 0
Press ENTER or type command to continue

برای جابه‌جایی به فایل دیگر پس از فرمان بافر شماره فایل را وارد کنید:

:buffer 2

باز کردن و ویرایش دیگر فایل‌ها

همچنین ممکن است که بخواهید به نشست ویرایش اخیر خود فایل‌هایی را برای ویرایش اضافه کنید. یعنی فایلی را برای ویرایش باز کرده‌اید و حالا نمی‌خواهید از vi خارج شوید و با استفاده از فرمان قبلی دو فایل را برای ویرایش انتخاب کنید. به این منظور برای آزمایش ابتدا یک فایل foo.txt را برای ویرایش از فرمان vi باز می‌کنیم:

[me@linuxbox ~]$ vi foo.txt

سپس به منظور اضافه کردن فایلی دیگر از فرمان :e (سرنام واژه Edit) استفاده می‌کنیم.

به این منظور پس از :e نام فایل را وارد می‌کنید:

:e ls-output.txt

توجه داشته باشید که در این حالت نمی‌توانید با استفاده از فرمان‌های :n و :N بین فایل‌ها سوییچ کنید. برای سوییچ بین فایل‌ها در این حالت بایستی از فرمان buffer به همراه شماره فایل استفاده کنید.

کپی کردن محتوا از یک فایل به فایلی دیگر

گاهی اوقات در حین ویرایش چندین فایل می‌خواهیم که بخشی از یک فایل را به فایل دیگری که در حال ویرایش آن هستیم کپی کنیم. این کار را به سادگی با استفاده از فرمان‌های کپی و چسباندن که یاد گرفتیم انجام می‌دهیم. اول با استفاده از buffer به فایل اول سوییچ کنید:

:buffer 1

سپس مکان‌نما را به خط اول برده و فرمان yy را وارد کنید تا کپی صورت گیرد:

The quick brown fox jumped over the lazy dog. It was cool.
Line 2
Line 3
Line 4
Line 5

حال دوباره با buffer این بار به فایل ۲ سوییچ کنید:

:buffer 2

مکان‌نما را به خط اول برده، فرمان p را وارد کنید تا متن کپی شده در محل چسبانده شود.

total 343700
-rwxr-xr-x 1 root root 31316 2011-12-05 08:58 [
-rwxr-xr-x 1 root root 8240 2011-12-09 13:39 411toppm
-rwxr-xr-x 1 root root 111276 2012-01-31 13:36 a2p
-rwxr-xr-x 1 root root 25368 2010-10-06 20:16 a52dec
-rwxr-xr-x 1 root root 11532 2011-05-04 17:43 aafire
-rwxr-xr-x 1 root root 7292 2011-05-04 17:43 aainfo

درج یک فایل به صورت کامل در فایلی دیگر

ممکن است بخواهید که فایلی را به صورت کامل در داخل فایلی دیگر کپی کنید. به این منظور فایل ls-output.txt را به تنهایی در داخل vi با استفاده از فرمان زیر باز کنید:

[me@linuxbox ~]$ vi ls-output.txt

خروجی:

total 343700
-rwxr-xr-x 1 root root 31316 2011-12-05 08:58 [
-rwxr-xr-x 1 root root 8240 2011-12-09 13:39 411toppm
-rwxr-xr-x 1 root root 111276 2012-01-31 13:36 a2p
-rwxr-xr-x 1 root root 25368 2010-10-06 20:16 a52dec
-rwxr-xr-x 1 root root 11532 2011-05-04 17:43 aafire
-rwxr-xr-x 1 root root 7292 2011-05-04 17:43 aainfo

به خط سوم رفته و فرمان زیر را وارد نمایید:

:r foo.txt

مشاهده می‌شود که محتویات فایل در foo.txt کپی می‌شود:

total 343700
-rwxr-xr-x 1 root root 31316 2011-12-05 08:58 [
-rwxr-xr-x 1 root root 8240 2011-12-09 13:39 411toppm
The quick brown fox jumped over the lazy dog. It was cool.
Line 2
Line 3
Line 4
Line 5
-rwxr-xr-x 1 root root 111276 2012-01-31 13:36 a2p
-rwxr-xr-x 1 root root 25368 2010-10-06 20:16 a52dec
-rwxr-xr-x 1 root root 11532 2011-05-04 17:43 aafire
-rwxr-xr-x 1 root root 7292 2011-05-04 17:43 aainfo

ذخیره کار خود در vi

شبیه تمامی دیگر کارها در vi ذخیره فایل‌های ویرایش شده نیز راه‌های مختلفی دارد. می‌دانید که می‌توان این کار را با استفاده از فرمان :w (سرنام واژه Write) انجام داد. ولی روش‌های دیگری وجود دارد که ممکن است مفید باشند. در حالت فرمان (Command Mode) وارد کردن ZZ فایل اخیر را ذخیره کرده و شما را از vi خارج می‌کند. فرمان :wq یک فرمان ترکیبی است و همین کار را انجام می‌دهد.

همچنین برای فرمان :w ممکن است نام فایل را تعیین کنیم. با این کار می‌توانیم فایلی را با نامی دیگر ذخیره کنیم. درست مثل گزینه save as که در اکثر برنامه‌ها وجود دارد.

منبع: لینوکس‌سیزن نوشته فرشید نوتاش حقیقت

برچسب ها: CLICommand Lineviخط فرمانخط فرمان لینوکس
درباره فرشید نوتاش حقیقت

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

نوشته‌های بیشتر از فرشید نوتاش حقیقت
قبلی چگونگی کار با ویرایشگر vi
بعدی اضافه کردن رنگ به خط فرمان

دیدگاهتان را بنویسید لغو پاسخ

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.

جستجو
جستجو برای:
دسته‌بندی موضوعی مقالات
  • برنامه‌نویسی
    • پایتون
    • دواپس
  • پایگاه‌داده
    • MariaDB
    • MySQL
  • تجارت الکترونیک
    • بازاریابی اینترنتی
    • دیجیتال مارکتینگ
    • شبکه‌های اجتماعی
  • جامعه کاربری
    • لاگ
  • دسته‌بندی نشده
  • شبکه و امنیت
  • طراحی وب
    • سئو
    • سیستم مدیریت محتوا
      • وردپرس
  • فناوری‌های نوظهور
    • اینترنت اشیاء
    • رایانش ابری
      • OpenStack
    • کلان‌داده‌ها
  • گنو/لینوکس
    • توزیع
      • CentOS
      • اوبونتو
      • دبیان
      • فدورا
    • چیست
    • خط فرمان
  • مهاجرت به آزاد/متن‌باز
  • نرم‌افزار
    • اداری
      • لیبره آفیس
        • ایمپرس
        • بیس
        • دراو
        • رایتر
        • کالک
    • کاربردی
    • گرافیک و انیمیشن
      • بلندر
      • گیمپ
نماد الکترونیکی (اینماد)
پرداخت‌یار

محتوای باز؛ مرجع آموزشی نرم‌افزارهای آزاد/ متن‌باز

از اینکه قصد همکاری با رسانه «محتوای باز» را دارید بسیار خرسندیم و این مایه مباهات ماست.

نحوه همکاری با ما چندان پیچیده نیست و شرایط آن در ادامه، ارائه گردیده است.

دستمزد مدرسین

پیش از بیان شرایط ضبط ویدئو شایان ذکر است اشاره‌ای به دستمزد مدرسین سایت داشته باشیم.

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

صرف نظر از هر حالت ممکنه، می‌بایست شرایطی که در ادامه ذکر شده‌اند را رعایت کرده باشید.

در حالت اول (رایگان) رسانه محتوای باز (Open Content)، نه وجهی از شما برای نشر ویدئو می‌گیرد و نه وجهی به شما پرداخت می‌نماید و دوره آموزشی شما را به رایگان منتشر می‌کند.

اما در حالت بعدی طریقه همکاری به روش درآمد از فروش خواهد بود، به گونه‌ای که 70 درصد از کل مبلغ فروش دوره آموزشی متعلق به مدرس دوره بوده و 30 درصد مابقی به رسانه محتوای باز تعلق می‌گیرد.

شرایط کلی ضبط دوره آموزشی

دوره آموزشی مربوطه، صرف نظر از هر محتوایی که دارد می‌بایست در یکی از توزیعات گنو/لینوکسی ضبط شده باشد. (به‌عنوان مثال دوره دروپال در اوبونتو، دوره آموزشی کار با آردوینو در دبیان و امثالهم). اگر دوره آموزشی شما در محیط ویندوز و یا هر پلتفرم/سیستم‌عامل دیگری ضبط شده باشد از همکاری با شما معذوریم.

پیشنهاد می‌گردد برای ضبط دوره آموزشی در توزیع گنو/لینوکس از ابزار قدرتمند OBS استفاده نمایید. البته این صرفا یک پیشنهاد است و شما می‌توانید از هر ابزار مناسب دیگری برای این کار بهره ببرید.

برای آشنایی یا تسلط بیشتر می‌توانید دوره رایگان آموزش OBS محمد عابدینی را ببینید:

مشاهده دوره آموزش OBS
شرایط کیفی ضبط دوره آموزشی

کیفیت صدا از اهمیت ویژه‌ای برخوردار می‌باشد و می‌بایست فاقد هر گونه نویز یا صدای اضافی دیگری (صدای محیط پیرامون) باشد.

دوره آموزشی تهیه شده صرفا باید برای رسانه محتوای باز تدوین شده باشد و در هیچ سایت مشابه دیگری قرار نگرفته باشد.

از قرار دادن موسیقی متن، در بک‌گراند دوره آموزشی شدیدا پرهیز کنید. این کار موجب حواس‌پرتی مخاطب و ضعیف شدن صدای مدرس می‌گردد.

دوره آموزشی ضبط شده می‌باید فاقد هر گونه لوگو یا آدرس سایت دیگری (در گوشه تصویر یا بک‌گراند صفحه دسکتاپ و هر جای دیگری) باشد.

در حین دوره، مدرس نباید به برند خاصی اشاره کند که جز رقبای ما به‌شمار می‌آیند.

مدرس باید در ابتدا در اواسط و در انتهای دوره به برند ما یعنی رسانه محتوای باز (Open Content) بصورت کلامی اشاره نماید.

مدرس، هنگام تدریس نباید تپق زده، سرفه یا عطسه کند یا صدای قورت دادن بزاقش شنیده شود و بایستی با صدای رسا، دوستانه و پرانرژی به تدریس بپردازد.

قبل از تدوین دوره آموزشی حتما با ما در تماس باشید و یک ویدیوی چنددقیقه‌ای (ترجیحا 5 الی 10 دقیقه)، بصورت نمونه‌کار برای ما بفرستید.

از همکاری با شما سپاسگزاریم.

فراخوان همکاری