Ответ 1
Проблема заключается в том, что ваши настройки переопределяются плагином filetype, частью Vim. Проблема заключается в ftplugin/python.vim
:
" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
Плагин python пытается настроить исходный код по умолчанию PEP8, поэтому он настраивает tabstop. Вам понадобятся некоторые из этих плагинов, но вам может понадобиться настроить собственные автокоманды, чтобы исправить все, что вам не нравится.
Есть два способа сделать это. Если у вас есть папка ~/.vim
, самый простой способ - добавить файл ~/.vim/after/ftplugin/python.vim
:
" Here, you can set the setting directly, or call a command or function
" to help you. We'll call a command, and then implement that command in
" your top-level vimrc to help keep things in one place.
SetupPython
В .vimrc
добавить:
function! SetupPython()
" Here, you can have the final say on what is set. So
" fixup any settings you don't like.
setlocal softtabstop=2
setlocal tabstop=2
setlocal shiftwidth=2
endfunction
command! -bar SetupPython call SetupPython()
Последний бит просто позволяет вам вызывать функцию как SetupPython
, а не call SetupPython()
в последующем файле.
Другим способом является сохранение всего в вашем .vimrc
, но вы используете автокоманду VimEnter
для настройки autocommand FileType для python для установки ваших настроек. Ожидая, пока не будет запущен VimEnter
, все остальные плагины успеют настроить свои автокоманды, поэтому ваш будет добавлен в конец списка. Это позволяет запускать после плагина python FileType
autocommand и устанавливать собственные настройки. Это немного беспорядок, и механизм after/
выше - это предпочтительный способ сделать это.
FWIW, многие общие настройки, которые я сохраняю в функции SetupSource()
, вызываемой из нескольких разных FileType
s. Тогда у меня будет SetupPython()
вызов SetupSource()
. Это помогает сохранить некоторые функции немного чище и уменьшить некоторое дублирование. Если это поможет, взгляните на функции в моих vimfiles здесь: https://github.com/jszakmeister/vimfiles/blob/master/vimrc#L5328