Автоматическая новая строка и отступы в vim, когда внутри брекеты?
Например, если я кодирую jQuery в vim, и у меня это в режиме вставки ( "|" - это текущая позиция курсора):
$('#something').click(function(){|})
... и я нажал enter, я хотел бы получить следующее:
$('#something').click(function(){
|
})
... пока я получаю это:
$('#something').click(function(){
|})
То же самое происходит с определениями функций в PHP. Есть ли способ автоматически вставить дополнительную новую строку и отступы позиции курсора при попадании внутрь внутри фигурных скобок?
(Извиняется, если это было задано раньше - это похоже на общий запрос, но я искал некоторое время и не мог его найти.)
Ответы
Ответ 1
Я закончил просто hardcoding это в .vimrc, как следует
" Make it so that a curly brace automatically inserts an indented line
inoremap {<CR> {<CR>}<Esc>O<BS><Tab>
Казалось бы, части <BS><Tab>
не нужны, но по какой-то причине они не отступали правильно, как обычно делает команда O, поэтому я должен был добавить ее.
Ответ 2
Я использую javascript.vim, который (почти) делает то, что вы хотите для кода JavaScript.
Там также php.vim, но я не тестировал его.
Ответ 3
Моя версия похожа, но использует <C-o>
вместо <Esc>
, поскольку она запускает проверку с помощью JavaScriptLint.vim.
Кроме того, я не хочу, чтобы каждый {}
был на нескольких строках, поэтому он отображался в ctrl + ↩.
inoremap <C-Return> <CR><CR><C-o>k<Tab>