Настройте параметры автоматического отступа в файле VIMRC

727
Shane Reustle

Я включил автоиндентирование в моем файле .vimrc, но столкнулся с досадной ошибкой / функцией. Например, когда я вкладываюсь в 3 раза и нажимаю клавишу возврата, новая строка также вкладывается в 3 раза. Затем, когда я снова нажимаю Enter, эта новая строка также отступает 3 раза, как и должно быть. Проблема возникает, когда я возвращаюсь к предыдущей строке (первой из двух новых строк). VIM автоматически удаляет пробелы, потому что видит его как пустую строку.

Есть ли способ отключить это? Я хотел бы иметь возможность вернуться к кодированию, как это:

function test () { <return> <return>}<up> <right>

Спасибо!

1

2 ответа на вопрос

2
garyjohn

Я не знаю ни одного параметра, который бы позволял Vim автоматически оставлять эти строки с начальным пробелом. Обычное решение состоит в том, чтобы изменить стиль редактирования, чтобы вы не теряли этот пробел, или использовать команду в обычном режиме, например o, Oили Sначать новую строку, чтобы отступ выполнялся автоматически, или принудительно делать отступ для текущего строка в режиме вставки с помощью Ctrl-Tили Ctrl-F.

Однако, если вы действительно хотите использовать эту конкретную последовательность клавиш и не потерять свой отступ, то я думаю, что это отображение будет работать.

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

Помещая пробел (или любой символ) в строку, а затем возвращая ее назад, вы сообщаете Vim, что это непустая строка, и она оставит только первые пробелы.

0
dgo.a

Переназначение <Return> или <CR> кажется отличным. У него есть недостаток: он затрудняет использование автозавершения Vim (<Cn>). Он также конфликтует с плагинами, которые полагаются на поведение по умолчанию, например, supertab .

Эта страница: http://vim.wikia.com/wiki/Get_the_correct_indent_for_new_lines_despite_blank_lines предлагает альтернативное решение: добавление функции для получения правильного отступа, несмотря на предыдущие пустые строки.

Похожие вопросы