我正在试图弄清楚如何让这个命令仅在某些情况下运行:
au BufNewFile,BufRead *.js imap <buffer> {<cr> {<cr>}<c-o>O<Tab><Down>;<Up>
示例:
// No!
if () {
}
// YES!
foo.x = function () {
};
// YES!
var x = {
// NO!
y: function () {
}
};
// YES!
foo(function () {
});
因此模式将是,如果它以for|switch|if|else|if else
(以及其他任何东西)开始,或者如果同一行上有:
,则为NO半个IF。
我真的不知道在哪里看。
答案 0 :(得分:1)
你可以尝试mapping with <expr>
。
我写了一个函数,它返回你需要或没有半的映射。 :
fun! Mapping()
return "{\<cr>}\<c-o>O\<Tab>\<Down>".(getline('.') =~# '^\s*for\s\|if\s\|else\s'||getline('.') =~# ':'? '' : ';')."\<up>"
endfunction
然后您可以将此映射添加到au
inoremap <buffer> <expr> {<cr> Mapping()
请注意,我没有将所有关键字放在行中,我只是添加了if else for
作为示例。你可以添加其他关键词并进行测试。