所以这是我的问题。假设我有一个 Python 文件,我正在输入很长的一行,就像这里的最后一行:
class SomeClass(object):
def some_method(self):
some_variable = SomeOtherClass.some_other_method(some_parameter=some_value)
当我在 Vim 中键入时,会发生这种情况:
class SomeClass(object):
def some_method(self):
some_variable =
SomeOtherClass.some_other_method(some_parameter=some_value)
这不仅仅是糟糕的风格,它破坏了 PEP8。我想要发生的是:
class SomeClass(object):
def some_method(self):
some_variable = SomeOtherClass.some_other_method(
some_parameter=some_value)
这与PEP8 一致。(出于本次讨论的目的,我只对换行行为感兴趣,而不是缩进行为。)
编辑: breakat
仅与linebreak
控制线条的显示方式结合使用。它(显然)不能与textwidth
确定硬换行符的插入位置一起工作。所以我下面的想法行不通......
令人惊讶的是,我没有发现任何其他人分享这个问题,这让我认为我做错了什么。尽管如此,我的想法是将(
角色添加到breakat
设置中(以及[
当{
我在它时)。
我试过这个;这是输出:set breakat
:
breakat= ^I!@*-+;:,./?([{
然而,这无济于事。无论我做什么,Vim 都坚持在上面的“=”之后打破。我对长函数名也有同样的问题,它会在def
.
以下是我的 .vimrc 的完整内容:
set nobackup
set nowritebackup
set noswapfile
set columns=80
set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
set smarttab
set smartindent
set textwidth=80
set wrap
set breakat=\ ^I!@*-+;:,./?\(\[\{
filetype indent on
filetype on
filetype plugin on
(我没有安装插件等来试图解决这个问题。)
有谁知道如何让 Vim 遵守我的 breakat 设置,或者对处理这种行为的最佳方法有任何其他想法?