Sudah lama sejak saya harus melakukan kode seperti HTML Vim
, tetapi baru-baru ini saya menemukan ini lagi. Katakanlah saya sedang menulis beberapa yang sederhana HTML
:
<html><head><title>This is a title</title></head></html>
Bagaimana cara menulis tag penutup untuk judul, head dan html dengan cepat? Saya merasa seperti saya kehilangan beberapa cara yang sangat sederhana di sini yang tidak melibatkan saya untuk menulis semuanya satu per satu.
Tentu saja saya dapat menggunakan CtrlPuntuk melengkapi otomatis nama tag individu tetapi yang membuat saya di keyboard laptop saya sebenarnya mendapatkan tanda kurung dan garis miring dengan benar.
html
xml
vim
autocomplete
wds
sumber
sumber
Ctrl-_
, tetapi ini membuat font kecil dari terminal saya.Saya merasa menggunakan plugin xmledit cukup berguna. itu menambahkan dua fungsi:
<p>
), mengembang tag segera setelah Anda mengetik penutupan>
ke<p></p>
dan menempatkan kursor di dalam tag dalam mode insert.Jika Anda kemudian segera mengetik yang lain
>
( misalnya Anda mengetik<p>>
), itu akan memperluasnya menjadi<p>
</p>
dan menempatkan kursor di dalam tag, menjorok sekali, dalam mode sisipkan.
The xml vim Plugin menambahkan kode lipat dan bersarang tag yang cocok untuk fitur ini.
Tentu saja, Anda tidak perlu khawatir tentang menutup tag sama sekali jika Anda menulis konten HTML Anda dalam Markdown dan menggunakannya
%!
untuk memfilter buffer Vim Anda melalui prosesor Markdown pilihan Anda :)sumber
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
. Tapi itu hanya berfungsi saat mengedit file .xml. Jika ext file adalah .html atau .htm, itu tidak berfungsi.Saya suka hal-hal minimal,
sumber
imap <silent> <C-c> </<C-X><C-O><C-X>
<Esc>F<i
di akhir ini sehingga menempatkan kursor kembali di dalam tag.,/
untuk menutup tagSaya merasa lebih nyaman membuat vim menulis tag pembuka dan penutup untuk saya, bukan hanya tag penutup. Anda dapat menggunakan plugin ragtag yang sangat baik dari Tim Pope. Penggunaannya terlihat seperti ini (biarkan | tandai posisi kursor) yang Anda ketik:
tekan CTRL+x SPACE
dan kamu mendapatkan
Anda juga dapat menggunakan CTRL+, x ENTERbukan CTRL+ x SPACE, dan Anda mendapatkan
Ragtag dapat melakukan lebih dari itu (mis. Masukkan <% = hal di sekitar%> atau DOCTYPE ini). Anda mungkin ingin memeriksa plugin lain oleh penulis ragtag , terutama surround .
sumber
ragtag
: vim.org/scripts/script.php?script_id=1896Jika Anda melakukan sesuatu yang rumit, sparkup sangat bagus.
Contoh dari situs mereka:
ul > li.item-$*3
berkembang menjadi:dengan a
<C-e>
.Untuk melakukan contoh yang diberikan dalam pertanyaan,
hasil
sumber
Ada juga plugin vim zencoding: https://github.com/mattn/zencoding-vim
tutorial: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
Pembaruan: ini sekarang disebut Emmet : http://emmet.io/
Kutipan dari tutorial:
sumber
Pemetaan
Saya ingin agar tag blok saya (sebagai lawan sebaris) segera ditutup dan dengan pintasan sesederhana mungkin (Saya suka menghindari kunci khusus seperti CTRLjika memungkinkan, meskipun saya menggunakannya
closetag.vim
untuk menutup tag sebaris saya.) Saya suka menggunakan ini pintasan saat memulai blok tag (terima kasih kepada @kimilhee; ini adalah take-off dari jawabannya):Penggunaan sampel
Tipe-
Hasil-
dimana
|
menunjukkan posisi kursor.Penjelasan
inoremap
berarti membuat pemetaan dalam mode sisipkan><Tab>
berarti tanda kurung sudut penutup dan karakter tab; inilah yang cocok><Esc>
berarti mengakhiri tag pertama dan keluar dari penyisipan ke mode normalF<
berarti menemukan braket sudut bukaan terakhirl
Berarti gerakkan kursor ke kanan (jangan salin tanda kurung siku)yt>
Berarti menarik dari posisi kursor ke atas sampai sebelum kurung sudut tutup berikutnya (yaitu isi tag salin)o</
berarti memulai baris baru dalam mode sisipan dan menambahkan kurung sudut bukaan dan garis miring<C-r>"
berarti tempel dalam mode sisipkan dari register default ("
)><Esc>
berarti menutup tag penutup dan keluar dari mode penyisipanO<Space>
berarti memulai baris baru dalam mode sisipkan di atas kursor dan menyisipkan spasisumber
l
berarti "benar" dan bukan "kiri," haha ... kesalahan yang lucu. Apa pendapat Anda tentang postingan saya? Saya perhatikan Anda tidak memberi suara positif.au filetype html inoremap <buffer> ...
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
Saya menghapus0<Space>
dan menambahkankJxi
. Naik 1 langkah, gabungkan dua baris, hapus satu karakter lalu masuk ke mode sisipkan.Periksa
vim-closetag
Ini adalah skrip yang sangat sederhana (juga tersedia sebagai
vundle
plugin) yang menutup tag (X) HTML untuk Anda. Dari ituREADME
:Catatan:
|
adalah kursor di sinisumber
allml (sekarang Ragtag) dan Omni-penyelesaian (<CX> <CO>) tidak berfungsi dalam file seperti .py atau .java.
jika Anda ingin menutup tag secara otomatis di file tersebut, Anda dapat memetakan seperti ini.
(^ R adalah Contrl + R: Anda dapat mengetik seperti ini Control + v dan kemudian Control + r)
(| adalah posisi kursor) sekarang jika Anda mengetik ..
<p> abcde |
dan ketik ^ j
lalu tutup tag seperti ini ..
<p> abcde </p> |
sumber
Berikut adalah solusi sederhana lainnya berdasarkan penulisan Web yang mudah ditemukan:
Menutup otomatis tag HTML
:iabbrev </ </<C-X><C-O>
Mengaktifkan penyelesaian
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
sumber
Dibangun dari jawaban luar biasa dari @KeithPinson (maaf, poin reputasi belum cukup untuk mengomentari jawaban Anda), alternatif ini akan mencegah pelengkapan otomatis menyalin apa pun tambahan yang mungkin ada di dalam tag html (mis. Kelas, id, dll .. .) tetapi tidak boleh disalin ke tag penutup.
UPDATE Saya telah memperbarui tanggapan saya untuk bekerja dengan
filename.html.erb
file.Saya perhatikan respons asli saya tidak berfungsi dalam file yang biasa digunakan dalam tampilan Rails, seperti
some_file.html.erb
ketika saya menggunakan ruby yang disematkan (misalnya<p>Year: <%= @year %><p>
). Kode di bawah ini akan bekerja dengan.html.erb
file.Penggunaan sampel
Tipe:
Hasil:
dimana
|
menunjukkan posisi kursorDan sebagai contoh menambahkan tag penutup sebaris sebagai ganti gaya blok:
Penggunaan sampel
Tipe:
Hasil:
dimana
|
menunjukkan posisi kursorMemang benar bahwa kedua contoh di atas bergantung pada
>[Tab]
untuk sinyal tag penutup (yang berarti Anda akan harus memilih baik inline atau blok gaya). Secara pribadi, saya menggunakan gaya blok dengan>[Tab]
dan gaya sebaris dengan>>
.sumber