Один из способов продления времени ожидания вашего второго отображения - на самом деле только сопоставить <CR>
, а затем использовать выражение для проверки того, что оно набирается после символа {
.
Поведение несколько иное из двухсимвольного сопоставления, в котором сопоставление также будет работать, если вы наберете <CR>
после {
, который уже был там, что может быть приемлемо для вас (или даже может быть именно тем, что вы хотели.)
Поскольку вы используете выражение для выполнения проверок, вы можете выполнять дополнительные проверки, такие как только применение сопоставления, если вы набираете <CR>
в конце строки (поэтому избегайте его, если мы используем его для разделения существующей длинной строки.)
Возможная реализация этого будет выглядеть так:
inoremap <expr> <CR>
\ col('.') ==# col('$')
\ && getline('.')[col('.')-2] ==# '{'
\ ? "\<CR>}\<C-O>O"
\ : "\<CR>"
Мы используем здесь троичный оператор для получения другого вывода на основе состояние держит или нет. Если это не так, мы просто отображаем обратно на само нажатие клавиши, поэтому оно продолжает работать, как обычно во всех других контекстах.
Для части, которая вставляет закрывающую фигурную скобку, я также добавил CTRL-O O
до конца, поэтому после вставки фигурной скобки она добавит новую строку перед ней и оставит курсор в столбце с отступом внутри блока. Я надеюсь, что вы найдете это полезным, но не стесняйтесь игнорировать эту часть, если это не совсем то, что вы имели в виду.