我正在尝试编写自己的函数来转换这样的字符串:
div.class1.class2#id
像这样的 HTML 元素
<div class="class1 class2" id="id">|</div>
与 | 代表光标。我已经做到了这一点,但它产生了多个类:
<div class="class1" class="class2" id="id">|</div>
这是预期的代码。我遇到的错误是,作为 viml 的新手,我不知道用该语言解决这个问题的最佳方法。关于让课程空间分隔的任何想法?
此外,这是我的第一个 viml 文件,所以任何评论都将不胜感激(尤其是绑定本身!)
function! CompileSelectors (input)
let element=ParseElement(a:input)
return '<'.element.'>'.CloseTag(element)
endfunction
function! ParseElement (input)
let escapedInput=escape(a:input, '^$.*\/~[]')
let elementWithClass=substitute(escapedInput, '\\\.\([^\.#]*\)', ' class="\1"', 'g')
let elementWithId=substitute(elementWithClass, '#\([^\.#]*\)', ' id="\1"', 'g')
return substitute(elementWithId, '\\\([\^\$\.\*\\\/\~\[\]\)', '\1', 'g')
endfunction
function! CloseTag (input)
return '</'.matchstr(a:input, '\S\+', 0, 1).'>'
endfunction
imap <Leader><Tab> <Esc>vBdi
\<C-R>=CompileSelectors('<C-r>"')<CR>
\<Esc><<F<i
imap <Leader><Return> <Esc>vBdi
\<C-R>=CompileSelectors('<C-r>"')<CR>
\<Esc><<F<i<Return><Esc>O
修正了标题 - 对此感到抱歉!