Python формата Vim с использованием formatexpr / prg (gq) дает неверный результат
У меня проблемы с взаимодействием 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 дает неправильные результаты. Для меня неясно, что может происходить - и я был бы благодарен за любые мысли и указания. Конечно, если я это выясню, я опубликую свои выводы.
0 ответов на вопрос
Похожие вопросы
-
13
Какие функции Vim вы используете?
-
8
Удалить расширенную "вкладку" в Vim одним нажатием клавиши?
-
1
Невозможно понять, где зачем требовать обнаружения ASCII и HEX в строке состояния Vim
-
-
3
Vim: Как обрабатывать файлы Unicode с текстом на нескольких (более двух) языках?
-
9
Аддоны Firefox, чтобы пойти с Vimperator
-
3
Чтобы повторить PWD в Vim's: -режим к документу
-
1
В любом случае vim не считает специальные символы словами?
-
8
Vimperator копия / вставка
-
3
Как я могу создать оглавление для документа уценки с помощью Python / AWK / SED?
-
1
Чтобы установить расширения Markdown с помощью Python