我在 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 产生错误结果感到惊讶和沮丧。我不清楚到底发生了什么 - 我将非常感激任何想法和指导。当然,如果我弄明白了,我会发布我的结论。