أفضل طريقة لإدراج الطابع الزمني في Vim؟
سؤال
يحتوي 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
لذلك لا توجد أحرف بين الوحدات.
طريقة سريعة أخرى لم تتضمنها الإجابات السابقة:يكتب-
!!تاريخ