Как сделать так, чтобы в vim autoindent не пропускались конечные пробелы?

В некоторых текстовых редакторах (например, Kate, gedit), когда включен автоматический отступ, двойное нажатие клавиши возврата приведет к появлению завершающего пробела (который я хочу):

if (code) {
....
....|
}

В то время как другие обслуживают стандарт кодирования, где конечные пробелы (даже в пустых строках) не допускаются:

if (code) {

....|
}

Что меня раздражает в этом, так это то, что если я стрелка вверх после авто-отступа, авто-отступ теряется:

if (code) {
|
....
}

Если я запускаю VIM и :set autoindent Я получаю последнее поведение.

Мой вопрос: как настроить vim, чтобы сохранить конечные пробелы, а не автоматически удалять их, если они не используются?

3 ответа

Решение

Смотрите этот совет на vim Вики о том, как сделать правильный отступ даже для пустых строк. Если вы просто хотите сохранить предыдущий отступ (игнорируя vim рассчитывается как правильный отступ) использовать let ind = indent(prevnonblank(v:lnum - 1)) как объяснено в комментарии под той же вики.

Я нашел это решение для меня:

:inoremap <Return> <Space><BS><Return>

По моему.vimrc:

" Change a blank line upon creation so that its leading spaces won't be removed
inoremap <Return> <Return><Space><BS>
nnoremap o o<Space><BS>
nnoremap O O<Space><BS>
Другие вопросы по тегам