" ftplugin/c/c_snippet.vim
inoremap <expr> <buffer> ; getline('.')[col('.')-1:-1]=~')$' ? '<right>;' : ';'
Эта версия не должна создавать проблем с for
, если ваш движок сниппетов расширяет его до
for (...|) {
<+code+>
}<++>
Если открывающая скобка находится на новой строке, это испортит ситуацию.
Вы можете легко изменить регулярное выражение на '"\=)\+$'
, чтобы ответить на свой первоначальный вопрос.
inoremap <expr> <buffer> ; getline('.')[col('.')-1:-1]=~'"\=)\+$' ? '<end>;' : ';'
Однако я не думаю, что это хорошая идея.В этом случае отображение для <bs>
будет:
inoremap <expr> <buffer> <bs> getline('.')[:col('.')-2] =~ '.*")\+;$' ? '<bs><c-o>F";' : '<bs>'