У меня проблемы с взаимодействием Python с комментариями. Их можно разделить на два вопроса. Я ожидаю, что они связаны, поэтому я опубликую их обоих здесь.
Выпуск 1.
При использовании gq для автоматического переноса кода Python дает неверный результат. Например, учитывая это:
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
# veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
# commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
Выбор этого и запуск gq дает:
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim #
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea #
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
Напротив, выполнение одного и того же в YAML или Coffee-script дает:
# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
# veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
# commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
Можно было бы ожидать, что правила комментариев в Python будут придерживаться тех же принципов, что и Coffee-script, YAML или другие, имеющие #
-компонентные комментарии.
Выпуск 2.
При запуске комментария курсор переходит к началу строки, когда он должен продолжаться на текущей глубине.
Например:
class Hello(object):
"""Something"""
# The comment starts here
# or worse
def hi(self):
# again, here
pass
Это противоречит тому, что изложено в PEP 8: блокировать комментарии - добавление комментария должно иметь следующий отступ:
class Hello(object):
"""Something"""
# The comment starts here
# or worse
def hi(self):
# again, here
pass
настройки
Я использую удивительный скрипт Vundle, и плагины, которые я использую:
Bundle 'gmarik/vundle'
" navigation / display
Bundle 'kien/ctrlp.vim'
Bundle "tpope/vim-fugitive"
Bundle "ton/vim-bufsurf"
python import sys; sys.path.append("")
set rtp +=~/.vim/bundle/powerline/powerline/bindings/vim
Bundle 'Lokaltog/powerline'
Bundle 'nathanaelkane/vim-indent-guides'
Bundle 'altercation/vim-colors-solarized'
" syntax
Bundle 'jQuery'
Bundle 'kchmck/vim-coffee-script'
" Bundle 'scrooloose/syntastic'
Bundle 'Syntastic'
Bundle "groenewege/vim-less"
Bundle "skammer/vim-css-color"
Bundle "hail2u/vim-css3-syntax"
" Editing
Bundle 'AndrewRadev/splitjoin.vim'
Bundle 'tpope/vim-unimpaired'
Bundle 'rstacruz/sparkup.git'
Bundle 'klen/python-mode'
" Bundle 'sjl/gundo.vim'
Bundle 'mbbill/undotree'
" file-type based configs
filetype plugin indent on
Из моего .vimrc
вот настройки, связанные с Python:
let g:syntastic_python_checker = 'pyflakes'
let g:syntastic_python_flake8_args =
\ '--ignore=W191,E501,E121,E122,E123,E128,E225,W291'
let pymode_lint = 0
au FileType python setlocal expandtab shiftwidth=4 tabstop=8
\ formatoptions+=croq softtabstop=4 smartindent
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
let python_highlight_all=1
let python_highlight_exceptions=0
let python_highlight_builtins=0
Резюме
Поскольку Python немного старше и более зрелый, чем YAML и Coffee-script, я удивлен и расстроен тем, что Vim дает неправильные результаты. Для меня неясно, что может происходить - и я был бы благодарен за любые мысли и указания. Конечно, если я это выясню, я опубликую свои выводы.