تعطيل التعليق التلقائي لجميع أنواع الملفات

StackOverflow https://stackoverflow.com/questions/3240451

  •  15-09-2020
  •  | 
  •  

سؤال

والتفت على 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top