У меня есть следующее регулярное выражение в одном из моих файлов ftplugin, целью которого является разделение операторов присваивания пробелами после нажатия клавиши ввода:
inoremap <CR> <Esc>:s/\s*\([=+!-]\?=\)\s*/ \1 /ge<CR>:noh<CR>o
Это работает на =, ==,! =, + =, - =.Пока что эта часть работает безупречно.Проблема возникает, когда я изменяю это регулярное выражение следующим образом, чтобы разделить операторы сравнения:
inoremap <CR> <Esc>:s/\s*\([=+!-]\?=\|[><]=\?\)\s*/ \1 /ge<CR>:noh<CR>o
После этого изменения ни операторы присваивания, ни операторы сравнения больше не сопоставляются (без ошибок, просто ничего не происходит).Тем не менее, поиск этого нового шаблона в vim напрямую выделяет их все.Я не уверен, что проблема связана с тем, что <и> являются специальными символами в файлах .vim (используется для и т. Д.), Я пытался экранировать их с помощью \, но это не помогло.Кроме того, когда я помещаю их в тот же блок, что и остальные операторы, они работают нормально:
inoremap <CR> <Esc>:s/\s*\([=+!-><]\?=\)\s*/ \1 /ge<CR>:noh<CR>o
Однако единственная проблема в этом случае заключается в том, что если я наберу что-то вроде x