Вчера я установил vundle, и с тех пор, как я настроил табуляцию в моем vimrc, он игнорируется и возвращается к 4 вместо 2.
Я обнаружил, что следующая строка после абзаца vundle вызывает его:
filetype plugin indent on
Мой отступ настроен так:
set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround " Round indent to multiple of 'shiftwidth'
set smartindent " Do smart indenting when starting a new line
set autoindent " Copy indent from current line, over to the new line
" Set the tab width
let s:tabwidth=2
exec 'set tabstop=' .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth
Вы можете проверить мой полный vimrc здесь .
Я проверил проблему с отступами, используя скрипт на Python (где отступы действительно имеют значение).
Я уже попытался изменить filetype plugin indent on
к , filetype plugin on
но это ничего не меняет. Помогает только комментирование этой строки.
Теперь, как говорится в руководстве по установке vundle, эта строка обязательна.
Как мне исправить эту проблему с отступом? Могу ли я просто пропустить строку filetype или действительно обязательно хранить ее в vimrc?
Решение:
Благодаря @ChristianBrabandt и @romainl я нашел решение, которое также может находиться в одном файле vimrc:
filetype plugin indent on
[...]
set noexpandtab " Make sure that every file uses real tabs, not spaces
set shiftround " Round indent to multiple of 'shiftwidth'
set autoindent " Copy indent from current line, over to the new line
" Set the tab width
let s:tabwidth=2
au Filetype * let &l:tabstop = s:tabwidth
au Filetype * let &l:shiftwidth = s:tabwidth
au Filetype * let &l:softtabstop = s:tabwidth
источник
Ответы:
Обо всем по порядку; строка ниже не имеет абсолютно никакого отношения к управлению Vundle или плагином:
Эта команда делает три вещи:
Эта строка существует, потому что некоторые менеджеры плагинов должны убедиться, что обнаружение типов файлов отключено, прежде чем делать свое волшебство, а использование Vim для программирования будет намного сложнее без ftplugins и правильного отступа. По моему мнению, они должны просто иметь дело с обнаружением типов файлов внутри, но хорошо ...
В любом случае, ваша проблема вызвана чрезмерным владением ftp-плагинами, которые переопределяют ваши настройки отступов на свои. Ftplugin Python является наиболее распространенным преступником, потому что недавно было решено, что он должен обеспечить PEP8.
Самый простой выход - полностью отказаться от использования ftplugins:
но они обычно идут с полезными вещами, поэтому этот метод не рекомендуется.
Самое чистое решение - оставить
filetype
линию в «оптимальном» состоянии:и переопределите их переопределения своими собственными
after/ftplugin/python.vim
:Ноты:
smartindent
потому что это не так уж умно для начала, и все равно не рекомендуется использовать скрипты отступа для конкретного типа файла.:execute
команды более чистыми:let
командами, чтобы избежать ненужной конкатенации.источник
shiftwidth
ноль иsofttabstop
-1, это будет следовать настройке табуляции.Проблема с отступом возникает из-за ftplugin, который загружает файл .vim,
/usr/share/vim/vim-version-/ftplugin/-filetype-.vim
который переопределяет все, что у вас есть в этом.vimrc
файле. Вы можете узнать, где находится этот файл, выполнив следующую команду внутри vim:verbose set tabstop?
. Вывод укажет вам файл, который переопределяет вашу конфигурацию.В моем случае у меня были проблемы с конфигурацией отступов Python.
Простой способ решить эту проблему - сделать следующее:
Создайте папку .vim в своей домашней папке (если у вас ее нет)
Добавьте следующее:
Измените все, что вы хотите в команде. Мой выглядит так, потому что я работаю с вкладками вместо пробелов.
источник