Vim، یکی از بهترین و پیشرفته‌ترین ویرایشگرهای متن با ویژگی‌های منحصر به فرد است. در این آموزش، یکی از این ویژگی‌های مفید، یعنی ویرایش فایل‌های سیستم ریموت از درون سیستم محلی شرح داده شده است. این ویژگی، بدین معنی است که می‌توانیم فایلی را که در یک سیستم ریموت لینوکس ذخیره شده است، بدون نیاز به ورود به سیستم ریموت از طریق SSH یا هر روش دیگری ویرایش کنیم.

 

احتمالاً شما نیز تا اکنون برای انجام چنین کاری ابتدا به سیستم ریموت SSH زده و سپس فایل‌ها را ویرایش می‌نمودید. اما، پس از مطالعه این مقاله، با طریقه ویرایش فایل‌های ریموت با Vim درون سیستم محلی خود آشنا خواهید شد.

 

این مطلب نیز ممکن است برای شما مفید باشد: نمایش اعداد خطوط در Vim

 

از نسخه Vim 7.x به بعد، افزونه netrw.vim به‌عنوان یک افزونه استاندارد قابل نصب است. این افزونه، به شما اجازه می‌دهد فایل‌ها را از طریق ftp ،rcp ،scp یا http ویرایش کنید.

 

افزونه Netrw

افزونه Netrw (یا Network oriented reading, writing, and browsing) از ویرایش، خواندن و نوشتن فایل‌ها به‌صورت محلی و ریموت در شبکه پشتیبانی می‌کند. علاوه‌براین، از پیمایش دایرکتوری‌ها بصورت محلی و ریموت نیز پشتیبانی می‌نماید.

برای کسب اطلاعات بیشتر، help netrw: را داخل نشست vim خود وارد نمایید.

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

 

ویرایش فایل‌های ریموت با Vim

ویرایش یک فایل ریموت با Vim به‌سادگی دستور زیر است:

vim scp://user@remotesystem//path_to_file

 

مثال:

فرض کنید یک فایل متنی به نام info.txt در سیستم ریموت خود دارید که عبارت زیر در آن نوشته شده است.

Welcome to OSTechNix

اکنون می‌خواهیم آن فایل را ویرایش کرده و تغییراتی در آن انجام دهیم و سپس فایل را ذخیره کرده و ببندیم. دقت کنید که همه این کارها را می‌خواهیم، در سیستم خود انجام دهیم.

برای انجام این کار، دستور زیر را اجرا نمایید:

$ vim scp://sk@192.168.225.22/info.txt

تصویر زیر نتیجه اجرای این دستور را نمایش می‌دهد:

 

در اینجا باید به سه مورد زیر توجه کنید.

1. user@remotesystem (به‌عنوان مثال sk@192.168.225.22)، در اینجا sk نام کاربری سیستم ریموت و 192.168.225.22 آدرس IP سیستم ریموت است.

2. (/)، اگر می‌خواهید فایل ذخیره شده در دایرکتوری HOME$ یک سیستم ریموت را ویرایش نمایید، برای جدا کردن آدرس IP یا نام میزبان مربوط به سیستم ریموت باید از یک اسلش و به‌همراه آن، از نام فایل استفاده کنید. در مثال بالا، فایل info.txt را در دایرکتوری HOME$ ذخیره کرده‌ایم، بنابراین، از یک اسلش قبل از آن استفاده می‌نماییم.

3. (//)، برای مشخص کردن مسیر کامل یک فایل، باید از اسلش دوتایی (//) استفاده کنید. یکی از اسلش‌ها برای جدا کردن آدرس IP یا نام میزبان سیستم از مسیر واقعی فایل و اسلش دیگر برای ذکر مسیر مطلق (کامل) فایل ریموت استفاده می‌شود.

 

این مطلب نیز ممکن است برای شما مفید باشد: نحوه ذخیره سازی یک فایل در ویرایشگر Vim

 

به‌عنوان مثال، فرض کنید می‌خواهید فایلی به نام info.txt را ویرایش نمایید که در دایرکتوری /home/sk/Documents/ در سیستم ریموت شما قرار دارد. در این حالت، دستور به‌صورت زیر خواهد بود:

$ vim scp://sk@192.168.225.22//home/sk/Documents/info.txt

توجه داشته باشید که یک اسلش دوتایی بین آدرس IP سیستم ریموت و مسیر فایل وجود دارد. اسلش دوتایی، تنها هنگام ذکر مسیر مطلق یک فایل ریموت لازم است.

 

سپس محتوای فایل ریموت را از سیستم محلی خود تأیید کنید:

$ ssh sk@192.168.225.22 cat info.txt
sk@192.168.225.22's password: 
Welcome to OSTechNix blog

 

همانطور که در تصویر بالا مشاهده می‌نمایید، در ویرایش فایل ریموت کلمه “blog” را در فایل info.txt اضافه کردیم.

 

گاهی اوقات ممکن است، پورت پیش فرض SSH را به منظور اهداف امنیتی تغییر داده باشید. در این حالت باید پورت SSH را نیز ذکر کنید.

$ vim scp://sk@192.168.225.22:2200/info.txt

در این مثال، پورت 2200 را با شماره پورت SSH خود جایگزین نمایید.

اگر به ssh/scp دسترسی ندارید، می‌توانید مانند زیر، از پروتکل‌های دیگر، مانند ftp استفاده کنید.

$ vim ftp://user@remotesystem/path/to/file

 

اکنون، فکر می‌کنید چه اتفاقی در پس زمینه ویرایش فایل ریموت می‌افتد؟

به منظور ویرایش فایل ریموت در داخل سیستم محلی خود باید از دستور زیر استفاده نمایید:

$ vim scp://sk@192.168.225.22/info.txt

در این صورت ممکن است خروجی زیر را در پایین ویرایشگر Vim خود مشاهده نمایید:

:!scp -q 'sk@192.168.225.22:info.txt' '/tmp/vsoDT6K/0.txt'
"/tmp/vsOLzGf/0.txt" 1L, 21C

این خروجی بدین معنی است که دستور scp، فایل درخواست شده را از سیستم ریموت کپی کرده، در دایرکتوری tmp/ سیستم محلی خود ذخیره می‌نماید و سپس آن را برای ویرایش باز می‌کند. پس از اتمام ویرایش، فایل با استفاده از دستور scp به سیستم ریموت بازگردانده می‌شود.

 

ویرایش فایل‌های ریموت در نشست Vim

اگر در یک نشست Vim هستید، می‌توانید بصورت زیر فایل‌های ریموت را از سیستم محلی خود ویرایش نمایید.

ابتدا، با اجرای دستور زیر، فایل را درون Vim در یک بافر جدید باز کنید:

:e scp://sk@192.168.225.22/info.txt

سپس، تغییرات را در فایل انجام داده، کلید ESC را بزنید و wq: را تایپ نمایید تا فایل ذخیره و بسته شود.

 

همانطور که در خروجی بالا مشاهده می‌کنید، مراحل انجام این کار به شرح زیر است:

  • ابتدا ویرایشگر Vim را از سیستم محلی خود باز کردیم،
  • سپس فایل ریموت به نام info.txt را در نشست Vim داخل بافر جدید باز نمودیم،
  • و سپس تغییرات مورد نظر را در فایل ایجاد کردیم،
  • سرانجام، تغییرات را ذخیره کرده و فایل را بستیم (ESC و wq:)

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

:tabe scp://sk@192.168.225.22/info.txt

 

 

 

منبع:

ostechnix