Как отключить двойной отступ в vim?

Я пишу python, javascript, html и другие файлы конфигурации, и я понимаю, что когда я ввожу новую строку в незавершенную строку (т.е. неисчерпаемая строка, все еще находящаяся в словарных скобках и т.д.), я получаю двойной отступ.

Как это исправить?

Ответ 1

Python

В файле .vimrc есть несколько переменных, которые могут повлиять на то, как Python имеет отступ:

Отступ после открытой круглой скобки: let g:pyindent_open_paren = '&sw * 2'

Отступ после вложенной круглой скобки: let g:pyindent_nested_paren = '&sw'

Отступ для линии продолжения: let g:pyindent_continue = '&sw * 2'

Для получения дополнительной информации: :help ft-python-indent

Javascript

См. $VIMRUNTIME/indent/javascript.vim: он использует cindent для выполнения отступов. cindent зависит от ряда опций с помощью переменной cinoptions. Некоторые из них по умолчанию установлены на &shiftwidth * 2, вы можете захотеть reset те.

Соответствующим вариантом для вашего дела является +N. В вашем файле .vimrc вы должны поставить что-то вроде:

set cinoptions+=+1

хотя это, по-видимому, уже по умолчанию.

Html

Опять же, см. $VIMRUNTIME/indent/html.vim: это выполняет отступ через пользовательское выражение. У меня был быстрый взгляд, и он, кажется, не выполняет ни одного двойного отступа в любом месте, но я могу ошибаться. Доступные для этого глобальные переменные не кажутся релевантными.

В худшем случае вы можете изменить этот файл самостоятельно и поместить его в свой ~/.vim/indent/.

Другие файлы

В общем, каждый файл имеет отступ в соответствии с его собственными критериями, посмотрите в $VIMRUNTIME/indent/, чтобы понять, можно ли и как настроить каждый из них.

Ответ 2

Вы уверены, что это действительно отступы? Возможно, ваше значение shiftwidth удваивает длину отступа. Сначала убедитесь, что значение shiftwidth установлено таким же значением, что и длина отступа.