Часть «использование внешних плагинов» сложная.
Чтобы получить желаемое поведение, вам нужно inoremap
ключ <CR>
, возможно, с использованием сопоставления <expr>
, который будет смотреть на символ под курсором, посмотреть, является ли он }
, и, в этом случае, переместить его на две строки вниз, удалить отступ этой строки (только если первый был с отступом), go сделать резервную копию одной, повторно -поставить отступ ...
И если это не }
, то просто ведите себя как обычный <CR>
(эта часть проста с отображением <expr>
.)
проблема в том, что когда вы продвинулись так далеко, вы на полпути к написанию плагина, так что вы могли бы просто получить тот, который был тщательно отлажен для всех угловых случаев, которые могут произойти здесь.
Если Вы хотите что-то действительно простое:
inoremap <expr> <CR>
\ getline('.')[col('.')-1]=='}'
\ ? "\<CR>\<C-d>\<C-o>O" : "\<CR>"
Он использует <CR>
с последующим CTRL-D
для отступа }
, затем CTRL-O
для использования команды O
normal mode, которая вставляет новую строку над этой. (Используя O
здесь, чтобы получить правильный отступ.)
Но, как уже упоминалось, это не всегда будет работать так, как ожидалось. Это очень просто.
А затем вы захотите исправить backspace или исправить это так, что когда вы наберете }
, если вы уже наберете }
, вы пропустите это ... Вы ' Вам понадобится плагин, поверьте мне!