اساسيات التعامل مع vi أو vim لا بد من أن تعرفها

بسم الله الرحمن الرحيم 
السلام عليكم ورحمة الله وبركاته



اساسيات التعامل مع vi أو vim لا بد من أن تعرفها وهو امر مهم جدا .


لن أدخل في درس تاريخي عن البرنامج بشكل بسيط برنامج vi إذا جاز التعبير هو نسخة مصغرة من محرر النصوص vim المشهور على العموم ما سأشرحه يمشي على الإثنين لا فرق .

سأشرح في هذا الموضوع فقط أشياء بسيطه قد نحتاجها مثلا للتعديل على ملفات الإعدادات .

سبب أهمية تعلم هذه الأساسيات هي أن محرر نصوص vi يأتي بشكل تلقائي مع أغلب التوزيعات بمعنى أخر لنفترض نريد التعديل على أي ملف نصي مثلا ملف إعدادات ما , فورا ومن دون تفكير نستخدم محرر vi لأنه غالبا سيكون موجود في أغلب التوزيعات بشكل إفتراضي على عكس المحررات الأخرى مثلا محرر nano الذي قد يكون بحاجة للتثبيت.

طبيعي منكم من قد يتسائل ليست مشكلة فلنقم بتثبيت مثلا محرر النصوص nano لاكن ماذا لو أردنا أن نعدل على ملف نصي لتشغيل الإنترنت لنستطيع بعدها تثبيت nano وهنا تكمن اهمية تعلم أساسيات vi فهو يستخدم أيضا للطوارئ لأنه كما ذكرت يأتي بشكل إفتراضي في أغلب التوزيعات ولا يحتاج تثبيت.

منكم من قد يتسائل أيضا لماذا لا نستخدم محرر نصوص رسومي ,أولا كما لاحظنا ف مدير العرض الجديد wayland لا يسمح بتشغيل برنامج رسومي بصلاحيات روت أغلب ملفات الإعدادات تحتاج صلاحيات روت لنستطيع التعديل عليها, مثال في الأسفل عن محرر النصوص الرسومي gedit نلاحظ في الصورة في الأسفل رفض تشغيل البرنامج بصلاحيات روت أي من خلال إستخدام sudo ,من الأسباب الأخرى لعدم إستخدامنا محرر نصوص رسومي ماذا لو كنا نعمل على جهاز بعيد مثلا أو جهاز لا يوجد فيه واجهة رسومية أساسا مثل أغلب السرفرات أو مثلا أردنا إصلاح النظام من خلال vconsole بعد فشل الواجهة بالإقلاع وهنا نحتاج محرر نصوص غير رسومي مثل vi أو vim او nano و...إلخ لاكن غالبا vi سيكون متوفر بشكل إفتراضي من دون تدخل منا.

sudo gedit /etc/dnf/dnf.conf








لنبدأ :

 نلاحظ أني أريد التعديل على ملف بهذا المسار والإسم إذا كان موجود سيتم الدخول عليه لتعديله إذا لم يكن موجود سيتم إنشاء ملف بهذا الإسم والمسار ,نستنتج أنه ممكن أيضا إنشاء ملف والتعديل عليه مباشرتا من خلال vi من دون الحاجة إلى إنشاء الملف أولا .

نلاحظ أيضا أني إستخدمت sudo لأخذ صلاحيات روت لأن الملف يملكه مستخدم روت .




 اﻷن عند الدخول للملف المراد التعديل عليه, سنكون إفتراضيا في مود mode (لا أعرف تعريب لها أظن أسلوب أو نمط ممكن أن بنفعو) سنكون في نمط أو مود تلقي الأوامر وليس الكتابة بمعنى أخر كل ضغطة زر على لوحة المفاتيح سيتلقاها البرنامج ويعاملها على انها اوامر توجه له  ولن يتم تعديل اي شيء على الملف .



 لندخل على مود الكتابة نضغط على مفتاح i او a نلاحظ كلمة INSERT وهذا يعني أن كل شيء سنضغطه الأن سيتم كتابته على الملف .



لحفظ الملف بعد التعديل نخرج من مود الكتابة من خلال الضغط على مفتاح Esc ثم نضغط على مفتاح النقطتين أي نضغط سويا Shift و المفتاح الذي يحتوي النقطتين : وهو مفتاح حرف الكاف بعدها سيظهر في الأسفل مكان نكتب فيه الأوامر.

الان للحفظ نكتب حرف w إختصار ل write ثم نضغط Enter .




الأن للخروج من البرنامج بذات الطريقة في الأعلى لاكن نكتب حرف q إختصار ل quit ثم نضغط Enter .


 ممكن إختصار الأمر من خلال wq اي حفظ وخروج .



 الأن لنفترض نريد الخروج من البرنامج من دون الحفط نكتب حرف q ثم علامة إستفهام ! مع مراعات أن يبقى الترتيب هكذا أي حرف q أولا .






أخيرا بعض التوضيح الامر سهل جدا الذي يهمنا شيئين.

أولا إذا اردنا وبأي لحظة الدخول على نمط الكتابة نضغط حرف i أو a وللخروج من هذا النمط أو في حال أصبنا بالإرتباك نضغط مفتاح Esc مرتين ثم نقرر ماذا نريد إذا اردنا الحفظ أو الخروج ...إلخ نضغط كما ذكرنا سابقا مفتاح Shift والنقطتين ثم نكتب الاوامر التي نريد , أما إذا أردنا الدخول مجددا إلى نمط الكتابة نضغط مجددا مفتاح i أو a ,وهكذا نتنقل بين النمطين على حسب حاجتنا .


قومو بإنشاء ملف نصي للتمرن عليه مثال ملف إسمه  myfile.txt مع الملاحظة إذا لم نذكر المسار سيتم إنشاء الملف في المسار الذي نقف فيه حاليا ممكن ان نعرف أين نقف من خلال كتابة أمر pwd .
vi myfile.txt

وممكن أيضا إذا كان محرر vim كاملا مثبت .
vim myfile.txt


شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) 28 (1) 29 (1) 30 (1) 31 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (7) أشياء تفعلها (8) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (16) برامج (56) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (7) بعد التثبيت (8) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (29) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (7) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توزيعة (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) روتر (1) ريدهات (2) سكربت (2) شرح (11) صورة متحركة (1) فايرفوكس (1) فتح منفذ (1) فصل (1) فلاشة (3) فيدورا (29) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (6) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) محمول (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) access token (1) active (2) add (1) after (7) alias (1) andoid studio (1) android (2) android studio (1) Apache (2) appstream (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bls (1) bluetooth (1) book (2) books (2) bootloader fix (1) boxes (3) broadband (1) broadcom (1) broadwayd (1) bugzilla (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) calamares (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (2) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (2) commands (2) comps (1) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) css (1) curlew (1) custom (2) dbus (3) dconf (1) dd (1) Decryption (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) Digital signature (1) disks (1) dnf (14) do (7) docker (1) dolphine (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (9) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) emulator (1) enable (2) Encryption (1) entries (1) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (45) fedora 25 alpha (1) fedora cloude (1) fedora28 (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (10) flash mem (1) flash memory (2) flashplayer (1) flatpak (4) forward (1) fpaste (1) free (1) freebsd (1) freevpn (1) function (1) game (3) games (2) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (16) gnome boxes (1) gnome disk (1) gnome shell (13) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gpg (2) gradio (1) group (2) grub (7) grub2 (1) grubenv (1) gstreamer (1) gtk (8) gtk+ (1) gvrecord (1) hack (2) hash (4) hdmi (3) hibernate (1) home (2) hosspot (1) html (1) http (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (32) installf (9) installing (7) intellij idea (1) internet downlaod manager (1) iso (2) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (3) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (2) kvm switches (1) lamp (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) libvirt (1) life is trange (1) linux (8) lutris (1) lv (1) lvm (2) mac (4) macros (1) mageia (1) make distro (1) mariadb (1) MariaDB and PHP Lamp Server (1) markdown (2) mate terminal (1) mbr (1) md5sum (1) mirro (1) mkconfig (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) mumble (1) murmur (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (8) objdesktop (1) ojuba (2) oop (1) opensuse (1) openvpn (1) opera (1) optirun (2) oracle (1) os.path (1) package (2) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) php (1) phpstorm (1) plasma (2) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) port (1) portable (1) portmatp (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) preset (1) preview (1) primary display (1) primeos (1) primus (1) primusrun (1) private key (1) programs (3) protonvpn (1) pubg (1) public key (1) put (1) pv (1) pycharm (2) pygobject (4) pygtk (5) python (56) pythonk (1) qdbus (1) qemu (3) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (3) remix (1) remix os (1) repo (4) repofrompath (1) repository (1) reset (1) resize2fs (1) rhel (1) router (1) rpm (7) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) screencast (1) script (2) seconday display (1) self (1) send (1) server (1) settings (2) sha1256sym (1) sha256sum (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) software (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) store (1) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) systemd (1) systemd preset (1) teamviewer (1) terminal (2) theme (5) things (7) thomson (1) thread (2) threading (2) thumbnails (1) to (8) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) verify (1) vg (1) vgaوتبديل (1) vi (1) video (1) vim (1) vino (1) virsh (1) virt-install (1) virt-manger (1) virtual (1) virtual box (1) virtualbox (3) vmware (3) vnc server (1) vokoscreen (1) vpn (1) web server (1) webstorm (1) wifi (1) windows (4) windows-1256 (1) wine (1) woeusb (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) xdman (1) xfce (1) xfconf-query (1) yum (2) zeal (1) zealdocs (1)