Автоиндентирование в Vim для Python - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь переключиться на VIM прямо сейчас и хотел бы, чтобы он автоматически сдвигался, как в IDE для Python. У меня есть следующий .vimr c file

syntax on

set number
autocmd FileType tex,latex,python set showmatch

nnoremap j gj
nnoremap k gk

"Python Settings
autocmd FileType python set softtabstop=4
autocmd FileType python set tabstop=4
autocmd FileType python set autoindent
autocmd FileType python set expandtab
autocmd FileType python set textwidth=80
autocmd FileType python set smartindent
autocmd FileType python set shiftwidth=4
autocmd FileType python map <buffer> <F2> :w<CR>:exec '! python' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F2> <esc>:w<CR>:exec '! python' shellescape(@%, 1)<CR>

Код автоматически отступает в некоторых случаях. Например, я пробовал, если операторы и операторы while, которые после нажатия Enter, имеют отступ. Таким образом, следующий отступ будет корректным.

if True:
    #this is where my next line automatically starts
while True:
    #this is where my next line automatically starts

Но для определений классов / функций отступа нет.

class Request_Form(QDialog):
#no indentation -- cursor comes here

Может ли кто-нибудь помочь мне исправить это поведение

1 Ответ

4 голосов
/ 26 апреля 2020

Похоже, вы получаете отступ от 'smartindent', который (среди прочих правил, в основном связанных с фигурными скобками) будет отступать после строк, которые включают слова в 'cinwords' list, который по умолчанию равен if,else,while,do,for,switch, так что кажется, что он точно объясняет то, что вы видите в данный момент.

Но 'smartindent' не совсем подходит для Python (как вы можете догадаться по его обработке фигурные скобки.) Вместо этого вы захотите использовать filetype indent on для загрузки правил отступа для каждого типа файла, которые должны загружать соответствующие отступы для Python при редактировании Python источников.

I ' Я рекомендую добавить это в ваш vimr c:

filetype plugin indent on

Это должно решить проблему для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...