سؤال

أحاول أتمتة رؤوس التعليقات. أنا عالق في محاولة لمعرفة كيفية إدراج نتيجة uuidgen أمر في رأسي باستخدام VIM's AutoCMD.

داخل الرأس ، النص النائب موجود ، مثل هذا:

#ifndef _UUID_
#define _UUID_

// Code goes here!

#endif // _UUID_

خط AutoCMD للملء _UUID_ في .vimrc هو:

autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g"

المشكلة تأتي تحت r! uuidgen. كيف يمكنني إدراج نتيجة تنفيذ قذيفة كنص في خط AUTOCMD؟ أو في أمر استبدال السادس لهذه المسألة؟

هل كانت مفيدة؟

المحلول

استخدم System () ، ولا تنسَ النتيجة -> matchstr(system('uuidgen'), "[^\n\r]*")

NB: بالنسبة للقوالب الأكثر تعقيدًا ، يمكنك استخدام حلول مثل Mu-Template. على سبيل المثال ، في C-Header.template, ، كان عليك تغيير قيمة s:guard إلى المكالمة إلى matchtr ()+system ().

نصائح أخرى

كان خط AutocMD الناتج بعد اقتراح لوك ، من أجل الأجيال القادمة:

autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top