كيف يمكن إغلاق علامات HTML في Vim بسرعة؟
-
02-07-2019 - |
سؤال
لقد مر وقت طويل منذ أن اضطررت إلى القيام بأي تعليمات برمجية تشبه HTML Vim
, لكن مؤخرًا صادفت هذا مرة أخرى.لنفترض أنني أكتب بعض الأشياء البسيطة HTML
:
<html><head><title>This is a title</title></head></html>
كيف أكتب تلك العلامات الختامية للعنوان والرأس وhtml بسرعة؟أشعر وكأنني أفتقد طريقة بسيطة حقًا هنا والتي لا تتطلب مني كتابتها جميعًا واحدًا تلو الآخر.
بالطبع يمكنني استخدامها كنترولص للإكمال التلقائي لأسماء العلامات الفردية ولكن ما جعلني أستخدم لوحة مفاتيح الكمبيوتر المحمول هو في الواقع وضع الأقواس والشرطة المائلة بشكل صحيح.
المحلول
تحقق من هذا..
Closetag.vim
Functions and mappings to close open HTML/XML tags
https://www.vim.org/scripts/script.php?script_id=13
أنا استخدم شيئا مماثلا.
نصائح أخرى
أجد استخدام com.xmledit البرنامج المساعد مفيد جدا.يضيف قطعتين من الوظائف:
- عند فتح علامة (على سبيل المثال يكتب
<p>
)، يقوم بتوسيع العلامة بمجرد كتابة الإغلاق>
داخل<p></p>
ويضع المؤشر داخل العلامة في وضع الإدراج. إذا قمت بكتابة آخر على الفور
>
(على سبيل المثال أنت تكتب<p>>
) ، فإنه يوسع ذلك إلى<p>
</p>
ويضع المؤشر داخل العلامة، مع وضع مسافة بادئة مرة واحدة، في وضع الإدراج.
ال xml يضيف البرنامج الإضافي vim رمزًا قابلاً للطي وعلامة متداخلة تتوافق مع هذه الميزات.
بالطبع، لا داعي للقلق بشأن إغلاق العلامات على الإطلاق إذا قمت بكتابة محتوى HTML الخاص بك تخفيض السعر والاستخدام %!
لتصفية المخزن المؤقت Vim الخاص بك من خلال معالج Markdown الذي تختاره :)
أحب الحد الأدنى من الأشياء،
imap ,/ </<C-X><C-O>
أجد أنه من الملائم أكثر أن أجعل vim يكتب لي علامة الفتح والإغلاق، بدلاً من علامة الإغلاق فقط.يمكنك استخدام ممتاز البرنامج المساعد ragtag بواسطة تيم بوب.يبدو الاستخدام هكذا (اسمح | وضع علامة المؤشر) التي تكتبها:
span|
يضعط كنترول+س فضاء
وتحصل على
<span>|</span>
تستطيع ايضا استخذام كنترول+س يدخل بدلاً من كنترول+س فضاء, ، وتحصل على
<span> | </span>
يمكن لـ Ragtag أن يفعل أكثر من مجرد ذلك (على سبيل المثال.أدخل <%= أشياء حول هذا %> أو DOCTYPE).ربما تريد التحقق من المكونات الإضافية الأخرى من خلال مؤلف راجتاغ, ، خصوصاً تحيط.
إذا كنت تفعل أي شيء معقد، شرارة جيد جدا.
مثال من موقعهم:
ul > li.item-$*3
يتوسع إلى:
<ul>
<li class="item-1"></li>
<li class="item-2"></li>
<li class="item-3"></li>
</ul>
مع <C-e>
.
للقيام بالمثال الوارد في السؤال ،
html > head > title{This is a title}
عائدات
<html>
<head>
<title>This is a title</title>
</head>
</html>
يوجد أيضًا مكون إضافي لـ zencoding vim: https://github.com/mattn/zencoding-vim
درس تعليمي: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
تحديث: هذا يسمى الآن ايميت: http://emmet.io/
مقتطف من البرنامج التعليمي:
1. Expand Abbreviation
Type abbreviation as 'div>p#foo$*3>a' and type '<c-y>,'.
---------------------
<div>
<p id="foo1">
<a href=""></a>
</p>
<p id="foo2">
<a href=""></a>
</p>
<p id="foo3">
<a href=""></a>
</p>
</div>
---------------------
2. Wrap with Abbreviation
Write as below.
---------------------
test1
test2
test3
---------------------
Then do visual select(line wize) and type '<c-y>,'.
If you request 'Tag:', then type 'ul>li*'.
---------------------
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
---------------------
...
12. Make anchor from URL
Move cursor to URL
---------------------
http://www.google.com/
---------------------
Type '<c-y>a'
---------------------
<a href="http://www.google.com/">Google</a>
---------------------
رسم الخرائط
أحب أن يتم إغلاق علامات الحظر الخاصة بي (بدلاً من العلامات المضمنة) على الفور وباستخدام اختصار بسيط قدر الإمكان (أحب تجنب المفاتيح الخاصة مثل كنترول حيثما كان ذلك ممكنا، على الرغم من أنني لا تستخدم closetag.vim
لإغلاق العلامات المضمنة.) أحب استخدام هذا الاختصار عند بدء مجموعات من العلامات (بفضل @kimilhee؛وهذا انطلاقة من إجابته):
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>O<Space>
استخدام العينة
يكتب-
<p>[Tab]
نتيجة-
<p>
|
</p>
أين |
يشير إلى موضع المؤشر.
توضيح
inoremap
وسائل إنشاء التعيين في وضع الإدراج><Tab>
وسائل بين قوسين زاوية الإغلاق وحرف علامة التبويب؛هذا هو ما يقابل><Esc>
وسائل قم بإنهاء العلامة الأولى والهروب من الإدراج في الوضع العاديF<
وسائل ابحث عن قوس زاوية الفتح الأخيرl
وسائل حرك المؤشر لليمين (لا تنسخ قوس زاوية الفتح)yt>
وسائل قم بالسحب من موضع المؤشر إلى أعلى حتى قبل قوس زاوية الإغلاق التالي (أينسخ محتويات العلامات)o</
وسائل ابدأ سطرًا جديدًا في وضع الإدراج وأضف قوس زاوية الفتح والشرطة المائلة<C-r>"
وسائل لصق في وضع الإدراج من السجل الافتراضي ("
)><Esc>
وسائل أغلق علامة الإغلاق واهرب من وضع الإدراجO<Space>
وسائل ابدأ سطرًا جديدًا في وضع الإدراج أعلى المؤشر وأدخل مسافة
Allml (الآن ragtag) و Omni-Completion (u003CC-X>u003CC-O> ) لا يعمل في ملف مثل .py أو .java.
إذا كنت ترغب في إغلاق العلامة تلقائيًا في هذا الملف ، فيمكنك خريطة مثل هذا.
imap <C-j> <ESC>F<lyt>$a</^R">
(^R هو Control+R :يمكنك كتابة مثل هذا Control+v ثم Control+r )
(| هو موضع المؤشر) الآن إذا كنت تكتب ..
<p>ابدك|
واكتب ^j
ثم يغلق العلامة هكذا ..
<p>اي بي سي </p>|
فيما يلي حل بسيط آخر يعتمد على الكتابة على الويب التي يمكن العثور عليها بسهولة:
-
:iabbrev </ </<C-X><C-O>
-
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
الدفع vim-closetag
إنه برنامج نصي بسيط حقًا (متوفر أيضًا كملف vundle
البرنامج المساعد) الذي يغلق (X) علامات HTML لك.منها README
:
إذا كان هذا هو المحتوى الحالي:
<table|
الآن تضغط >, ، المحتوى سيكون:
<table>|</table>
والآن إذا ضغطت > مرة أخرى، المحتوى سيكون:
<table> | </table>
ملحوظة: |
هو المؤشر هنا
بناءً على الإجابة الممتازة التي قدمهاKeithPinson (عذرًا، لا توجد نقاط سمعة كافية للتعليق على إجابتك حتى الآن)، سيمنع هذا البديل الإكمال التلقائي من نسخ أي شيء إضافي قد يكون داخل علامة html (على سبيل المثال.الفئات والمعرفات وما إلى ذلك...) ولكن لا ينبغي نسخها إلى علامة الإغلاق.
تحديث لقد قمت بتحديث ردي للعمل مع filename.html.erb
ملفات.
لقد لاحظت أن استجابتي الأصلية لا تعمل في الملفات شائعة الاستخدام في طرق عرض Rails، مثل some_file.html.erb
عندما كنت أستخدم روبي المضمن (على سبيل المثال. <p>Year: <%= @year %><p>
).الرمز أدناه سوف يعمل مع .html.erb
ملفات.
inoremap ><Tab> ><Esc>?<[a-z]<CR>lyiwo</<C-r>"><Esc>O
استخدام العينة
يكتب:
<div class="foo">[Tab]
نتيجة:
<div class="foo">
|
<div>
أين |
يشير إلى موضع المؤشر
وكمثال على إضافة علامة الإغلاق سطريًا بدلاً من نمط الكتلة:
inoremap ><Tab> ><Esc>?<[a-z]<CR>lyiwh/[^%]><CR>la</<C-r>"><Esc>F<i
استخدام العينة
يكتب:
<div class="foo">[Tab]
نتيجة:
<div class="foo">|<div>
أين |
يشير إلى موضع المؤشر
صحيح أن كلا من الأمثلة المذكورة أعلاه تعتمد على >[Tab]
للإشارة إلى علامة إغلاق (بمعنى أنه سيتعين عليك الاختيار أيضاً نمط مضمّن أو نمط كتلة).أنا شخصياً أستخدم نمط الكتلة مع >[Tab]
والنمط المضمن مع >>
.