تخط المحتوى

وضع VI

مقدّمة

شعار Vim

وضع VI في كيت هو مشروع لجلب التحرير المشروط الشبيه بـ Vim إلى محرر نصوص كيت وبالتبعية لبرامج كيدي الأخرى التي تتشارك نفس مكون المحرر. بدأ المشروع كمشروع Google Summer of Code في 2008 - حيث كُتِبَت كل الوظائف الأساسية. واصلت صيانة هذا الترميز وتطويره بشكل أكبر ويقل عدد المزايا المفقودة من Vim ببطء. سيكون معظم مستخدمي Vim منتجين بالفعل في وضع VI في كيت. توجد قائمة بما هو مفقود في أسفل الصفحة.

تهدف هذه الصفحة لتكون نظرة عامة محدثة على هذا العمل.

لتمكين وضع إدخال VI، اذهب إلى
الإعدادات → اضبط كيت… → التحرير → وضع إدخال VI.
يمكن تبديله أيضًا باستخدام إعداد "وضع إدخال VI" في قائمة "تحرير". (مفتاح الاختصار المبدئي هو Meta+Ctrl+V – حيث Meta عادة ما يكون مفتاح Windows).

الأهداف

الهدف من وضع VI ليس أن يكون بديلاً كاملاً لـ Vim ويدعم جميع مزايا Vim. هدفه هو جعل "طريقة Vim" لتحرير النصوص - وعادات Vim المكتسبة - متاحة للبرامج التي تستخدم محرر نصوص كيت كمحرر داخلي لها. تشمل هذه البرامج

  1. محرر نصوص كيت
  2. KWrite – محرر نصوص كيدي البسيط
  3. KDevelop – بيئة تطوير متكاملة متقدمة للعديد من لغات البرمجة
  4. Kile – محرر لاتخ

يهدف وضع VI إلى الاندماج بشكل جيد مع البرامج والانحراف عن سلوك Vim عندما يكون ذلك منطقيًا. على سبيل المثال، سيفتح :w مربع حوار حفظ في وضع VI في كيت.

عدم التوافق مع Vim

هناك عدد قليل فقط من مزايا وضع VI في كيت غير متوافقة مع Vim (دون احتساب الأشياء المفقودة). وهي مدرجة أدناه مع الأسباب الخاصة بها.

  1. كيت: U و Ctrl+r إعادة
    Vim: Ctrl+r إعادة عادية، U يستخدم للتراجع عن جميع التغييرات الأخيرة على سطر واحد
    السبب في جعل U يعمل كإعادة في وضع VI في كيت هو أن الاختصار Ctrl+r بشكل مبدئي يأخذه وظيفة الاستبدال في كيت (البحث والاستبدال). بشكل مبدئي، لن يتجاوز وضع VI اختصارات كيت (يمكن اضبط هذا في الإعدادات → اضبط كيت… → التحرير → وضع إدخال Vi)، ولذلك يجب أن تكون وظيفة الإعادة متاحة كضغط مفتاح "عادي" أيضًا. بالإضافة إلى ذلك، فإن سلوك أمر U في Vim لا يتطابق جيدًا مع نظام التراجع الداخلي لكيت، لذا لن يكون دعمه سهلاً على أي حال.
  2. كيت: :print يعرض مربع حوار "الطباعة"
    Vim: :print يطبع أسطر النطاق المحدد مثل سلفه ed. الأوامر مثل :print متاحة ليس فقط في وضع VI ولكن للمستخدمين الذين يستخدمون كيت "العادي" أيضًا – لذلك اخترت أن أجعل الأمر :print يفتح مربع حوار الطباعة – باتباع مبدأ الحد الأدنى من المفاجأة بدلاً من محاكاة سلوك Vim.
  3. كيت: Y يجذب إلى نهاية السطر.
    Vim: Y يجذب السطر بأكمله، تمامًا مثل yy. سلوك VI لأمر Y هو في الممارسة خطأ؛ بالنسبة لأوامر التغيير والحذف، سيقوم cc/dd بتنفيذ الإجراء على السطر الحالي وسيعمل C/D من عمود المؤشر إلى نهاية السطر. ومع ذلك، كل من yy و Y يجذبان السطر الحالي. في وضع VI في كيت، سيجذب Y إلى نهاية السطر. يوصف هذا بأنه "أكثر منطقية" في توثيق Vim.
  4. كيت: :map يغير الأسطر المحددة من المستند باستخدام تعبير JavaScript المقدم.
    Vim: :map يضيف التعيين المقدم إلى الوضعين العادي والبصري. الأمر "map" احتفظ به كيت بالفعل؛ في الإصدار 4.12+، يمكنك استخدام مزيج من :nmap و :vmap لاستبداله.

الأوامر المدعومة

أوامر الوضع العادي/البصري المدعومة

المفتاحالوصف
aادخل وضع الإدراج وألحق
Aادخل وضع الإدراج وألحق بنهاية السطر
iادخل وضع الإدراج
Iأدرج قبل أول محرف غير فارغ في السطر
vادخل الوضع البصري
Vادخل وضع السطر البصري
<c-v>ادخل وضع المقطع البصري
gvأعد تحديد البصري
oافتح سطرًا جديدًا أسفل
Oافتح سطرًا جديدًا فوق
Jضم الأسطر
cغيّر
Cغيّر إلى نهاية السطر
ccغيّر السطر
sاستبدل المحرف
Sاستبدل السطر
ddاحذف السطر
dاحذف
Dاحذف إلى نهاية السطر
xاحذف المحرف
Xاحذف المحرف للخلف
guاجعلها أحرفًا صغيرة
guuاجعل السطر أحرفًا صغيرة
gUاجعلها أحرفًا كبيرة
gUUاجعل السطر أحرفًا كبيرة
yاجذب
yyاجذب السطر
Yاجذب إلى نهاية السطر
pألصق
Pألصق قبل
r.استبدل المحرف
Rادخل وضع الاستبدال
:حوّل إلى سطر الأوامر
/ابحث
uتراجع
<c-r>أعد
Uأعد
m.اضبط علامة
>>ازح السطر
<<أزل إزاحة السطر
>ازح الأسطر
<أزل إزاحة الأسطر
<c-f>مرر الصفحة لأسفل
<pagedown>مرر الصفحة لأسفل
<c-b>مرر الصفحة لأعلى
<pageup>مرر الصفحة لأعلى
<c-u>مرر نصف صفحة لأعلى
<c-d>مرر نصف صفحة لأسفل
zzوسط العرض على المؤشر
gaاطبع رمز المحرف
.كرر آخر تغيير
==ساوِ السطر
=ساوِ الأسطر
~غيّر الحالة
<c-a>أضف إلى الرقم
<c-x>اطرح من الرقم
<c-o>اذهب إلى القفزة السابقة
<c-i>اذهب إلى القفزة التالية
<c-w>hحوّل إلى العرض الأيسر
<c-w><c-h>حوّل إلى العرض الأيسر
<c-w><left>حوّل إلى العرض الأيسر
<c-w>jحوّل إلى العرض السفلي
<c-w><c-j>حوّل إلى العرض السفلي
<c-w><down>حوّل إلى العرض السفلي
<c-w>kحوّل إلى العرض العلوي
<c-w><c-k>حوّل إلى العرض العلوي
<c-w><up>حوّل إلى العرض العلوي
<c-w>lتحويل إلى العرض اليميني
<c-w><c-l>تحويل إلى العرض اليميني
<c-w><right>تحويل إلى العرض اليميني
<c-w>wتحويل إلى العرض التالي
<c-w><c-w>تحويل إلى العرض التالي
<c-w>sتقسيم أفقي
<c-w>Sتقسيم أفقي
<c-w><c-s>تقسيم أفقي
<c-w>vتقسيم عمودي
<c-w><c-v>تقسيم عمودي
gtتحويل إلى اللسان التالي
gTتحويل إلى اللسان السابق
gqqتنسيق سطر
gqتنسيق أسطر
q. / qبدء/إنهاء تسجيل الماكرو باستعمال مُسجّل الماكرو المُسمّى.

الحركات المدعومة

المفتاحالوصف
hيسار
<left>يسار
<backspace>يسار
jأسفل
<down>أسفل
<enter>لأسفل لأول حرف غير فراغ
kأعلى
<up>أعلى
لأعلى لأول حرف غير فراغ
lيمين
<right>يمين
<space>يمين
$إلى نهاية السطر
<end>إلى نهاية السطر
إلى العمود 0
<home>إلى العمود 0
^إلى أول حرف في السطر
f.إيجاد حرف
F.إيجاد حرف للخلف
t.إلى حرف
T.إلى حرف للخلف
;تكرار آخر أمر t. أو f.
,تكرار آخر أمر t. أو f.
nإيجاد التالي
Nإيجاد السابق
ggإلى السطر الأول
Gإلى السطر الأخير
wكلمة للأمام
Wكلمة للأمام
bكلمة للخلف
Bكلمة للخلف
eإلى نهاية الكلمة
Eإلى نهاية الكلمة
geإلى نهاية الكلمة السابقة
gEإلى نهاية الكلمة السابقة
%إلى العنصر المطابق
`[a-zA-Z><]إلى علامة
'[a-zA-Z><]إلى سطر علامة
[[إلى بداية كتلة الأقواس السابقة
]]إلى بداية كتلة الأقواس التالية
[]إلى نهاية كتلة الأقواس السابقة
][إلى نهاية كتلة الأقواس التالية
*إلى التكرار التالي للكلمة تحت المؤشر
#إلى التكرار السابق للكلمة تحت المؤشر
Hإلى السطر الأول من النافذة
Mإلى السطر الأوسط من النافذة
Lإلى السطر الأخير من النافذة
إلى السطر المرئي التالي
gkإلى السطر المرئي السابق

كائنات النصوص المدعومة

المفتاحالوصف
iwكلمة داخلية
awكلمة
iWالكلمة داخلي
aWالكلمة
i"علامة اقتباس مزدوجة داخلية
a"علامة اقتباس مزدوجة
i’علامة اقتباس مفردة داخلية
a’علامة اقتباس مفردة
i`علامة اقتباس خلفية داخلية
a`علامة اقتباس خلفية
ibقوس داخلي
i)قوس داخلي
i(قوس داخلي
abقوس
a)قوس
a(قوس
iBقوس معقوف داخلي
o}قوس معقوف داخلي
i{قوس معقوف داخلي
aBقوس معقوف
a}قوس معقوف
a{قوس معقوف
i<علامة متباينة داخلية
i>علامة متباينة داخلية
a<علامة متباينة
a>علامة متباينة
i[قوس داخلي
I]قوس داخلي
a[قوس
a]قوس
فاصلة داخلية
فاصلة

أوامر وضع الإدراج المعتمدة

المفتاحالوصف
<c-d>إلغاء الإزاحة
<c-t>إزاحة
<c-e>أدرِج من الأسفل
<c-y>أدرِج من الأعلى
<c-w>احذف كلمة
<c-r>.أدرِج محتوى المسجل
<c-o>حوِّل إلى الوضع العادي لأجل أمر واحد
<c-a>زد العدد تحت المؤشر
<c-x>انقص العدد تحت المؤشر

كائن النص الفاصلة

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

فاصلة إلى

نطاقات كائن نص الفاصلة. لو كان المؤشر فوق، على سبيل المثال، “arg2”، فإن الضغط على c i ، ("تغيير الفاصلة الداخلية") يحذف “double arg2” ويضع المؤشر بين الفاصلتين في وضع الإدراج. طريقة مريحة جدًا لتغيير وسائط الدالة.

شريط أوامر Vim المُحاكى

أتى كيت 4.11 بخيار تهيئة مخفي يجعل / و؟ و: تظهر بحثًا/أمرًا جديدًا عوضًا عن شريط البحث / الاستبدال / سطر الأوامر المعتاد في كيت. يهدف الشريط إلى تكرار الكثير من ميزات شريط أوامر Vim، وإصلاح العديد من المشاكل المتعلقة بتفاعل وضع Vim في كيت مع شريط البحث/الاستبدال في كيت (الاستبدال التفاعلي لا يعمل؛ البحث التزايدي لا يضع المؤشر صحيحًا؛ لا يمكن استعماله في تعيينات/وحدات ماكرو؛ إلخ).

يُوفَّر شريط الأوامر المُحاكى الاختصارات الآتية؛ مثلما الحال مع Vim، يمكن إعادة تخطيطها باستخدام cmap و cnoremap، إلخ:

المفتاحالوصف
<c-r>.أدرِج محتويات المسجل.
<c-r><c-w>أدرِج الكلمة تحت مؤشر (الوثيقة).
<c-p>استدعِ إكمالًا خاصًا بالسياق (انظر أدناه)
انتقل للخلف/ للأعلى في قائمة الإكمال.
<c-p>انتقل للأمام/ للأسفل في قائمة الإكمال.
<c-space>ملحق كيت لـ Vim.
إكمال آلي للكلمة من الوثيقة.
<c-d>ملحق كيت لـ Vim.
في تعبير استبدال sed (أي s/ابحث/استبدل/[g][c][i])،
امسح مصطلح "البحث" وضع المؤشر هناك.
<c-f>ملحق كيت لـ Vim.
في تعبير استبدال sed (أي s/ابحث/استبدل/[g][c][i])،
امسح مصطلح “الاستبدال” وضع المؤشر هناك.
<c-g>.ملحق كيت لـ Vim.
مثل .، أدرِج محتوى المسجل المسمَّى،
ولكن اهربه بطريقة تجعلنا نبحث عن محتوى المسجل الحرفي عند استخدامه مع بحث؛
وليس محتوى المسجل مُفسَّرًا على أنه تعبير نمطي.

يُحدَّد "الإكمال الخاص بالسياق" على النحو التالي:

  • في شريط بحث (/ أو ؟)، إكمال آلي من سجل البحث (الذي يشمل عمليات البحث المستهلَّة عبر * و#؛ وعمليات البحث المنفَّذة في تعابير استبدال sed؛ إلخ.)
  • في شريط أوامر فارغ (:)، إكمال آلي من سجل الأوامر (ملاحظة: يُستدعَى الإكمال الآلي لأسماء الأوامر آليًا عندما تبدأ بالطباعة).
  • في شريط أوامر يحتوي على تعبير استبدال sed (مثل :s/ابحث/استبدل/gc)، لو كان المؤشر موضوعًا فوق "البحث"، إكمال آلي من سجل "البحث"؛ ولو كان فوق "الاستبدال"، إكمال آلي من سجل مصطلحات "الاستبدال".

عند تنفيذ تعبير استبدال sed في شريط الأوامر بالعلامة "c" (مثل s/ابحث/استبدل/gc)، يُشرَع في تعبير بحث/استبدال تفاعلي على غرار Vim.

تُوفَّر بعض أمثلة استخدامات شريط الأوامر المُحاكى، مع صور GIF متحركة، في هذا الدليل. في 4.11، يمكن تفعيل شريط الأوامر المُحاكى بضبط خيار التهيئة المخفي "Vi Input Mode Emulate Command Bar" إلى صحيح في katerc/kwriterc/kdeveloprc الخاص بك.

الميزات المفقودة

كما ذُكِر سابقًا، ليس هدف وضع VI في كيت دعم 100% من ميزات Vim، على أي حال، هناك بعض الميزات المفقودة بشدة

  • وضع الكتلة البصرية - وخاصة القدرة على إلحاق/إضافة نص إلى تحديد الكتلة البصرية.
  • توفر أوامر ex في برامج أخرى غير تطبيق كيت.
  • يحتاج رمز البحث إلى تحسين ويجب أن يكون الأمـران * و # مجرد عمليات بحث عادية.

إذا افتقدت ميزات أخرى أو أردت المساعدة في الميزات المذكورة أعلاه، فلا تتردد في التواصل معي أو إرسال رقع! :-)

سجل التغييرات

  • 2010-05-16:
    إصدار مبدئي. جُمعَت المعلومات من مدخلات المدونة وملفات README لجعلها مصدرًا وحيدًا للمعلومات الحالية.
  • 2010-05-17:
    أُضيفَت Ctrl+A و Ctrl+X (زيادة/إنقاص العدد تحت المؤشر).
  • 2010-08-30:
    حُوِّلَت الصفحة إلى kate-editor.org.
  • 2010-09-10:
    صُحِّحَ النص المتعلق بكائن نص الفاصلة وأُجرِيَت بعض تصحيحات التنسيق
  • 2021-02-03:
    حُوِّلَت جداول ربط المفاتيح إلى ماركداون لـ hugo.