1

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

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

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

Спасибо!

2 ответа2

2

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

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

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

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .