وضع VI
مقدّمة

وضع VI في كيت هو مشروع لجلب التحرير المشروط الشبيه بـ Vim إلى محرر نصوص كيت وبالتبعية لبرامج كيدي الأخرى التي تتشارك نفس مكون المحرر. بدأ المشروع كمشروع Google Summer of Code في 2008 - حيث كُتِبَت كل الوظائف الأساسية. واصلت صيانة هذا الترميز وتطويره بشكل أكبر ويقل عدد المزايا المفقودة من Vim ببطء. سيكون معظم مستخدمي Vim منتجين بالفعل في وضع VI في كيت. توجد قائمة بما هو مفقود في أسفل الصفحة.
تهدف هذه الصفحة لتكون نظرة عامة محدثة على هذا العمل.
الإعدادات → اضبط كيت… → التحرير → وضع إدخال VI.
يمكن تبديله أيضًا باستخدام إعداد "وضع إدخال VI" في قائمة "تحرير". (مفتاح الاختصار المبدئي هو Meta+Ctrl+V – حيث Meta عادة ما يكون مفتاح Windows).
الأهداف
الهدف من وضع VI ليس أن يكون بديلاً كاملاً لـ Vim ويدعم جميع مزايا Vim. هدفه هو جعل "طريقة Vim" لتحرير النصوص - وعادات Vim المكتسبة - متاحة للبرامج التي تستخدم محرر نصوص كيت كمحرر داخلي لها. تشمل هذه البرامج
- محرر نصوص كيت
- KWrite – محرر نصوص كيدي البسيط
- KDevelop – بيئة تطوير متكاملة متقدمة للعديد من لغات البرمجة
- Kile – محرر لاتخ
يهدف وضع VI إلى الاندماج بشكل جيد مع البرامج والانحراف عن سلوك Vim عندما يكون ذلك منطقيًا. على سبيل المثال، سيفتح :w
مربع حوار حفظ في وضع VI في كيت.
عدم التوافق مع Vim
هناك عدد قليل فقط من مزايا وضع VI في كيت غير متوافقة مع Vim (دون احتساب الأشياء المفقودة). وهي مدرجة أدناه مع الأسباب الخاصة بها.
- كيت:
U
وCtrl+r
إعادة
Vim:Ctrl+r
إعادة عادية،U
يستخدم للتراجع عن جميع التغييرات الأخيرة على سطر واحد
السبب في جعلU
يعمل كإعادة في وضع VI في كيت هو أن الاختصارCtrl+r
بشكل مبدئي يأخذه وظيفة الاستبدال في كيت (البحث والاستبدال). بشكل مبدئي، لن يتجاوز وضع VI اختصارات كيت (يمكن اضبط هذا في الإعدادات → اضبط كيت… → التحرير → وضع إدخال Vi)، ولذلك يجب أن تكون وظيفة الإعادة متاحة كضغط مفتاح "عادي" أيضًا. بالإضافة إلى ذلك، فإن سلوك أمر U في Vim لا يتطابق جيدًا مع نظام التراجع الداخلي لكيت، لذا لن يكون دعمه سهلاً على أي حال. - كيت:
:print
يعرض مربع حوار "الطباعة"
Vim::print
يطبع أسطر النطاق المحدد مثل سلفه ed. الأوامر مثل :print متاحة ليس فقط في وضع VI ولكن للمستخدمين الذين يستخدمون كيت "العادي" أيضًا – لذلك اخترت أن أجعل الأمر:print
يفتح مربع حوار الطباعة – باتباع مبدأ الحد الأدنى من المفاجأة بدلاً من محاكاة سلوك Vim. - كيت:
Y
يجذب إلى نهاية السطر.
Vim:Y
يجذب السطر بأكمله، تمامًا مثلyy
. سلوك VI لأمرY
هو في الممارسة خطأ؛ بالنسبة لأوامر التغيير والحذف، سيقومcc
/dd
بتنفيذ الإجراء على السطر الحالي وسيعملC
/D
من عمود المؤشر إلى نهاية السطر. ومع ذلك، كل منyy
وY
يجذبان السطر الحالي. في وضع VI في كيت، سيجذبY
إلى نهاية السطر. يوصف هذا بأنه "أكثر منطقية" في توثيق Vim. - كيت:
: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] | قوس |
i، | فاصلة داخلية |
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.