我想弄清楚如何让这个命令只在某些情况下运行:
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 () {
});
所以模式将是,NO半,如果它以for|switch|if|else|if else
(和其他任何东西)开头,或者如果在同一行上有:
。
我真的不知道该去哪里看
你可以试试mapping with <expr>
。
我写了一个函数,它返回您需要的映射,无论是否有半字符。:
fun! Mapping()
return "{<cr>}<c-o>O<Tab><Down>".(getline('.') =~# '^s*fors|ifs|elses'||getline('.') =~# ':'? '' : ';')."<up>"
endfunction
那么你可以把这个映射添加到你的au
inoremap <buffer> <expr> {<cr> Mapping()
请注意,我没有把所有的关键字放在行中,我只是添加了if else for
作为示例。您可以添加其他关键字并测试。