تعطيل التعليق التلقائي لجميع أنواع الملفات
سؤال
والتفت على filetype plugin
بالنسبة لبعض المكونات الإضافية لـ Rails vim التي أضفتها، ولكن يبدو أن التأثير الجانبي لذلك هو أنه تم الآن تمكين التعليق التلقائي في جميع أنواع الملفات (على سبيل المثال، إذا بدأت سطرًا باستخدام #
, ، السطر التالي، إما عن طريق يدخل في وضع الإدراج أو يا, ، إلخ.للدخول في وضع الإدراج، سوف تحصل أيضا على #
).
لقد وجدت ال مرشد لتعطيل التعليق التلقائي formatoptions
, ، وأضفت ما يلي إلى .vimrc الخاص بي:
au FileType * setlocal formatoptions-=cro
ومع ذلك، ما زلت أواجه مشكلات - إلا إذا قمت بذلك صراحةً :source .vimrc
, ، (أو أدخل setlocal ...
مباشرة) فلا يسري مفعوله.لقد قررت أن هذا هو الحال لأن المكونات الإضافية الخاصة بـ vim ft تتجاوز خياراتي بخياراتها الخاصة.
ثم وجدت أ الدليل الثاني الذي يتحدث عن استخدام البرنامج النصي بعد ftplugin لإجراء تغييرات بعد تشغيل البرامج النصية ftplugin، ولكن الحل الخاص بهم هو إنشاء روابط رمزية لكل نوع ملف فردي في ~/.vim/after/ftplugin إلى ملف مركزي، ويبدو أن هذا أمر مربك أنا.
هل هناك أي طريقة لإنشاء برنامج نصي عام بعد ftplugin أم أنني أتعامل مع هذه المشكلة بشكل غير صحيح؟سيكون موضع تقدير أي مساعدة.
المحلول
ماذا عن البرنامج المساعد "بعد"؟قم بإنشاء ملف في ~/.vim/after/plugin/
مُسَمًّى noAutoComments.vim
(أو أيا كان) ووضع autocmd الخاص بك في ذلك؟
يحرر:
سبب نجاح هذا؟أنا أخمن فقط هنا، ولكن لدي شعور بأن autocmd
في ال ~/.vimrc
تتم إزالة الملف بواسطة ملف آخر (ولكن قبل الحصول على مصدر الملفات "بعد").
انتهى بي الأمر بإزالة ملفي ~/.vim
الدليل واستبدلت ملفي ~/.vimrc
مع الأسطر الثلاثة التالية:
filetype plugin on
syntax on
au FileType * setlocal formatoptions-=cro
مع هذه السطور فقط في بلدي ~/.vimrc
و لا ~/.vim/
الدليل، autocmd
يبدو أنه يعمل كما هو متوقع (Vim 7.1).
لأي ملف أقوم بتحريره:
:verbose set formatoptions?
formatoptions=ql
Last set from ~/.vimrc
لا يزال يتعين علي تحديد الملف (البرنامج المساعد) الذي يسبب هذه المشكلة.
نصائح أخرى
لقد أجريت المزيد من التحقيقات ويبدو أن موقعي autocmd
داخل ملف .vimrc الخاص بي يحدد ما إذا كان formatoptions
سيتم تجاوزه بواسطة المكونات الإضافية ft الخاصة بـ vim أم لا.استخدام vim --noplugin
لتعطيل جميع الإضافات الخارجية، وجدت النتائج التالية:
إذا كان vimrc الخاص بي يبدو كالتالي:
au FileType * setl fo-=cro
filetype plugin indent on
نتائج :verbose set fo?
يكون:
formatoptions=croql
Last set from /usr/share/vim/vim72/ftplugin/ruby.vim
ومع ذلك، إذا تم عكس الخطوط الموجودة في vimrc الخاص بي:
filetype plugin indent on
au FileType * setl fo-=cro
نتائج :verbose set fo?
يكون:
formatoptions=ql
Last set from ~/.vimrc
...وهي النتيجة المرجوة.لذلك يبدو أن autocmd
يجب تحديده بعد تمكين المكونات الإضافية لنوع الملف.
سبب آخر قد لا يسري مفعوله ...
من :he :set-=
:
When the option is a list of flags, {value} must be exactly as they appear in the option. Remove flags one by one to avoid problems.
أملك
" Turn off auto-commenting au FileType * setlocal formatoptions-=c au FileType * setlocal formatoptions-=r au FileType * setlocal formatoptions-=o
لأنني واجهت هذا.
باستخدام واحدة من مختلف autocmd
يجب أن تعمل الأحداث لتعيين خيار التكوين إذا وجدت الخيار الصحيح، ولكنني سأبدأ بتشغيل:
:verbose set formatoptions?
سيخبرك هذا بمكان تعيين الخيار، مما قد يسهل تحديد autocmd الذي سيتم استخدامه.وبدلاً من ذلك، إذا كنت لا تمانع في إجراء بعض الاختراقات البسيطة، فالطريقة التي سأفعل بها ذلك على الأرجح هي فقط معرفة مكان تعيينه في المكون الإضافي والتعليق على هذا السطر (وتدوين ملاحظة عنه في حالة قيامك بالترقية البرنامج المساعد).يمكنك أيضًا الاتصال بمؤلف المكون الإضافي ومطالبته بجعله خيارًا قابلاً للتكوين.
للمتاح autocmd
الأحداث، اقرأ هذا:
:help {event}
لقد جربت الحلول التي اقترحها الكثيرون، ولكن لم ينجح أي منها معي، لكنني وجدت حلاً بديلاً بسيطًا للغاية، وهو في ~/.bash_aliases:
# vim without auto comment
alias vi="vi +'set fo-=cro'"
كنت أعاني من هذه المشكلة وأخيرًا أعمل مع الأسطر التالية:
syntax on
filetype on
filetype plugin on
au FileType * setlocal formatoptions-=cro
أعتقد أن المفتاح هنا هو أن autocmd
مكان بعد filetype plugin on
.