تكرار المفاتيح والنطاقات في تعيينات Vim
سؤال
أريد تحديد تعيين في .gvimrc الخاص بي بحيث إذا تم الضغط على المفتاح الأخير، يتم تكرار الإجراء الذي تم تشغيله.على وجه التحديد، أريد أن أفعل شيئا من هذا القبيل
map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1
بالنسبة لـ MacVim، ولكني أريد أن يستمر تقليل/زيادة الشفافية عند الضغط على t/T (لا أريد الاستمرار في الضغط على شريط المسافة).
إذا كان لديك اقتراح لطريقة أفضل لضبط الشفافية، سأكون ممتنًا لذلك أيضًا.
بشكل منفصل، سيكون من الجميل أن تكون قادرًا على الكتابة 20 فضاء ر وانخفضت الشفافية بنسبة 20؛ومع ذلك، عندما أحاول الحصول على
E481: No range allowed.
كيف يمكنني تمكين مواصفات النطاق؟
شكرًا جزيلاً.
المحلول
لست متأكدا من الجزء الأول من سؤالك، ولكن للحصول على 20 <Space>
ر لتكون قادرة على القيام بعملها:
:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
- مع
<C-U>
تقوم بإزالة نطاق الخط الذي تمت إضافته إلى أمرك السابق عند الكتابة 20 في الوضع العادي. - مع
exe
تقوم بتنفيذ vimscript "الديناميكي". v:count1
هو العدد المعطى لأمر الوضع العادي الأخير (20 في هذا المثال).وإذا لم يكن هناك عدد معين، فسيتم تعيينه افتراضيًا على 1.
للحصول على معلومات إضافية انظر
:h v:count
:h v:count1
تحديث:
يمكنك حذف exe
استخدام let
شكل بدلا من set
واحد:
:map <space>t :<C-U>let &transparency-=v:count1<CR>
يرى :h :let-&
.
لا تنتمي إلى StackOverflow