أفضل طريقة لإدراج الطابع الزمني في Vim؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

يحتوي EditPad Lite على ميزة رائعة (كنترول-ه, كنترول-أنا) الذي يُدرج طابعًا زمنيًا على سبيل المثال."2008-09-11 10:34:53" في التعليمات البرمجية الخاصة بك.

ما هي أفضل طريقة للحصول على هذه الوظيفة في Vim؟

(أنا أستخدم Vim 6.1 على خادم Linux عبر SSH.في الوضع الحالي، يشارك عدد منا معلومات تسجيل الدخول، لذا لا أرغب في إنشاء اختصارات في الدليل الرئيسي إذا كانت هناك طريقة أخرى مدمجة للحصول على طابع زمني.)

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

المحلول

http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/

جربته وهو يعمل على جهازي ماك:

:r! date

ينتج عنه:

Thu Sep 11 10:47:30 CEST 2008

هذا:

:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"

ينتج عنه:

2008-09-11 10:50:56

نصائح أخرى

لجعله يعمل عبر الأنظمة الأساسية، ما عليك سوى وضع ما يلي في ملفك vimrc:

nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>

الآن يمكنك فقط الضغط على F3 في أي وقت داخل Vi/Vim وستحصل على طابع زمني مثل 2016-01-25 Mo 12:44 تم إدراجها عند المؤشر.

للحصول على وصف كامل للمعلمات المتاحة، تحقق من توثيق الدالة C strftime().

لماذا يستخدم الجميع :r!؟ابحث عن سطر فارغ واكتبه !!date من وضع الأوامر.حفظ ضغطة المفتاح!

[ملحوظة.سيؤدي هذا إلى توجيه السطر الحالي إلى stdin، ثم استبدال السطر بمخرجات الأمر؛ومن هنا جاء الجزء "العثور على سطر فارغ".]

كامتداد لإجابة @Swaroop CH،

^R=strftime("%FT%T%z")

هو نموذج أكثر إحكاما والذي سيطبع أيضًا المنطقة الزمنية (في الواقع الفرق من UTC، في نموذج متوافق مع ISO-8601).

إذا كنت تفضل استخدام أداة خارجية لسبب ما،

:r !date --rfc-3339=s

سيعطيك طابعًا زمنيًا متوافقًا مع RFC-3339 بالكامل؛يستخدم ns بدلاً من s للحصول على دقة تشبه دقة Spock، وتمرير الأنابيب من خلالها tr ' ' T لاستخدام حرف T كبير بدلاً من المسافة بين التاريخ والوقت.

قد تجد أيضًا أنه من المفيد معرفة ذلك

:source somefile.vim

سوف تقرأ في الأوامر من somefile.vim:بهذه الطريقة يمكنك إعداد مجموعة مخصصة من التعيينات، وما إلى ذلك، ثم تحميلها عند استخدام vim على هذا الحساب.

: ص!تاريخ

يمكنك بعد ذلك إضافة تنسيق إلى أمر التاريخ (تاريخ الرجل) إذا كنت تريد نفس التنسيق تمامًا وإضافة هذا كاسم مستعار لـ vim أيضًا

: ص!التاريخ +"\%Y-\%m-\%d \%H:\%M:\%S"

ينتج عن ذلك التنسيق الذي أظهرته في المثال الخاص بك (التاريخ الموجود في الصدفة لا يستخدم \%، ولكن فقط %، ويستبدل vim % باسم الملف الحالي، لذلك تحتاج إلى الهروب منه).

يمكنك إضافة خريطة في ملف .vimrc الخاص بك حتى تتمكن من وضع الأمر تلقائيًا، على سبيل المثال، في كل مرة تضغط فيها على F3:

:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>

(تحرير من أعلاه :)) (تحرير:تغيير جزء النص إلى رمز، بحيث

<F3> 

يمكن عرضها)

ألق نظرة على النصيحة المخصصة لإدراج/تحديث الطابع الزمني على vim.wikia.

للحصول على طابع زمني يونكس:

:r! date +\%s

يمكنك أيضًا تعيين هذا الأمر إلى مفتاح (على سبيل المثال F12) في VIM إذا كنت تستخدمه كثيرًا:

ضع هذا في .vimrc الخاص بك:


map  <F12> :r! date +\%s<cr>

من فيم ويكيا.

أستخدم هذا بدلاً من الاضطرار إلى تحريك يدي للضغط على المفتاح F:

:iab <expr> tds strftime("%F %b %T")

الآن في وضع الإدراج، ما عليك سوى كتابة tds وبمجرد الضغط على شريط المسافة أو العودة، أحصل على التاريخ وأواصل الكتابة.

أضع %b هناك، لأنني أحب رؤية اسم الشهر.ال %F يعطيني شيئا للفرز حسب التاريخ.قد أغير ذلك إلى %Y%m%d لذلك لا توجد أحرف بين الوحدات.

طريقة سريعة أخرى لم تتضمنها الإجابات السابقة:يكتب-

!!تاريخ

يونيكس، استخدم:

!!date

ويندوز، استخدم:

!!date /t

مزيد من التفاصيل: انظر Insert_current_date_or_time

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