Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

ست إضافات في Neovim حسّنت سير عمل البرمجة بشكل ملحوظ

6 إضافات لـ Neovim ساعدتني أخيرًا في حل مشكلة سير عمل البرمجة لدي

يعاني كثير من المبرمجين من بطء أو تعقيد سير العمل داخل محررات الأكواد، حتى مع قوة الأدوات التي يستخدمونها يوميًا. ورغم أن Neovim يُعد من أكثر المحررات مرونة وقابلية للتخصيص، إلا أن الاستفادة الحقيقية منه لا تكتمل دون اختيار الإضافات المناسبة.

img_20260115_092429-1 ست إضافات في Neovim حسّنت سير عمل البرمجة بشكل ملحوظ

الإضافات الصحيحة يمكنها تحويل Neovim من محرر نصوص بسيط إلى بيئة تطوير متكاملة، تساعد على تقليل التشتت، وتسريع كتابة الشيفرة، وتحسين التنقل وإدارة المشاريع. المشكلة ليست في كثرة الإضافات، بل في معرفة ما يخدم العمل فعليًا.

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

يُعدّ Neovim برنامجًا قويًا للغاية جاهزًا للاستخدام، ولكن الاستفادة القصوى منه لا تعتمد على تكديس الإضافات، بل على اختيار الإضافات المناسبة. الإضافات المذكورة أدناه ليست شائعة لمجرد أنها رائجة، بل لأنها تُعالج مشاكل مُحددة تظهر بعد قضاء وقت كافٍ داخل المُحرر (عادةً ما يكون أطول مما كنت تتوقع).

لا تُعدّ أيٌّ من هذه الإضافات ضرورية لاستخدام Neovim بشكلٍ صحيح. تكمن أهميتها في إتاحة الوصول إلى أجزاء من المُحرر لا تُصبح ضرورية إلا عند محاولة الاستفادة القصوى منه. تفترض خطوات التثبيت في الأقسام التالية استخدام Lazy (الذي يُخلط غالبًا مع LazyVim)، وهو مدير إضافات شائع الاستخدام لـ Neovim.

Atone

أولًا، كان اكتشافًا غير متوقع، إذ لم أكن أتوقع وجود برنامج كهذا بهذه البساطة وسهولة الاستخدام (مع الحفاظ على تماسكه). يعرض برنامج Atone سجل التراجع على شكل شجرة يمكنك استكشافها، بدلًا من التراجع المتكرر حتى الوصول إلى النتيجة المطلوبة.

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

اقرأ أيضا:  قوالب موقع Figma المجانية

استخدامه سهل للغاية، ما عليك سوى تشغيل الأمر :Atone، وستُفتح نافذة جانبية تعرض شجرة التراجع. يمكنك التنقل بين الفروع باستخدام مفاتيح الأسهم، واستعادة الحالة باستخدام اختصار لوحة المفاتيح المُتاح.

التثبيت بسيط للغاية:

return {
    "XXiaoA/atone.nvim",
    cmd = "Atone",
    opts = {},
}

Conform

annotate ست إضافات في Neovim حسّنت سير عمل البرمجة بشكل ملحوظ

ربما يكون Go مسؤولاً عن هذا الهوس، لكنني أحتاج إلى كود مُنسّق. يُزيل التنسيق الصحيح كل الفوضى (ليس كلها إذا كان الكود رديئًا) ويُبقي التغييرات قابلة للقراءة.

يُعرّف Conform نفسه بأنه مُنسّق خفيف الوزن لكنه قوي، وهذا الوصف صحيح عمليًا. فبدلاً من استبدال المخازن المؤقتة بالكامل، يحسب Conform الحد الأدنى من التغييرات ويُطبّق فقط ما يحتاج إلى تغيير. هذا يحافظ على العلامات والطيات وموضع المؤشر، وهو ما قد يبدو بسيطًا حتى تُجرّب البديل.

كما يُصلح Conform مُنسّقات LSP سيئة السلوك عن طريق اعتراض مُخرجاتها وتحويلها إلى تعديلات تزايدية صحيحة. بالإضافة إلى ذلك، يُمكنه تنسيق النطاقات حتى لو لم يدعمها المُنسّق الأساسي.

للتثبيت والتكوين، شغّل الأمر التالي:

return {
    'stevearc/conform.nvim',
    opts = {
        lua = { "stylua" },
        -- Conform will run multiple formatters sequentially
        python = { "isort", "black" },
        -- Use a sub-list to run only the first available formatter
        javascript = { { "prettierd", "prettier" } },
        markdown = { { "prettierd", "prettier" } },
        typescript = { "eslint_d" },
        sh = { "shfmt" },
        bash = { "shfmt" },
    },
    config = function()
        vim.api.nvim_create_user_command("Reformat", function(args)
            local range = nil
            if args.count ~= -1 then
                local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
                range = {
                    start = { args.line1, 0 },
                    ["end"] = { args.line2, end_line:len() },
                }
            end
            require("conform").format({ async = true, lsp_fallback = true, range = range })
        end, { range = true })

Flash

لا يقتصر استخدامك لـ Neovim على كتابة التعليمات البرمجية فحسب، بل يُقضى جزء كبير منه في التنقل بينها (للأسف)، ويركز Flash على هذا الجانب.

اقرأ أيضا:  كيفية إزالة الحساب Google من Google Photos

على المستوى الأساسي، يُحسّن Flash حركات f وF وt وT المدمجة بجعل أهداف الانتقال أكثر وضوحًا ودقة، ولكنه يتجاوز مجرد التنقل بين الأحرف. فهو يُتيح لك الانتقال إلى الكلمات أو الأسطر أو عقد بناء الجملة أو الأنماط المُعرّفة بواسطة التعابير النمطية.

ما يجعله مميزًا هو مدى تكامله مع وضع انتظار المُعامل. تبدأ مُعاملًا، ثم تستدعي Flash، ثم تُطبّق هذا المُعامل في المكان الذي تُريده بالضبط دون أي خطوات وسيطة مُعقدة. كما أنه يجعل البحث سياقيًا، مما يُتيح لك الانتقال بين الدوال والمتغيرات بناءً على المخزن المؤقت.

لتثبيت Flash:

return {
  "folke/flash.nvim",
  event = "verylazy",
  ---@type flash.config
  opts = {},
  keys = {
    { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "flash" },
    { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "flash treesitter" },
    { "r", mode = "o", function() require("flash").remote() end, desc = "remote flash" },
    { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "treesitter search" },
    { "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "toggle flash search" },
  },
}

Tiny Inline Diagnostics

tiny ست إضافات في Neovim حسّنت سير عمل البرمجة بشكل ملحوظ

تُعدّ التشخيصات المضمنة في Neovim مفيدة للغاية، ولكن غالبًا ما تُقتطع الرسائل الطويلة جدًا، فلا يظهر منها إلا جزء. ويزداد الأمر سوءًا مع لغات البرمجة المطوّلة. هذه الإضافة تُصلح هذه المشكلة.

فهي تُتيح عرض رسائل التشخيص بشكلٍ صحيح، وتدعم أسطرًا متعددة، وتبقى قابلة للقراءة دون أي تدخل إضافي. يمكنك رؤية الرسالة كاملةً مباشرةً في مكان عملك، مما يُسهّل عملية تصحيح الأخطاء بشكلٍ كبير.

لتثبيت TiD، استخدم الكود التالي:

return {
    "rachartier/tiny-inline-diagnostic.nvim",
    event = "VeryLazy",
    priority = 1000,
    opts = {
        add_messages = {
            display_count = true,
        },
        multilines = {
            enabled = true,
            always_show = true,
        },
        show_source = {
            enabled = true,
        }
    },
}

Neogit

كان برنامج Neogit مثبتًا لديّ لفترة طويلة دون استخدامه فعليًا، ويعود ذلك غالبًا إلى صعوبة تغيير العادات. لكن هذا تغيّر بمجرد أن أضفت اختصارًا له والتزمت باستخدامه كواجهة Git الرئيسية.

اقرأ أيضا:  5 تطبيقات أساسية للتبديل من iPhone إلى Android

يوفر Neogit واجهة مستخدم Git مركزة داخل Neovim، مما يسمح لك بفحص حالة المستودع، وإضافة أجزاء منه، وكتابة التغييرات، وإدارة الفروع، وحلّ التعارضات دون الحاجة إلى تبديل السياق. تشغيله في نافذة عائمة يحافظ على تركيزه البصري ويمنعه من شغل مساحة كبيرة من الشاشة.

لتثبيت Neogit:

return {
    "NeogitOrg/neogit",
    dependencies = {
        "nvim-lua/plenary.nvim",     -- required
        "sindrets/diffview.nvim",    -- optional - Diff integration
        "nvim-telescope/telescope.nvim", -- optional
    },
    opts = {
        kind = "floating",
    },
    config = true
}

Barbar

معظمنا يُجيد تعدد المهام، وعادةً لا نكتفي بفتح ملف واحد فقط. بل على العكس تمامًا، في أغلب الأحيان نفتح عدة ملفات. وهذا يُشبه إلى حد كبير استخدام علامات التبويب في متصفحك. يُدرك Barbar هذه الحقيقة، ويُوفر لك شريطًا مُناسبًا للملفات المُخزّنة مؤقتًا.

يُتيح لك Barbar إمكانية إعادة ترتيب علامات التبويب، والأيقونات، ومؤشر حالة Git، ووضع اختيار الملفات المُخزّنة مؤقتًا الذي يُحوّل عملية التبديل بينها إلى عملية تلقائية. في وضع اختيار الملفات المُخزّنة مؤقتًا، يُخصّص لكل علامة تبويب حرفٌ يبقى ثابتًا طوال فترة عمل تلك الملفات. بعد فترة، ستتوقف عن التفكير في أسماء الملفات، وتنتقل إليها مباشرةً (تتذكر يداك قبل عقلك).

لتثبيت Barbar، استخدم هذا الكود:

return{
    {
        'romgrk/barbar.nvim',
        dependencies = {
            'lewis6991/gitsigns.nvim',
            'nvim-tree/nvim-web-devicons',
        },
        init = function() vim.g.barbar_auto_setup = false end,
        opts = {
            sidebar_filetypes = {
                ['neo-tree'] = { event = 'BufWipeout' }
            },
        },
    },
}

قد لا تبدو هذه الإضافات مميزةً للوهلة الأولى، ولكن هذا تحديدًا ما يجعلها مهمة. فكل إضافة منها تزيل قيدًا صغيرًا ولكنه مستمر في الاستخدام اليومي لبرنامج Neovim، بدءًا من سجل التراجع والتنسيق وصولًا إلى التنقل وإدارة المخزن المؤقت. وعند استخدامها مجتمعةً، فإنها تساعد على تجاوز مجرد استخدام Neovim والارتقاء به إلى أقصى حد.

اختيار الإضافات المناسبة في Neovim قد يكون الفارق بين تجربة برمجة مرهقة وبيئة عمل سلسة وفعّالة. التركيز على ما يخدم احتياجاتك الفعلية هو المفتاح لتحسين الإنتاجية دون تعقيد غير ضروري.

ابدأ بتجربة عدد محدود من الإضافات، وقيّم تأثيرها على سير عملك، ثم طوّر إعداداتك تدريجيًا حتى تصل إلى بيئة برمجة متوازنة ومريحة.

زر الذهاب إلى الأعلى