4

В моем файле .vimrc у меня есть эта строка ..

filetype plugin indent on

а затем в ~/.vim/ftplugin/py.vimrc (я также пытался сохранить его как файл .vim) я скопировал и вставил файл vimrc для стандартов Python и включил в него все предложенные настройки ( раскомментировал их). Когда я создаю и открываю файл test.py и делаю что-то вроде вкладки, он идет 8 пробелами вместо 4.

Не уверен, что происходит не так.

3 ответа3

1

Я бы заменил

au BufRead,BufNewFile *.py,*pyw set shiftwidth=4
au BufRead,BufNewFile *.py,*.pyw set expandtab
fu Select_c_style()
    if search('^\t', 'n', 150)
        set shiftwidth=8
        set noexpandtab
    el 
        set shiftwidth=4
        set expandtab
    en
endf

с

" indenting
set cindent
set autoindent
set shiftwidth=4
set softtabstop=4
set tabstop=4
set expandtab
set backspace=indent,eol,start

потому что неясно, вызывается ли функция Select_c_style() или достаточно кода в кавычках.

Да, мой второй экстракт .vimrc в значительной степени мешает вам использовать вкладки в любом месте без явного Ctrl-V Tab, но в буквальном смысле вкладка в большинстве ситуаций Unixy просто раздражитель в любом случае. (и Pythonistas, которые публикуют файлы .vimrc с аббревиатурами vim, должны быть вынуждены использовать блокнот, но это другая проблема;)

0

Краткий ответ: вы должны поместить этот файл в каталог ~/.vim/plugin, а не в каталог ~/.vim/ftplugin. Если вы сделаете это, не имеет значения, каково базовое имя файла, но суффикс должен быть «.vim».

Согласно заголовку вашего файла, он может быть получен в любое время и не повлияет ни на какие файлы, кроме файлов Python. Поэтому можно безопасно поместить файл в каталог ~/.vim/plugin, куда он будет поступать при каждом запуске Vim.

Есть три причины, по которым размещение py.vimrc в каталоге ~/.vim/ftplugin не работает. Во-первых, суффикс должен быть ".vim". Во-вторых, базовое имя файла должно совпадать с именем Vim для типа файла. Для Python тип файла "python". Поэтому имя подключаемого модуля типа файла для Python должно быть «python.vim». Третья причина заключается в том, что автокоманды в этом файле читаются при получении файла, что происходит при открытии исходного файла Python (если все остальное было правильным). Их команды готовы к выполнению при следующем открытии файла Python.

Наконец, не изменяйте настройку tabstop на 4. Даже если вы используете отступ 4, установите для параметра shiftwidth значение 4 и, возможно, для softtabstop значение 4, но оставьте значение tabstop равным 8. Причина в том, что в последний раз, когда я проверял, интерпретатор Python предполагает, что табуляция равна 8 Если вы осторожны и последовательны, вы можете избежать использования других значений табуляции, но я думаю, что это рискованно.

-1

Вы устанавливаете filetype plugin on? Возможно, вам придется сделать это, а не просто сделать filetype plugin indent on .

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